OpenAI 兼容网关续传分片携带空 name 时,llm-deepseek 工具调用名被清空 #3767
liangzhiyang
started this conversation in
General
Replies: 3 comments
|
我用百炼的API也遇到这个问题了,response 兼容 API |
0 replies
|
百炼 / new-api 这类 OpenAI 兼容网关经常在续传分片里带 适配器改成真值判断(
已经报过 |
0 replies
|
这个百炼场景现在有一条不改 Harness 源码的已验证绕路:让百炼模型走 Pi 的 OpenAI-compatible Provider,经 pi2dsh 进入 DSH 原生模型目录。 dsh plugin --profile web add pi2dsh
dsh plugin --profile web add pi-provider-alibaba-bailian
export ALIBABA_API_KEY='<your DashScope key>'
dsh web然后在模型选择器中选择 这条路由由 刚补了两层 E2E:
边界说明:这提供的是一条已经跑通的替代 Provider 路由,并没有修复 |
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
经由 OpenAI 兼容中转网关流式工具调用时,续传分片携带的空
name清空了已累积的工具名,报unknown tool ""。复现、预期与验收
复现步骤:
将 DeepSeek 卡片(
llm-deepseek直连适配器)的 baseURL 指向一个 OpenAI 兼容中转网关(new-api 风格,上游为 DeepSeek)。发送任意会触发工具调用的消息。
网关返回的流式
tool_calls分片如下——第二片携带name: ""(空字符串)而非按 OpenAI 惯例省略该字段:实际结果:
packages/llm/llm-deepseek/src/translate.ts:160的if (call.function?.name !== undefined) block.name = call.function.name用第二片的空串覆盖了首片已到的工具名;harness 报Error: unknown tool "",随后带空工具名的会话回放被上游以INVALID_REQUEST拒绝,该轮对话无法继续。预期结果:续传分片中的空
name不清空已累积的工具名——改为真值判断,或仅在尚未设置时赋值(pi-ai 的openai-completions实现即为if (!block.name && name) block.name = name,对同一网关免疫)。环境:deepseek-harness master@141eb6f;网关为 OpenAI 兼容中转(转发 DashScope/Qwen 风格分片,此类续片带空
name的行为在中转网关中较常见)。验收条件:对上述分片序列,累积后的工具名为
get_current_date,工具正常执行;对官方 API(续片省略name)行为不变。All reactions