agentscope-ai / agentscope-ai/QwenPaw

[Bug]: deepseek-v4-pro 模型调用时自动注入 chat_template_kwargs 参数未被 extra_body 包装,导致 openai SDK TypeError

オープン
#7,026 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
Python
スター
34.9k
フォーク
3.1k
平均マージ
1日 15時間
マージ済み PR(30日)
225

説明

[Bug]: deepseek-v4-pro 模型调用时自动注入 chat_template_kwargs 参数未被 extra_body 包装,导致 openai SDK TypeError

英文版(如果官方要求英文):

[Bug]: chat_template_kwargs auto-injected without extra_body wrapping causes openai SDK TypeError on all model calls (qwenpaw 2.0.1 + agentscope 2.0.4.post1)

* * *

## 报告正文

## QwenPaw Version

2.0.1 (Windows 安装版,路径 `D:\QwenPaw_v2_test`)
- agentscope: 2.0.4.post1
- pydantic: 2.13.4
- openai SDK: 2.33.0
- backend: qwenpaw-backend.exe (PyInstaller 冻结包)

## Description

主模型配置为 `custom/deepseek-v4-pro`(非 reasoning 模型),调用时报错:

MODEL_EXECUTION_ERRORModel 'unknown' execution failed.Reason: AsyncCompletions.create() got an unexpected keyword argument 'chat_template_kwargs'


完整 traceback:

File "qwenpaw\agents\react_agent.py", line 680, in _reply File "agentscope\agent\_agent.py", line 2440, in _call_model File "agentscope\agent\_openai_chat\_model.py", line 272, in _call_api File "openai\_utils\__utils.py", line 287, in wrapperTypeError: AsyncCompletions.create() got an unexpected keyword argument 'chat_template_kwargs'


错误 dump 文件路径:`C:\Users\52765\AppData\Local\Temp\qwenpaw_query_error_yio2rd75.json`

## 诊断过程

### 1. 验证 openai SDK 版本

通过直接 import 确认 `openai.__version__ == 2.33.0`。检查 `AsyncCompletions.create` 的所有参数(共 40 个),**不包含** `chat_template_kwargs`。

### 2. monkey-patch 拦截确认注入值

通过 monkey-patch 拦截 `AsyncCompletions.create` 调用,捕获到自动注入的参数:

[PATCH] Intercepted chat_template_kwargs: {'enable_thinking': False}


拦截后请求成功构造(仅 401 鉴权失败,说明参数已被 SDK 接受,请求体构造正常)。

### 3. 检查用户配置文件

`D:\QwenPaw_v2_test\.qwenpaw\openclaw.json` 中**未配置**任何相关字段:

matches: 0 (chat_template_kwargs)matches: 0 (enable_thinking)matches: 0 (extra_body)


### 4. 结论

`chat_template_kwargs` 参数是 QwenPaw / agentscope 内部自动注入的,但**没有**包在 `extra_body` 内传给 openai SDK,导致 openai SDK 不识别该参数报错。

## 期望行为

按照官方 #2042 的修复方案,`chat_template_kwargs` 应自动包装在 `extra_body` 内传给 openai SDK:

```json
{
"extra_body": {
"chat_template_kwargs": {"enable_thinking": false}
}
}

## 临时解决方案(用户侧)

用户无法直接修复(backend 是 PyInstaller 冻结包,源码不可编辑),只能等待官方下版本修复。

## 建议修复位置

官方在以下位置之一修复即可:

* `qwenpaw/providers/openai_chat_model_compat.py` 的 `_call_api` 方法
* 或 `agentscope/agent/_openai_chat_model.py:272`

## 环境信息

* **OS**:Windows 11 (10.0.22631)
* **QwenPaw**:2.0.1 (Windows 安装版)
* **Python**:3.11
* **Model**:`custom/deepseek-v4-pro` @ `https://api.deepseek.com`
* **Provider 配置**:`reasoning: false`
* **安装方法**:安装包 + 配置内网/直连模型

## 复现步骤

1. 安装 qwenPaw 2.0.1
2. 配置 OpenAI-compatible provider(如 deepseek、GLM 等)
3. 模型配置中 `reasoning: false` 或完全省略 reasoning 字段
4. 发送任意消息(即使是 `hi`)
5. 100% 复现报错

## 关联 Issue

* #2042 (类似症状,已 close,但根因可能未根治——只解决了用户侧配置层,未根治内部自动注入逻辑)
* #6619 (ToolCallBlock extra_content 报错,同一升级版本,同一栈深度)

## 用户场景

希望从 QwenPaw 1.1.12 升级到 2.0.1,但此 bug 导致**所有模型不可用**。已回退到 1.1.12 继续使用。

コントリビューションガイド

コントリビューションガイドを開く

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。