feat: Update Claude Sonnet 4 context window to 1 million tokens (#7005)

Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
This commit is contained in:
Daniel 2025-08-12 13:40:42 -05:00 committed by GitHub
parent bbe3362359
commit 8e7a2e7bdb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
24 changed files with 150 additions and 6 deletions

View file

@ -99,6 +99,7 @@ const anthropicSchema = apiModelIdProviderModelSchema.extend({
apiKey: z.string().optional(),
anthropicBaseUrl: z.string().optional(),
anthropicUseAuthToken: z.boolean().optional(),
anthropicBeta1MContext: z.boolean().optional(), // Enable 'context-1m-2025-08-07' beta for 1M context window
})
const claudeCodeSchema = apiModelIdProviderModelSchema.extend({

View file

@ -8,15 +8,25 @@ export const anthropicDefaultModelId: AnthropicModelId = "claude-sonnet-4-202505
export const anthropicModels = {
"claude-sonnet-4-20250514": {
maxTokens: 64_000, // Overridden to 8k if `enableReasoningEffort` is false.
contextWindow: 200_000,
contextWindow: 200_000, // Default 200K, extendable to 1M with beta flag 'context-1m-2025-08-07'
supportsImages: true,
supportsComputerUse: true,
supportsPromptCache: true,
inputPrice: 3.0, // $3 per million input tokens
outputPrice: 15.0, // $15 per million output tokens
inputPrice: 3.0, // $3 per million input tokens (≤200K context)
outputPrice: 15.0, // $15 per million output tokens (≤200K context)
cacheWritesPrice: 3.75, // $3.75 per million tokens
cacheReadsPrice: 0.3, // $0.30 per million tokens
supportsReasoningBudget: true,
// Tiered pricing for extended context (requires beta flag 'context-1m-2025-08-07')
tiers: [
{
contextWindow: 1_000_000, // 1M tokens with beta flag
inputPrice: 6.0, // $6 per million input tokens (>200K context)
outputPrice: 22.5, // $22.50 per million output tokens (>200K context)
cacheWritesPrice: 7.5, // $7.50 per million tokens (>200K context)
cacheReadsPrice: 0.6, // $0.60 per million tokens (>200K context)
},
],
},
"claude-opus-4-1-20250805": {
maxTokens: 8192,

View file

@ -45,6 +45,11 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
const cacheControl: CacheControlEphemeral = { type: "ephemeral" }
let { id: modelId, betas = [], maxTokens, temperature, reasoning: thinking } = this.getModel()
// Add 1M context beta flag if enabled for Claude Sonnet 4
if (modelId === "claude-sonnet-4-20250514" && this.options.anthropicBeta1MContext) {
betas.push("context-1m-2025-08-07")
}
switch (modelId) {
case "claude-sonnet-4-20250514":
case "claude-opus-4-1-20250805":
@ -236,7 +241,23 @@ export class AnthropicHandler extends BaseProvider implements SingleCompletionHa
getModel() {
const modelId = this.options.apiModelId
let id = modelId && modelId in anthropicModels ? (modelId as AnthropicModelId) : anthropicDefaultModelId
const info: ModelInfo = anthropicModels[id]
let info: ModelInfo = anthropicModels[id]
// If 1M context beta is enabled for Claude Sonnet 4, update the model info
if (id === "claude-sonnet-4-20250514" && this.options.anthropicBeta1MContext) {
// Use the tier pricing for 1M context
const tier = info.tiers?.[0]
if (tier) {
info = {
...info,
contextWindow: tier.contextWindow,
inputPrice: tier.inputPrice,
outputPrice: tier.outputPrice,
cacheWritesPrice: tier.cacheWritesPrice,
cacheReadsPrice: tier.cacheReadsPrice,
}
}
}
const params = getModelParams({
format: "anthropic",

View file

@ -41,6 +41,12 @@ export const ModelInfoView = ({
supportsLabel={t("settings:modelInfo.supportsPromptCache")}
doesNotSupportLabel={t("settings:modelInfo.noPromptCache")}
/>,
typeof modelInfo?.contextWindow === "number" && modelInfo.contextWindow > 0 && (
<>
<span className="font-medium">{t("settings:modelInfo.contextWindow")}</span>{" "}
{modelInfo.contextWindow?.toLocaleString()} tokens
</>
),
typeof modelInfo?.maxTokens === "number" && modelInfo.maxTokens > 0 && (
<>
<span className="font-medium">{t("settings:modelInfo.maxOutput")}:</span>{" "}

View file

@ -6,6 +6,7 @@ import type { ProviderSettings } from "@roo-code/types"
import { useAppTranslation } from "@src/i18n/TranslationContext"
import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink"
import { useSelectedModel } from "@src/components/ui/hooks/useSelectedModel"
import { inputEventTransform, noTransform } from "../transforms"
@ -16,9 +17,13 @@ type AnthropicProps = {
export const Anthropic = ({ apiConfiguration, setApiConfigurationField }: AnthropicProps) => {
const { t } = useAppTranslation()
const selectedModel = useSelectedModel(apiConfiguration)
const [anthropicBaseUrlSelected, setAnthropicBaseUrlSelected] = useState(!!apiConfiguration?.anthropicBaseUrl)
// Check if the current model supports 1M context beta
const supports1MContextBeta = selectedModel?.id === "claude-sonnet-4-20250514"
const handleInputChange = useCallback(
<K extends keyof ProviderSettings, E>(
field: K,
@ -79,6 +84,20 @@ export const Anthropic = ({ apiConfiguration, setApiConfigurationField }: Anthro
</>
)}
</div>
{supports1MContextBeta && (
<div>
<Checkbox
checked={apiConfiguration?.anthropicBeta1MContext ?? false}
onChange={(checked: boolean) => {
setApiConfigurationField("anthropicBeta1MContext", checked)
}}>
{t("settings:providers.anthropic1MContextBetaLabel")}
</Checkbox>
<div className="text-sm text-vscode-descriptionForeground mt-1 ml-6">
{t("settings:providers.anthropic1MContextBetaDescription")}
</div>
</div>
)}
</>
)
}

View file

@ -291,8 +291,41 @@ function getSelectedModel({
default: {
provider satisfies "anthropic" | "gemini-cli" | "human-relay" | "fake-ai"
const id = apiConfiguration.apiModelId ?? anthropicDefaultModelId
const info = anthropicModels[id as keyof typeof anthropicModels]
return { id, info }
const baseInfo = anthropicModels[id as keyof typeof anthropicModels]
// Apply 1M context beta tier pricing for Claude Sonnet 4
if (
provider === "anthropic" &&
id === "claude-sonnet-4-20250514" &&
apiConfiguration.anthropicBeta1MContext &&
baseInfo
) {
// Type assertion since we know claude-sonnet-4-20250514 has tiers
const modelWithTiers = baseInfo as typeof baseInfo & {
tiers?: Array<{
contextWindow: number
inputPrice?: number
outputPrice?: number
cacheWritesPrice?: number
cacheReadsPrice?: number
}>
}
const tier = modelWithTiers.tiers?.[0]
if (tier) {
// Create a new ModelInfo object with updated values
const info: ModelInfo = {
...baseInfo,
contextWindow: tier.contextWindow,
inputPrice: tier.inputPrice ?? baseInfo.inputPrice,
outputPrice: tier.outputPrice ?? baseInfo.outputPrice,
cacheWritesPrice: tier.cacheWritesPrice ?? baseInfo.cacheWritesPrice,
cacheReadsPrice: tier.cacheReadsPrice ?? baseInfo.cacheReadsPrice,
}
return { id, info }
}
}
return { id, info: baseInfo }
}
}
}

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Clau API d'Anthropic",
"getAnthropicApiKey": "Obtenir clau API d'Anthropic",
"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",
"cerebrasApiKey": "Clau API de Cerebras",
"getCerebrasApiKey": "Obtenir clau API de Cerebras",
"chutesApiKey": "Clau API de Chutes",
@ -727,6 +729,7 @@
"noComputerUse": "No suporta ús de l'ordinador",
"supportsPromptCache": "Suporta emmagatzematge en caché de prompts",
"noPromptCache": "No suporta emmagatzematge en caché de prompts",
"contextWindow": "Finestra de context:",
"maxOutput": "Sortida màxima",
"inputPrice": "Preu d'entrada",
"outputPrice": "Preu de sortida",

View file

@ -261,6 +261,8 @@
"anthropicApiKey": "Anthropic API-Schlüssel",
"getAnthropicApiKey": "Anthropic API-Schlüssel erhalten",
"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",
"cerebrasApiKey": "Cerebras API-Schlüssel",
"getCerebrasApiKey": "Cerebras API-Schlüssel erhalten",
"chutesApiKey": "Chutes API-Schlüssel",
@ -727,6 +729,7 @@
"noComputerUse": "Unterstützt keine Computernutzung",
"supportsPromptCache": "Unterstützt Prompt-Cache",
"noPromptCache": "Unterstützt keinen Prompt-Cache",
"contextWindow": "Kontextfenster:",
"maxOutput": "Maximale Ausgabe",
"inputPrice": "Eingabepreis",
"outputPrice": "Ausgabepreis",

View file

@ -258,6 +258,8 @@
"anthropicApiKey": "Anthropic API Key",
"getAnthropicApiKey": "Get Anthropic API Key",
"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",
"cerebrasApiKey": "Cerebras API Key",
"getCerebrasApiKey": "Get Cerebras API Key",
"chutesApiKey": "Chutes API Key",
@ -726,6 +728,7 @@
"noComputerUse": "Does not support computer use",
"supportsPromptCache": "Supports prompt caching",
"noPromptCache": "Does not support prompt caching",
"contextWindow": "Context Window:",
"maxOutput": "Max output",
"inputPrice": "Input price",
"outputPrice": "Output price",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Clave API de Anthropic",
"getAnthropicApiKey": "Obtener clave API de Anthropic",
"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",
"cerebrasApiKey": "Clave API de Cerebras",
"getCerebrasApiKey": "Obtener clave API de Cerebras",
"chutesApiKey": "Clave API de Chutes",
@ -727,6 +729,7 @@
"noComputerUse": "No soporta uso del ordenador",
"supportsPromptCache": "Soporta caché de prompts",
"noPromptCache": "No soporta caché de prompts",
"contextWindow": "Ventana de contexto",
"maxOutput": "Salida máxima",
"inputPrice": "Precio de entrada",
"outputPrice": "Precio de salida",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Clé API Anthropic",
"getAnthropicApiKey": "Obtenir la clé API Anthropic",
"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",
"cerebrasApiKey": "Clé API Cerebras",
"getCerebrasApiKey": "Obtenir la clé API Cerebras",
"chutesApiKey": "Clé API Chutes",
@ -727,6 +729,7 @@
"noComputerUse": "Ne prend pas en charge l'utilisation de l'ordinateur",
"supportsPromptCache": "Prend en charge la mise en cache des prompts",
"noPromptCache": "Ne prend pas en charge la mise en cache des prompts",
"contextWindow": "Fenêtre de contexte :",
"maxOutput": "Sortie maximale",
"inputPrice": "Prix d'entrée",
"outputPrice": "Prix de sortie",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API कुंजी",
"getAnthropicApiKey": "Anthropic API कुंजी प्राप्त करें",
"anthropicUseAuthToken": "X-Api-Key के बजाय Anthropic API कुंजी को Authorization हेडर के रूप में पास करें",
"anthropic1MContextBetaLabel": "1M संदर्भ विंडो सक्षम करें (बीटा)",
"anthropic1MContextBetaDescription": "Claude Sonnet 4 के लिए संदर्भ विंडो को 1 मिलियन टोकन तक बढ़ाता है",
"cerebrasApiKey": "Cerebras API कुंजी",
"getCerebrasApiKey": "Cerebras API कुंजी प्राप्त करें",
"chutesApiKey": "Chutes API कुंजी",
@ -728,6 +730,7 @@
"noComputerUse": "कंप्यूटर उपयोग का समर्थन नहीं करता है",
"supportsPromptCache": "प्रॉम्प्ट कैशिंग का समर्थन करता है",
"noPromptCache": "प्रॉम्प्ट कैशिंग का समर्थन नहीं करता है",
"contextWindow": "संदर्भ विंडो:",
"maxOutput": "अधिकतम आउटपुट",
"inputPrice": "इनपुट मूल्य",
"outputPrice": "आउटपुट मूल्य",

View file

@ -263,6 +263,8 @@
"anthropicApiKey": "Anthropic API Key",
"getAnthropicApiKey": "Dapatkan Anthropic API Key",
"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",
"cerebrasApiKey": "Cerebras API Key",
"getCerebrasApiKey": "Dapatkan Cerebras API Key",
"chutesApiKey": "Chutes API Key",
@ -757,6 +759,7 @@
"noComputerUse": "Tidak mendukung computer use",
"supportsPromptCache": "Mendukung prompt caching",
"noPromptCache": "Tidak mendukung prompt caching",
"contextWindow": "Jendela Konteks:",
"maxOutput": "Output maksimum",
"inputPrice": "Harga input",
"outputPrice": "Harga output",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Chiave API Anthropic",
"getAnthropicApiKey": "Ottieni chiave API Anthropic",
"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",
"cerebrasApiKey": "Chiave API Cerebras",
"getCerebrasApiKey": "Ottieni chiave API Cerebras",
"chutesApiKey": "Chiave API Chutes",
@ -728,6 +730,7 @@
"noComputerUse": "Non supporta uso del computer",
"supportsPromptCache": "Supporta cache dei prompt",
"noPromptCache": "Non supporta cache dei prompt",
"contextWindow": "Finestra di contesto:",
"maxOutput": "Output massimo",
"inputPrice": "Prezzo input",
"outputPrice": "Prezzo output",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic APIキー",
"getAnthropicApiKey": "Anthropic APIキーを取得",
"anthropicUseAuthToken": "Anthropic APIキーをX-Api-Keyの代わりにAuthorizationヘッダーとして渡す",
"anthropic1MContextBetaLabel": "1Mコンテキストウィンドウを有効にするベータ版",
"anthropic1MContextBetaDescription": "Claude Sonnet 4のコンテキストウィンドウを100万トークンに拡張します",
"cerebrasApiKey": "Cerebras APIキー",
"getCerebrasApiKey": "Cerebras APIキーを取得",
"chutesApiKey": "Chutes APIキー",
@ -728,6 +730,7 @@
"noComputerUse": "コンピュータ使用をサポートしていません",
"supportsPromptCache": "プロンプトキャッシュをサポート",
"noPromptCache": "プロンプトキャッシュをサポートしていません",
"contextWindow": "コンテキストウィンドウ:",
"maxOutput": "最大出力",
"inputPrice": "入力価格",
"outputPrice": "出力価格",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API 키",
"getAnthropicApiKey": "Anthropic API 키 받기",
"anthropicUseAuthToken": "X-Api-Key 대신 Authorization 헤더로 Anthropic API 키 전달",
"anthropic1MContextBetaLabel": "1M 컨텍스트 창 활성화 (베타)",
"anthropic1MContextBetaDescription": "Claude Sonnet 4의 컨텍스트 창을 100만 토큰으로 확장",
"cerebrasApiKey": "Cerebras API 키",
"getCerebrasApiKey": "Cerebras API 키 가져오기",
"chutesApiKey": "Chutes API 키",
@ -728,6 +730,7 @@
"noComputerUse": "컴퓨터 사용 지원 안 함",
"supportsPromptCache": "프롬프트 캐시 지원",
"noPromptCache": "프롬프트 캐시 지원 안 함",
"contextWindow": "컨텍스트 창:",
"maxOutput": "최대 출력",
"inputPrice": "입력 가격",
"outputPrice": "출력 가격",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API-sleutel",
"getAnthropicApiKey": "Anthropic API-sleutel ophalen",
"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",
"cerebrasApiKey": "Cerebras API-sleutel",
"getCerebrasApiKey": "Cerebras API-sleutel verkrijgen",
"chutesApiKey": "Chutes API-sleutel",
@ -728,6 +730,7 @@
"noComputerUse": "Ondersteunt geen computergebruik",
"supportsPromptCache": "Ondersteunt prompt caching",
"noPromptCache": "Ondersteunt geen prompt caching",
"contextWindow": "Contextvenster:",
"maxOutput": "Maximale output",
"inputPrice": "Invoerprijs",
"outputPrice": "Uitvoerprijs",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Klucz API Anthropic",
"getAnthropicApiKey": "Uzyskaj klucz API Anthropic",
"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",
"cerebrasApiKey": "Klucz API Cerebras",
"getCerebrasApiKey": "Pobierz klucz API Cerebras",
"chutesApiKey": "Klucz API Chutes",
@ -728,6 +730,7 @@
"noComputerUse": "Nie obsługuje użycia komputera",
"supportsPromptCache": "Obsługuje buforowanie podpowiedzi",
"noPromptCache": "Nie obsługuje buforowania podpowiedzi",
"contextWindow": "Okno kontekstowe:",
"maxOutput": "Maksymalne wyjście",
"inputPrice": "Cena wejścia",
"outputPrice": "Cena wyjścia",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Chave de API Anthropic",
"getAnthropicApiKey": "Obter chave de API Anthropic",
"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",
"cerebrasApiKey": "Chave de API Cerebras",
"getCerebrasApiKey": "Obter chave de API Cerebras",
"chutesApiKey": "Chave de API Chutes",
@ -728,6 +730,7 @@
"noComputerUse": "Não suporta uso do computador",
"supportsPromptCache": "Suporta cache de prompts",
"noPromptCache": "Não suporta cache de prompts",
"contextWindow": "Janela de Contexto:",
"maxOutput": "Saída máxima",
"inputPrice": "Preço de entrada",
"outputPrice": "Preço de saída",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API-ключ",
"getAnthropicApiKey": "Получить Anthropic API-ключ",
"anthropicUseAuthToken": "Передавать Anthropic API-ключ как Authorization-заголовок вместо X-Api-Key",
"anthropic1MContextBetaLabel": "Включить контекстное окно 1M (бета)",
"anthropic1MContextBetaDescription": "Расширяет контекстное окно до 1 миллиона токенов для Claude Sonnet 4",
"cerebrasApiKey": "Cerebras API-ключ",
"getCerebrasApiKey": "Получить Cerebras API-ключ",
"chutesApiKey": "Chutes API-ключ",
@ -728,6 +730,7 @@
"noComputerUse": "Не поддерживает использование компьютера",
"supportsPromptCache": "Поддерживает кэширование подсказок",
"noPromptCache": "Не поддерживает кэширование подсказок",
"contextWindow": "Контекстное окно:",
"maxOutput": "Максимум вывода",
"inputPrice": "Цена за вход",
"outputPrice": "Цена за вывод",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API Anahtarı",
"getAnthropicApiKey": "Anthropic API Anahtarı Al",
"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",
"cerebrasApiKey": "Cerebras API Anahtarı",
"getCerebrasApiKey": "Cerebras API Anahtarını Al",
"chutesApiKey": "Chutes API Anahtarı",
@ -728,6 +730,7 @@
"noComputerUse": "Bilgisayar kullanımını desteklemez",
"supportsPromptCache": "İstem önbelleğini destekler",
"noPromptCache": "İstem önbelleğini desteklemez",
"contextWindow": "Bağlam Penceresi:",
"maxOutput": "Maksimum çıktı",
"inputPrice": "Giriş fiyatı",
"outputPrice": ıkış fiyatı",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Khóa API Anthropic",
"getAnthropicApiKey": "Lấy khóa API Anthropic",
"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",
"cerebrasApiKey": "Khóa API Cerebras",
"getCerebrasApiKey": "Lấy khóa API Cerebras",
"chutesApiKey": "Khóa API Chutes",
@ -728,6 +730,7 @@
"noComputerUse": "Không hỗ trợ sử dụng máy tính",
"supportsPromptCache": "Hỗ trợ bộ nhớ đệm lời nhắc",
"noPromptCache": "Không hỗ trợ bộ nhớ đệm lời nhắc",
"contextWindow": "Cửa sổ ngữ cảnh:",
"maxOutput": "Đầu ra tối đa",
"inputPrice": "Giá đầu vào",
"outputPrice": "Giá đầu ra",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API 密钥",
"getAnthropicApiKey": "获取 Anthropic API 密钥",
"anthropicUseAuthToken": "将 Anthropic API 密钥作为 Authorization 标头传递,而不是 X-Api-Key",
"anthropic1MContextBetaLabel": "启用 1M 上下文窗口 (Beta)",
"anthropic1MContextBetaDescription": "为 Claude Sonnet 4 将上下文窗口扩展至 100 万个 token",
"cerebrasApiKey": "Cerebras API 密钥",
"getCerebrasApiKey": "获取 Cerebras API 密钥",
"chutesApiKey": "Chutes API 密钥",
@ -728,6 +730,7 @@
"noComputerUse": "不支持计算机功能调用",
"supportsPromptCache": "支持提示缓存",
"noPromptCache": "不支持提示缓存",
"contextWindow": "上下文窗口:",
"maxOutput": "最大输出",
"inputPrice": "输入价格",
"outputPrice": "输出价格",

View file

@ -259,6 +259,8 @@
"anthropicApiKey": "Anthropic API 金鑰",
"getAnthropicApiKey": "取得 Anthropic API 金鑰",
"anthropicUseAuthToken": "將 Anthropic API 金鑰作為 Authorization 標頭傳遞,而非使用 X-Api-Key",
"anthropic1MContextBetaLabel": "啟用 1M 上下文視窗 (Beta)",
"anthropic1MContextBetaDescription": "為 Claude Sonnet 4 將上下文視窗擴展至 100 萬個 token",
"cerebrasApiKey": "Cerebras API 金鑰",
"getCerebrasApiKey": "取得 Cerebras API 金鑰",
"chutesApiKey": "Chutes API 金鑰",
@ -728,6 +730,7 @@
"noComputerUse": "不支援電腦使用",
"supportsPromptCache": "支援提示快取",
"noPromptCache": "不支援提示快取",
"contextWindow": "上下文視窗:",
"maxOutput": "最大輸出",
"inputPrice": "輸入價格",
"outputPrice": "輸出價格",