Add Sonnet 1M context checkbox (#7032)

This commit is contained in:
Matt Rubens 2025-08-12 22:51:30 -04:00 committed by GitHub
parent 4c018663de
commit 13d1a5bc8f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 343 additions and 4 deletions

View file

@ -3,6 +3,9 @@ import { z } from "zod"
import { reasoningEffortsSchema, verbosityLevelsSchema, modelInfoSchema } from "./model.js"
import { codebaseIndexProviderSchema } from "./codebase-index.js"
// Bedrock Claude Sonnet 4 model ID that supports 1M context
export const BEDROCK_CLAUDE_SONNET_4_MODEL_ID = "anthropic.claude-sonnet-4-20250514-v1:0"
// Extended schema that includes "minimal" for GPT-5 models
export const extendedReasoningEffortsSchema = z.union([reasoningEffortsSchema, z.literal("minimal")])
@ -135,6 +138,7 @@ const bedrockSchema = apiModelIdProviderModelSchema.extend({
awsModelContextWindow: z.number().optional(),
awsBedrockEndpointEnabled: z.boolean().optional(),
awsBedrockEndpoint: z.string().optional(),
awsBedrock1MContext: z.boolean().optional(), // Enable 'context-1m-2025-08-07' beta for 1M context window
})
const vertexSchema = apiModelIdProviderModelSchema.extend({

View file

@ -25,6 +25,7 @@ vi.mock("@aws-sdk/client-bedrock-runtime", () => {
import { AwsBedrockHandler } from "../bedrock"
import { ConverseStreamCommand, BedrockRuntimeClient } from "@aws-sdk/client-bedrock-runtime"
import { BEDROCK_CLAUDE_SONNET_4_MODEL_ID } from "@roo-code/types"
import type { Anthropic } from "@anthropic-ai/sdk"
@ -564,4 +565,184 @@ describe("AwsBedrockHandler", () => {
expect(typeof model.info.supportsPromptCache).toBe("boolean")
})
})
describe("1M context beta feature", () => {
it("should enable 1M context window when awsBedrock1MContext is true for Claude Sonnet 4", () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: true,
})
const model = handler.getModel()
// Should have 1M context window when enabled
expect(model.info.contextWindow).toBe(1_000_000)
})
it("should use default context window when awsBedrock1MContext is false for Claude Sonnet 4", () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: false,
})
const model = handler.getModel()
// Should use default context window (200k)
expect(model.info.contextWindow).toBe(200_000)
})
it("should not affect context window for non-Claude Sonnet 4 models", () => {
const handler = new AwsBedrockHandler({
apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0",
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: true,
})
const model = handler.getModel()
// Should use default context window for non-Sonnet 4 models
expect(model.info.contextWindow).toBe(200_000)
})
it("should include anthropic_beta parameter when 1M context is enabled", async () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: true,
})
const messages: Anthropic.Messages.MessageParam[] = [
{
role: "user",
content: "Test message",
},
]
const generator = handler.createMessage("", messages)
await generator.next() // Start the generator
// Verify the command was created with the right payload
expect(mockConverseStreamCommand).toHaveBeenCalled()
const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any
// Should include anthropic_beta parameter but NOT anthropic_version (only for thinking)
expect(commandArg.anthropic_beta).toEqual(["context-1m-2025-08-07"])
expect(commandArg.anthropic_version).toBeUndefined()
})
it("should not include anthropic_beta parameter when 1M context is disabled", async () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: false,
})
const messages: Anthropic.Messages.MessageParam[] = [
{
role: "user",
content: "Test message",
},
]
const generator = handler.createMessage("", messages)
await generator.next() // Start the generator
// Verify the command was created with the right payload
expect(mockConverseStreamCommand).toHaveBeenCalled()
const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any
// Should not include anthropic_beta parameter
expect(commandArg.anthropic_beta).toBeUndefined()
})
it("should not include anthropic_beta parameter for non-Claude Sonnet 4 models", async () => {
const handler = new AwsBedrockHandler({
apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0",
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsBedrock1MContext: true,
})
const messages: Anthropic.Messages.MessageParam[] = [
{
role: "user",
content: "Test message",
},
]
const generator = handler.createMessage("", messages)
await generator.next() // Start the generator
// Verify the command was created with the right payload
expect(mockConverseStreamCommand).toHaveBeenCalled()
const commandArg = mockConverseStreamCommand.mock.calls[0][0] as any
// Should not include anthropic_beta parameter for non-Sonnet 4 models
expect(commandArg.anthropic_beta).toBeUndefined()
})
it("should enable 1M context window with cross-region inference for Claude Sonnet 4", () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsUseCrossRegionInference: true,
awsBedrock1MContext: true,
})
const model = handler.getModel()
// Should have 1M context window even with cross-region prefix
expect(model.info.contextWindow).toBe(1_000_000)
// Model ID should have cross-region prefix
expect(model.id).toBe(`us.${BEDROCK_CLAUDE_SONNET_4_MODEL_ID}`)
})
it("should include anthropic_beta parameter with cross-region inference for Claude Sonnet 4", async () => {
const handler = new AwsBedrockHandler({
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsAccessKey: "test",
awsSecretKey: "test",
awsRegion: "us-east-1",
awsUseCrossRegionInference: true,
awsBedrock1MContext: true,
})
const messages: Anthropic.Messages.MessageParam[] = [
{
role: "user",
content: "Test message",
},
]
const generator = handler.createMessage("", messages)
await generator.next() // Start the generator
// Verify the command was created with the right payload
expect(mockConverseStreamCommand).toHaveBeenCalled()
const commandArg = mockConverseStreamCommand.mock.calls[
mockConverseStreamCommand.mock.calls.length - 1
][0] as any
// Should include anthropic_beta parameter but NOT anthropic_version (only for thinking)
expect(commandArg.anthropic_beta).toEqual(["context-1m-2025-08-07"])
expect(commandArg.anthropic_version).toBeUndefined()
// Model ID should have cross-region prefix
expect(commandArg.modelId).toBe(`us.${BEDROCK_CLAUDE_SONNET_4_MODEL_ID}`)
})
})
})

