From 6fe8e3973cdcb623a39df0760a68cb49705789a0 Mon Sep 17 00:00:00 2001 From: Frank Date: Mon, 27 Oct 2025 21:36:10 -0400 Subject: [PATCH] zen: support 1M claude context --- packages/console/app/src/routes/zen/util/handler.ts | 2 +- .../console/app/src/routes/zen/util/provider/anthropic.ts | 5 ++++- .../app/src/routes/zen/util/provider/openai-compatible.ts | 2 +- packages/console/app/src/routes/zen/util/provider/openai.ts | 2 +- .../console/app/src/routes/zen/util/provider/provider.ts | 2 +- 5 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/console/app/src/routes/zen/util/handler.ts b/packages/console/app/src/routes/zen/util/handler.ts index 7fbb518a..85ba5eea 100644 --- a/packages/console/app/src/routes/zen/util/handler.ts +++ b/packages/console/app/src/routes/zen/util/handler.ts @@ -67,7 +67,7 @@ export async function handler( const headers = input.request.headers headers.delete("host") headers.delete("content-length") - providerInfo.modifyHeaders(headers, providerInfo.apiKey) + providerInfo.modifyHeaders(headers, body, providerInfo.apiKey) Object.entries(providerInfo.headerMappings ?? {}).forEach(([k, v]) => { headers.set(k, headers.get(v)!) }) diff --git a/packages/console/app/src/routes/zen/util/provider/anthropic.ts b/packages/console/app/src/routes/zen/util/provider/anthropic.ts index 64b040a5..807f427a 100644 --- a/packages/console/app/src/routes/zen/util/provider/anthropic.ts +++ b/packages/console/app/src/routes/zen/util/provider/anthropic.ts @@ -17,9 +17,12 @@ type Usage = { export const anthropicHelper = { format: "anthropic", modifyUrl: (providerApi: string) => providerApi + "/messages", - modifyHeaders: (headers: Headers, apiKey: string) => { + modifyHeaders: (headers: Headers, body: Record, apiKey: string) => { headers.set("x-api-key", apiKey) headers.set("anthropic-version", headers.get("anthropic-version") ?? "2023-06-01") + if (body.model.startsWith("claude-sonnet-")) { + headers.set("anthropic-beta", "context-1m-2025-08-07") + } }, modifyBody: (body: Record) => { return { diff --git a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts index aae6bed5..cad6bd68 100644 --- a/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts +++ b/packages/console/app/src/routes/zen/util/provider/openai-compatible.ts @@ -24,7 +24,7 @@ type Usage = { export const oaCompatHelper = { format: "oa-compat", modifyUrl: (providerApi: string) => providerApi + "/chat/completions", - modifyHeaders: (headers: Headers, apiKey: string) => { + modifyHeaders: (headers: Headers, body: Record, apiKey: string) => { headers.set("authorization", `Bearer ${apiKey}`) }, modifyBody: (body: Record) => { diff --git a/packages/console/app/src/routes/zen/util/provider/openai.ts b/packages/console/app/src/routes/zen/util/provider/openai.ts index 9781d821..21c15f35 100644 --- a/packages/console/app/src/routes/zen/util/provider/openai.ts +++ b/packages/console/app/src/routes/zen/util/provider/openai.ts @@ -15,7 +15,7 @@ type Usage = { export const openaiHelper = { format: "openai", modifyUrl: (providerApi: string) => providerApi + "/responses", - modifyHeaders: (headers: Headers, apiKey: string) => { + modifyHeaders: (headers: Headers, body: Record, apiKey: string) => { headers.set("authorization", `Bearer ${apiKey}`) }, modifyBody: (body: Record) => { diff --git a/packages/console/app/src/routes/zen/util/provider/provider.ts b/packages/console/app/src/routes/zen/util/provider/provider.ts index 5beb460e..c8ba644b 100644 --- a/packages/console/app/src/routes/zen/util/provider/provider.ts +++ b/packages/console/app/src/routes/zen/util/provider/provider.ts @@ -28,7 +28,7 @@ import { export type ProviderHelper = { format: Format modifyUrl: (providerApi: string) => string - modifyHeaders: (headers: Headers, apiKey: string) => void + modifyHeaders: (headers: Headers, body: Record, apiKey: string) => void modifyBody: (body: Record) => Record createUsageParser: () => { parse: (chunk: string) => void