[Bug] llm-deepseek: OpenAI 兼容端点的续传分片带空串 id/name,流式工具调用全部变成 unknown tool "" #3604
jinbowang1
started this conversation in
General
Replies: 2 comments
|
这个抓包把 rc.8 #3374 是同一行代码的另一面(字段是 if (call.id) block.callId = call.id
if (call.function?.name) block.name = call.function.name在上游合入前,这条会话不要继续重试同一轮(每轮都会再写一对空 name 的 |
0 replies
|
这个百炼故障现在可以直接绕开,不需要改 dsh plugin --profile web add pi2dsh
dsh plugin --profile web add pi-provider-alibaba-bailian
export ALIBABA_API_KEY='<your Bailian key>'
dsh web然后选择 我们已经完成两层验证:
请直接按上面步骤试;如果你的地域、模型或账号返回不同错误,把所选模型和错误贴出来,我们继续按真实场景修。 |
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.
环境:dsh 0.1.0-rc.8(141eb6f),headless profile,
llm-deepseek配了baseURL指向一个 OpenAI 兼容网关(上游是阿里云托管的 DeepSeek 模型)。现象:每个流式工具调用到达工具路由时 name 都是空串,报
ToolNotFoundError: unknown tool "";模型反复重试直到步数耗尽,整回合空输出。参数(arguments)拼装完全正常,只丢id/name,所以会话日志看着很有迷惑性。原因:官方 API 在续传 delta 里省略
id/function.name字段,但这类端点会把它们重述为空字符串。实际抓包:packages/llm/llm-deepseek/src/translate.ts里的判断是call.id !== undefined/call.function?.name !== undefined,于是第二片的空串把首片拼好的真 id/name 覆盖掉了。修法:空串永远不是合法的 call id 或工具名,当缺席字段处理即可:
两行修复 + 按抓包形态写的回归测试在这个分支:jinbowang1/deepseek-harness@fix/tool-call-empty-string-deltas(diff)。看到 CONTRIBUTING 说暂不收外部 PR,所以发在这里,如果你们想换种修法也没问题。
All reactions