View file

@ -21,6 +21,7 @@ import {
BEDROCK_MAX_TOKENS,
BEDROCK_DEFAULT_CONTEXT,
AWS_INFERENCE_PROFILE_MAPPING,
BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
} from "@roo-code/types"
import { ApiStream } from "../transform/stream"
@ -62,6 +63,7 @@ interface BedrockPayload {
system?: SystemContentBlock[]
inferenceConfig: BedrockInferenceConfig
anthropic_version?: string
anthropic_beta?: string[]
additionalModelRequestFields?: BedrockThinkingConfig
}
@ -375,6 +377,11 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH
inferenceConfig.topP = 0.1
}
// Check if 1M context is enabled for Claude Sonnet 4
// Use parseBaseModelId to handle cross-region inference prefixes
const baseModelId = this.parseBaseModelId(modelConfig.id)
const is1MContextEnabled = baseModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && this.options.awsBedrock1MContext
const payload: BedrockPayload = {
modelId: modelConfig.id,
messages: formatted.messages,
@ -383,6 +390,8 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH
...(additionalModelRequestFields && { additionalModelRequestFields }),
// Add anthropic_version when using thinking features
...(thinkingEnabled && { anthropic_version: "bedrock-2023-05-31" }),
// Add anthropic_beta when 1M context is enabled
...(is1MContextEnabled && { anthropic_beta: ["context-1m-2025-08-07"] }),
}
// Create AbortController with 10 minute timeout
@ -960,6 +969,17 @@ export class AwsBedrockHandler extends BaseProvider implements SingleCompletionH
}
}
// Check if 1M context is enabled for Claude Sonnet 4
// Use parseBaseModelId to handle cross-region inference prefixes
const baseModelId = this.parseBaseModelId(modelConfig.id)
if (baseModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && this.options.awsBedrock1MContext) {
// Update context window to 1M tokens when 1M context beta is enabled
modelConfig.info = {
...modelConfig.info,
contextWindow: 1_000_000,
}
}
// Get model params including reasoning configuration
const params = getModelParams({
format: "anthropic",

View file

@ -2,7 +2,12 @@ import { useCallback, useState, useEffect } from "react"
import { Checkbox } from "vscrui"
import { VSCodeTextField } from "@vscode/webview-ui-toolkit/react"
import { type ProviderSettings, type ModelInfo, BEDROCK_REGIONS } from "@roo-code/types"
import {
type ProviderSettings,
type ModelInfo,
BEDROCK_REGIONS,
BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
} from "@roo-code/types"
import { useAppTranslation } from "@src/i18n/TranslationContext"
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, StandardTooltip } from "@src/components/ui"
@ -19,6 +24,9 @@ export const Bedrock = ({ apiConfiguration, setApiConfigurationField, selectedMo
const { t } = useAppTranslation()
const [awsEndpointSelected, setAwsEndpointSelected] = useState(!!apiConfiguration?.awsBedrockEndpointEnabled)
// Check if the selected model supports 1M context (Claude Sonnet 4)
const supports1MContextBeta = apiConfiguration?.apiModelId === BEDROCK_CLAUDE_SONNET_4_MODEL_ID
// Update the endpoint enabled state when the configuration changes
useEffect(() => {
setAwsEndpointSelected(!!apiConfiguration?.awsBedrockEndpointEnabled)
@ -159,6 +167,20 @@ export const Bedrock = ({ apiConfiguration, setApiConfigurationField, selectedMo
</div>
</>
)}
{supports1MContextBeta && (
<div>
<Checkbox
checked={apiConfiguration?.awsBedrock1MContext ?? false}
onChange={(checked: boolean) => {
setApiConfigurationField("awsBedrock1MContext", checked)
}}>
{t("settings:providers.awsBedrock1MContextBetaLabel")}
</Checkbox>
<div className="text-sm text-vscode-descriptionForeground mt-1 ml-6">
{t("settings:providers.awsBedrock1MContextBetaDescription")}
</div>
</div>
)}
<Checkbox
checked={awsEndpointSelected}
onChange={(isChecked) => {

View file

@ -5,7 +5,7 @@ import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
import { renderHook } from "@testing-library/react"
import type { Mock } from "vitest"
import { ProviderSettings, ModelInfo } from "@roo-code/types"
import { ProviderSettings, ModelInfo, BEDROCK_CLAUDE_SONNET_4_MODEL_ID } from "@roo-code/types"
import { useSelectedModel } from "../useSelectedModel"
import { useRouterModels } from "../useRouterModels"
@ -448,4 +448,69 @@ describe("useSelectedModel", () => {
expect(result.current.info?.supportsImages).toBe(false)
})
})
describe("bedrock provider with 1M context", () => {
beforeEach(() => {
mockUseRouterModels.mockReturnValue({
data: {
openrouter: {},
requesty: {},
glama: {},
unbound: {},
litellm: {},
"io-intelligence": {},
},
isLoading: false,
isError: false,
} as any)
mockUseOpenRouterModelProviders.mockReturnValue({
data: {},
isLoading: false,
isError: false,
} as any)
})
it("should enable 1M context window for Bedrock Claude Sonnet 4 when awsBedrock1MContext is true", () => {
const apiConfiguration: ProviderSettings = {
apiProvider: "bedrock",
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsBedrock1MContext: true,
}
const wrapper = createWrapper()
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper })
expect(result.current.id).toBe(BEDROCK_CLAUDE_SONNET_4_MODEL_ID)
expect(result.current.info?.contextWindow).toBe(1_000_000)
})
it("should use default context window for Bedrock Claude Sonnet 4 when awsBedrock1MContext is false", () => {
const apiConfiguration: ProviderSettings = {
apiProvider: "bedrock",
apiModelId: BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
awsBedrock1MContext: false,
}
const wrapper = createWrapper()
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper })
expect(result.current.id).toBe(BEDROCK_CLAUDE_SONNET_4_MODEL_ID)
expect(result.current.info?.contextWindow).toBe(200_000)
})
it("should not affect context window for non-Claude Sonnet 4 Bedrock models", () => {
const apiConfiguration: ProviderSettings = {
apiProvider: "bedrock",
apiModelId: "anthropic.claude-3-5-sonnet-20241022-v2:0",
awsBedrock1MContext: true,
}
const wrapper = createWrapper()
const { result } = renderHook(() => useSelectedModel(apiConfiguration), { wrapper })
expect(result.current.id).toBe("anthropic.claude-3-5-sonnet-20241022-v2:0")
expect(result.current.info?.contextWindow).toBe(200_000)
})
})
})

