Replies: 1 comment
|
这里两个缺口可以一起绕过,但不是继续手写同一段 settings。做法是让网关对应的 Pi provider package 经 pi2dsh 注册原生 route: dsh plugin --profile web add pi2dsh
dsh plugin --profile web add <Pi provider 包>自带 transport 的 provider 会把自己的 我们在真实 DSH 选择器和透传请求体上都验过:档位出现、选择值下传、首条 role 为 |
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.
环境
@deepseek-ai/dsh0.1.0-rc.6@deepseek-ai/dsh-llm-pi-ai0.1.0-rc.6@earendil-works/pi-ai0.82.1两个问题
1. 自定义服务商在 UI 上没有任何思考强度(reasoning effort)控件
“自定义服务提供商”卡片和编辑器刻意不提供推理档位字段,只能手工编辑
settings.yaml,给每个模型写reasoningEfforts和compat.thinkingFormat: deepseek。对于把公司 DeepSeek 网关配成自定义服务商的用户,表现就是“无法选择思考强度”。2. 即使按上述方式写好了配置,请求也会报 400
配置示例:
根因:pi-ai 在
model.reasoning && compat.supportsDeveloperRole为真时,把 system prompt 序列化成developer角色(OpenAI o1/gpt-5 风格)。对非标准 baseURL,pi-ai 的自动检测会把supportsDeveloperRole默认成true(只有*.deepseek.com的 URL 才会走 DeepSeek 专用检测),而 DeepSeek 的 OpenAI 兼容接口只接受system,不接受developer。但 settings.yaml 里写
compat.supportsDeveloperRole: false不会生效,因为dsh-llm-pi-ai在三个位置把它丢弃了:packages/llm/llm-pi-ai/src/catalog.ts的PiAiCompatProfile只声明了thinkingFormat/supportsReasoningEffort;packages/llm/llm-pi-ai/src/config.ts的compatProfileschema 只校验这两个字段;resolveModelCompat只把这两个字段透传给模型。复现与验证
按上面的配置(包含
supportsDeveloperRole: false)抓包,发往上游的请求体仍然是"role":"developer"→ 400。本地给 schema 加上字段、并让resolveModelCompat透传后,同样请求变成"role":"system"→ 200,响应正常带reasoning_content。建议修复
PiAiCompatProfile、compatProfileschema 和resolveModelCompat透传中增加supportsDeveloperRole?: boolean。compat.thinkingFormat: "deepseek"时,把supportsDeveloperRole默认设为false(DeepSeek 协议永远不接受developer角色)。reasoningEfforts/compat配置,避免必须手改settings.yaml。All reactions