

















@@ -206,6 +206,55 @@ describe("anthropic transport stream", () => {
206206);
207207});
208208209+it("strips the provider prefix from direct Anthropic request model ids", async () => {
210+await runTransportStream(
211+makeAnthropicTransportModel({ id: "anthropic/claude-sonnet-4-6" }),
212+{
213+messages: [{ role: "user", content: "hello" }],
214+} as AnthropicStreamContext,
215+{
216+apiKey: "sk-ant-api",
217+} as AnthropicStreamOptions,
218+);
219+220+expect(latestAnthropicRequest().payload.model).toBe("claude-sonnet-4-6");
221+});
222+223+it("keeps slash-bearing model ids for Anthropic-compatible proxy providers", async () => {
224+await runTransportStream(
225+makeAnthropicTransportModel({
226+provider: "openrouter",
227+id: "anthropic/claude-sonnet-4-6",
228+baseUrl: "https://openrouter.ai/api/anthropic",
229+}),
230+{
231+messages: [{ role: "user", content: "hello" }],
232+} as AnthropicStreamContext,
233+{
234+apiKey: "sk-or-test",
235+} as AnthropicStreamOptions,
236+);
237+238+expect(latestAnthropicRequest().payload.model).toBe("anthropic/claude-sonnet-4-6");
239+});
240+241+it("keeps slash-bearing model ids for configured Anthropic-compatible endpoints", async () => {
242+await runTransportStream(
243+makeAnthropicTransportModel({
244+id: "anthropic/claude-sonnet-4-6",
245+baseUrl: "https://anthropic-proxy.internal",
246+}),
247+{
248+messages: [{ role: "user", content: "hello" }],
249+} as AnthropicStreamContext,
250+{
251+apiKey: "sk-ant-api",
252+} as AnthropicStreamOptions,
253+);
254+255+expect(latestAnthropicRequest().payload.model).toBe("anthropic/claude-sonnet-4-6");
256+});
257+209258it("bypasses the OpenAI SSE sanitizer for Kimi Anthropic thinking streams", async () => {
210259const model = makeAnthropicTransportModel({
211260id: "kimi-for-coding",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。