View file

@ -48,6 +48,7 @@ import {
fireworksDefaultModelId,
ioIntelligenceDefaultModelId,
ioIntelligenceModels,
BEDROCK_CLAUDE_SONNET_4_MODEL_ID,
} from "@roo-code/types"
import type { ModelRecord, RouterModels } from "@roo/api"
@ -174,7 +175,7 @@ function getSelectedModel({
}
case "bedrock": {
const id = apiConfiguration.apiModelId ?? bedrockDefaultModelId
const info = bedrockModels[id as keyof typeof bedrockModels]
const baseInfo = bedrockModels[id as keyof typeof bedrockModels]
// Special case for custom ARN.
if (id === "custom-arn") {
@ -184,7 +185,17 @@ function getSelectedModel({
}
}
return { id, info }
// Apply 1M context for Claude Sonnet 4 when enabled
if (id === BEDROCK_CLAUDE_SONNET_4_MODEL_ID && apiConfiguration.awsBedrock1MContext && baseInfo) {
// Create a new ModelInfo object with updated context window
const info: ModelInfo = {
...baseInfo,
contextWindow: 1_000_000,
}
return { id, info }
}
return { id, info: baseInfo }
}
case "vertex": {
const id = apiConfiguration.apiModelId ?? vertexDefaultModelId

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Passar la clau API d'Anthropic com a capçalera d'autorització en lloc de X-Api-Key",
"anthropic1MContextBetaLabel": "Activa la finestra de context d'1M (Beta)",
"anthropic1MContextBetaDescription": "Amplia la finestra de context a 1 milió de tokens per a Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Activa la finestra de context d'1M (Beta)",
"awsBedrock1MContextBetaDescription": "Amplia la finestra de context a 1 milió de tokens per a Claude Sonnet 4",
"cerebrasApiKey": "Clau API de Cerebras",
"getCerebrasApiKey": "Obtenir clau API de Cerebras",
"chutesApiKey": "Clau API de Chutes",

View file

@ -263,6 +263,8 @@
"anthropicUseAuthToken": "Anthropic API-Schlüssel als Authorization-Header anstelle von X-Api-Key übergeben",
"anthropic1MContextBetaLabel": "1M Kontextfenster aktivieren (Beta)",
"anthropic1MContextBetaDescription": "Erweitert das Kontextfenster für Claude Sonnet 4 auf 1 Million Token",
"awsBedrock1MContextBetaLabel": "1M Kontextfenster aktivieren (Beta)",
"awsBedrock1MContextBetaDescription": "Erweitert das Kontextfenster für Claude Sonnet 4 auf 1 Million Token",
"cerebrasApiKey": "Cerebras API-Schlüssel",
"getCerebrasApiKey": "Cerebras API-Schlüssel erhalten",
"chutesApiKey": "Chutes API-Schlüssel",

View file

@ -260,6 +260,8 @@
"anthropicUseAuthToken": "Pass Anthropic API Key as Authorization header instead of X-Api-Key",
"anthropic1MContextBetaLabel": "Enable 1M context window (Beta)",
"anthropic1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Enable 1M context window (Beta)",
"awsBedrock1MContextBetaDescription": "Extends context window to 1 million tokens for Claude Sonnet 4",
"cerebrasApiKey": "Cerebras API Key",
"getCerebrasApiKey": "Get Cerebras API Key",
"chutesApiKey": "Chutes API Key",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Pasar la clave API de Anthropic como encabezado de autorización en lugar de X-Api-Key",
"anthropic1MContextBetaLabel": "Habilitar ventana de contexto de 1M (Beta)",
"anthropic1MContextBetaDescription": "Amplía la ventana de contexto a 1 millón de tokens para Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Habilitar ventana de contexto de 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Amplía la ventana de contexto a 1 millón de tokens para Claude Sonnet 4",
"cerebrasApiKey": "Clave API de Cerebras",
"getCerebrasApiKey": "Obtener clave API de Cerebras",
"chutesApiKey": "Clave API de Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Passer la clé API Anthropic comme en-tête d'autorisation au lieu de X-Api-Key",
"anthropic1MContextBetaLabel": "Activer la fenêtre de contexte de 1M (Bêta)",
"anthropic1MContextBetaDescription": "Étend la fenêtre de contexte à 1 million de tokens pour Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Activer la fenêtre de contexte de 1M (Bêta)",
"awsBedrock1MContextBetaDescription": "Étend la fenêtre de contexte à 1 million de tokens pour Claude Sonnet 4",
"cerebrasApiKey": "Clé API Cerebras",
"getCerebrasApiKey": "Obtenir la clé API Cerebras",
"chutesApiKey": "Clé API Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "X-Api-Key के बजाय Anthropic API कुंजी को Authorization हेडर के रूप में पास करें",
"anthropic1MContextBetaLabel": "1M संदर्भ विंडो सक्षम करें (बीटा)",
"anthropic1MContextBetaDescription": "Claude Sonnet 4 के लिए संदर्भ विंडो को 1 मिलियन टोकन तक बढ़ाता है",
"awsBedrock1MContextBetaLabel": "1M संदर्भ विंडो सक्षम करें (बीटा)",
"awsBedrock1MContextBetaDescription": "Claude Sonnet 4 के लिए संदर्भ विंडो को 1 मिलियन टोकन तक बढ़ाता है",
"cerebrasApiKey": "Cerebras API कुंजी",
"getCerebrasApiKey": "Cerebras API कुंजी प्राप्त करें",
"chutesApiKey": "Chutes API कुंजी",

View file

@ -265,6 +265,8 @@
"anthropicUseAuthToken": "Kirim Anthropic API Key sebagai Authorization header alih-alih X-Api-Key",
"anthropic1MContextBetaLabel": "Aktifkan jendela konteks 1M (Beta)",
"anthropic1MContextBetaDescription": "Memperluas jendela konteks menjadi 1 juta token untuk Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Aktifkan jendela konteks 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Memperluas jendela konteks menjadi 1 juta token untuk Claude Sonnet 4",
"cerebrasApiKey": "Cerebras API Key",
"getCerebrasApiKey": "Dapatkan Cerebras API Key",
"chutesApiKey": "Chutes API Key",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Passa la chiave API Anthropic come header di autorizzazione invece di X-Api-Key",
"anthropic1MContextBetaLabel": "Abilita finestra di contesto da 1M (Beta)",
"anthropic1MContextBetaDescription": "Estende la finestra di contesto a 1 milione di token per Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Abilita finestra di contesto da 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Estende la finestra di contesto a 1 milione di token per Claude Sonnet 4",
"cerebrasApiKey": "Chiave API Cerebras",
"getCerebrasApiKey": "Ottieni chiave API Cerebras",
"chutesApiKey": "Chiave API Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Anthropic APIキーをX-Api-Keyの代わりにAuthorizationヘッダーとして渡す",
"anthropic1MContextBetaLabel": "1Mコンテキストウィンドウを有効にするベータ版",
"anthropic1MContextBetaDescription": "Claude Sonnet 4のコンテキストウィンドウを100万トークンに拡張します",
"awsBedrock1MContextBetaLabel": "1Mコンテキストウィンドウを有効にするベータ版",
"awsBedrock1MContextBetaDescription": "Claude Sonnet 4のコンテキストウィンドウを100万トークンに拡張します",
"cerebrasApiKey": "Cerebras APIキー",
"getCerebrasApiKey": "Cerebras APIキーを取得",
"chutesApiKey": "Chutes APIキー",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "X-Api-Key 대신 Authorization 헤더로 Anthropic API 키 전달",
"anthropic1MContextBetaLabel": "1M 컨텍스트 창 활성화 (베타)",
"anthropic1MContextBetaDescription": "Claude Sonnet 4의 컨텍스트 창을 100만 토큰으로 확장",
"awsBedrock1MContextBetaLabel": "1M 컨텍스트 창 활성화 (베타)",
"awsBedrock1MContextBetaDescription": "Claude Sonnet 4의 컨텍스트 창을 100만 토큰으로 확장",
"cerebrasApiKey": "Cerebras API 키",
"getCerebrasApiKey": "Cerebras API 키 가져오기",
"chutesApiKey": "Chutes API 키",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Anthropic API-sleutel als Authorization-header doorgeven in plaats van X-Api-Key",
"anthropic1MContextBetaLabel": "1M contextvenster inschakelen (bèta)",
"anthropic1MContextBetaDescription": "Breidt het contextvenster uit tot 1 miljoen tokens voor Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "1M contextvenster inschakelen (bèta)",
"awsBedrock1MContextBetaDescription": "Breidt het contextvenster uit tot 1 miljoen tokens voor Claude Sonnet 4",
"cerebrasApiKey": "Cerebras API-sleutel",
"getCerebrasApiKey": "Cerebras API-sleutel verkrijgen",
"chutesApiKey": "Chutes API-sleutel",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Przekaż klucz API Anthropic jako nagłówek Authorization zamiast X-Api-Key",
"anthropic1MContextBetaLabel": "Włącz okno kontekstowe 1M (Beta)",
"anthropic1MContextBetaDescription": "Rozszerza okno kontekstowe do 1 miliona tokenów dla Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Włącz okno kontekstowe 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Rozszerza okno kontekstowe do 1 miliona tokenów dla Claude Sonnet 4",
"cerebrasApiKey": "Klucz API Cerebras",
"getCerebrasApiKey": "Pobierz klucz API Cerebras",
"chutesApiKey": "Klucz API Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Passar a chave de API Anthropic como cabeçalho Authorization em vez de X-Api-Key",
"anthropic1MContextBetaLabel": "Ativar janela de contexto de 1M (Beta)",
"anthropic1MContextBetaDescription": "Estende a janela de contexto para 1 milhão de tokens para o Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Ativar janela de contexto de 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Estende a janela de contexto para 1 milhão de tokens para o Claude Sonnet 4",
"cerebrasApiKey": "Chave de API Cerebras",
"getCerebrasApiKey": "Obter chave de API Cerebras",
"chutesApiKey": "Chave de API Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Передавать Anthropic API-ключ как Authorization-заголовок вместо X-Api-Key",
"anthropic1MContextBetaLabel": "Включить контекстное окно 1M (бета)",
"anthropic1MContextBetaDescription": "Расширяет контекстное окно до 1 миллиона токенов для Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Включить контекстное окно 1M (бета)",
"awsBedrock1MContextBetaDescription": "Расширяет контекстное окно до 1 миллиона токенов для Claude Sonnet 4",
"cerebrasApiKey": "Cerebras API-ключ",
"getCerebrasApiKey": "Получить Cerebras API-ключ",
"chutesApiKey": "Chutes API-ключ",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Anthropic API Anahtarını X-Api-Key yerine Authorization başlığı olarak geçir",
"anthropic1MContextBetaLabel": "1M bağlam penceresini etkinleştir (Beta)",
"anthropic1MContextBetaDescription": "Claude Sonnet 4 için bağlam penceresini 1 milyon token'a genişletir",
"awsBedrock1MContextBetaLabel": "1M bağlam penceresini etkinleştir (Beta)",
"awsBedrock1MContextBetaDescription": "Claude Sonnet 4 için bağlam penceresini 1 milyon token'a genişletir",
"cerebrasApiKey": "Cerebras API Anahtarı",
"getCerebrasApiKey": "Cerebras API Anahtarını Al",
"chutesApiKey": "Chutes API Anahtarı",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "Truyền khóa API Anthropic dưới dạng tiêu đề Authorization thay vì X-Api-Key",
"anthropic1MContextBetaLabel": "Bật cửa sổ ngữ cảnh 1M (Beta)",
"anthropic1MContextBetaDescription": "Mở rộng cửa sổ ngữ cảnh lên 1 triệu token cho Claude Sonnet 4",
"awsBedrock1MContextBetaLabel": "Bật cửa sổ ngữ cảnh 1M (Beta)",
"awsBedrock1MContextBetaDescription": "Mở rộng cửa sổ ngữ cảnh lên 1 triệu token cho Claude Sonnet 4",
"cerebrasApiKey": "Khóa API Cerebras",
"getCerebrasApiKey": "Lấy khóa API Cerebras",
"chutesApiKey": "Khóa API Chutes",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "将 Anthropic API 密钥作为 Authorization 标头传递,而不是 X-Api-Key",
"anthropic1MContextBetaLabel": "启用 1M 上下文窗口 (Beta)",
"anthropic1MContextBetaDescription": "为 Claude Sonnet 4 将上下文窗口扩展至 100 万个 token",
"awsBedrock1MContextBetaLabel": "启用 1M 上下文窗口 (Beta)",
"awsBedrock1MContextBetaDescription": "为 Claude Sonnet 4 将上下文窗口扩展至 100 万个 token",
"cerebrasApiKey": "Cerebras API 密钥",
"getCerebrasApiKey": "获取 Cerebras API 密钥",
"chutesApiKey": "Chutes API 密钥",

View file

@ -261,6 +261,8 @@
"anthropicUseAuthToken": "將 Anthropic API 金鑰作為 Authorization 標頭傳遞,而非使用 X-Api-Key",
"anthropic1MContextBetaLabel": "啟用 1M 上下文視窗 (Beta)",
"anthropic1MContextBetaDescription": "為 Claude Sonnet 4 將上下文視窗擴展至 100 萬個 token",
"awsBedrock1MContextBetaLabel": "啟用 1M 上下文視窗 (Beta)",
"awsBedrock1MContextBetaDescription": "為 Claude Sonnet 4 將上下文視窗擴展至 100 萬個 token",
"cerebrasApiKey": "Cerebras API 金鑰",
"getCerebrasApiKey": "取得 Cerebras API 金鑰",
"chutesApiKey": "Chutes API 金鑰",