From 4cdd126a471e38fda8a5ae3a6bea17f4d7c6627a Mon Sep 17 00:00:00 2001 From: Roo Code Date: Tue, 27 Jan 2026 18:47:28 +0000 Subject: [PATCH 1/2] feat: add openAiStrictToolMode setting for OpenAI-compatible providers This adds a new setting `openAiStrictToolMode` that allows users to disable OpenAI strict mode for tool definitions. When strict mode is disabled: - No `strict: true` is added to tool definitions - No schema modifications (additionalProperties: false, all required) are made This is useful for providers like kie.ai that use the Gemini 3 Pro model and do not support OpenAI's strict mode for function calling. The setting defaults to true for backward compatibility. Closes #11011 --- packages/types/src/provider-settings.ts | 3 +++ src/api/providers/base-provider.ts | 12 ++++++++++- src/api/providers/openai.ts | 20 +++++++++++++++---- .../settings/providers/OpenAICompatible.tsx | 10 ++++++++++ webview-ui/src/i18n/locales/en/settings.json | 4 ++++ 5 files changed, 44 insertions(+), 5 deletions(-) diff --git a/packages/types/src/provider-settings.ts b/packages/types/src/provider-settings.ts index 0c5965f7ff6..5e9fdcc1a2c 100644 --- a/packages/types/src/provider-settings.ts +++ b/packages/types/src/provider-settings.ts @@ -243,6 +243,9 @@ const openAiSchema = baseProviderSettingsSchema.extend({ openAiStreamingEnabled: z.boolean().optional(), openAiHostHeader: z.string().optional(), // Keep temporarily for backward compatibility during migration. openAiHeaders: z.record(z.string(), z.string()).optional(), + // When enabled, adds strict: true to tool definitions and modifies schemas for OpenAI strict mode. + // Disable this for providers like kie.ai that don't support OpenAI's strict mode. + openAiStrictToolMode: z.boolean().optional(), }) const ollamaSchema = baseProviderSettingsSchema.extend({ diff --git a/src/api/providers/base-provider.ts b/src/api/providers/base-provider.ts index a6adeeadbd4..116179d2121 100644 --- a/src/api/providers/base-provider.ts +++ b/src/api/providers/base-provider.ts @@ -23,8 +23,12 @@ export abstract class BaseProvider implements ApiHandler { * Converts an array of tools to be compatible with OpenAI's strict mode. * Filters for function tools, applies schema conversion to their parameters, * and ensures all tools have consistent strict: true values. + * + * @param tools - Array of tools to convert + * @param useStrictMode - When true (default), adds strict: true and modifies schemas for OpenAI strict mode. + * When false, skips strict mode modifications for providers that don't support it (e.g. kie.ai). */ - protected convertToolsForOpenAI(tools: any[] | undefined): any[] | undefined { + protected convertToolsForOpenAI(tools: any[] | undefined, useStrictMode: boolean = true): any[] | undefined { if (!tools) { return undefined } @@ -38,6 +42,12 @@ export abstract class BaseProvider implements ApiHandler { // to preserve optional parameters from the MCP server schema const isMcp = isMcpTool(tool.function.name) + // When strict mode is disabled (for providers like kie.ai), don't add strict: true + // and don't modify the schema + if (!useStrictMode) { + return tool + } + return { ...tool, function: { diff --git a/src/api/providers/openai.ts b/src/api/providers/openai.ts index 74cbb511138..510bdb955ca 100644 --- a/src/api/providers/openai.ts +++ b/src/api/providers/openai.ts @@ -152,6 +152,10 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl const isGrokXAI = this._isGrokXAI(this.options.openAiBaseUrl) + // Strict tool mode is enabled by default for backward compatibility + // Disable for providers like kie.ai that don't support OpenAI's strict mode + const useStrictToolMode = this.options.openAiStrictToolMode !== false + const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsStreaming = { model: modelId, temperature: this.options.modelTemperature ?? (deepseekReasoner ? DEEP_SEEK_DEFAULT_TEMPERATURE : 0), @@ -159,7 +163,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl stream: true as const, ...(isGrokXAI ? {} : { stream_options: { include_usage: true } }), ...(reasoning && reasoning), - tools: this.convertToolsForOpenAI(metadata?.tools), + tools: this.convertToolsForOpenAI(metadata?.tools, useStrictToolMode), tool_choice: metadata?.tool_choice, parallel_tool_calls: metadata?.parallelToolCalls ?? false, } @@ -221,13 +225,17 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl yield this.processUsageMetrics(lastUsage, modelInfo) } } else { + // Strict tool mode is enabled by default for backward compatibility + // Disable for providers like kie.ai that don't support OpenAI's strict mode + const useStrictToolMode = this.options.openAiStrictToolMode !== false + const requestOptions: OpenAI.Chat.Completions.ChatCompletionCreateParamsNonStreaming = { model: modelId, messages: deepseekReasoner ? convertToR1Format([{ role: "user", content: systemPrompt }, ...messages]) : [systemMessage, ...convertToOpenAiMessages(messages)], // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) - tools: this.convertToolsForOpenAI(metadata?.tools), + tools: this.convertToolsForOpenAI(metadata?.tools, useStrictToolMode), tool_choice: metadata?.tool_choice, parallel_tool_calls: metadata?.parallelToolCalls ?? false, } @@ -329,6 +337,10 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl const modelInfo = this.getModel().info const methodIsAzureAiInference = this._isAzureAiInference(this.options.openAiBaseUrl) + // Strict tool mode is enabled by default for backward compatibility + // Disable for providers like kie.ai that don't support OpenAI's strict mode + const useStrictToolMode = this.options.openAiStrictToolMode !== false + if (this.options.openAiStreamingEnabled ?? true) { const isGrokXAI = this._isGrokXAI(this.options.openAiBaseUrl) @@ -346,7 +358,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl reasoning_effort: modelInfo.reasoningEffort as "low" | "medium" | "high" | undefined, temperature: undefined, // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) - tools: this.convertToolsForOpenAI(metadata?.tools), + tools: this.convertToolsForOpenAI(metadata?.tools, useStrictToolMode), tool_choice: metadata?.tool_choice, parallel_tool_calls: metadata?.parallelToolCalls ?? false, } @@ -380,7 +392,7 @@ export class OpenAiHandler extends BaseProvider implements SingleCompletionHandl reasoning_effort: modelInfo.reasoningEffort as "low" | "medium" | "high" | undefined, temperature: undefined, // Tools are always present (minimum ALWAYS_AVAILABLE_TOOLS) - tools: this.convertToolsForOpenAI(metadata?.tools), + tools: this.convertToolsForOpenAI(metadata?.tools, useStrictToolMode), tool_choice: metadata?.tool_choice, parallel_tool_calls: metadata?.parallelToolCalls ?? false, } diff --git a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx index 4eea6f09f1b..c8b5da5e02e 100644 --- a/webview-ui/src/components/settings/providers/OpenAICompatible.tsx +++ b/webview-ui/src/components/settings/providers/OpenAICompatible.tsx @@ -158,6 +158,16 @@ export const OpenAICompatible = ({ onChange={handleInputChange("openAiStreamingEnabled", noTransform)}> {t("settings:modelInfo.enableStreaming")} +
+ + {t("settings:providers.openAi.strictToolMode")} + +
+ {t("settings:providers.openAi.strictToolModeDescription")} +
+
Date: Wed, 28 Jan 2026 15:17:47 +0000 Subject: [PATCH 2/2] feat(i18n): add openAi.strictToolMode translations for all locales --- webview-ui/src/i18n/locales/ca/settings.json | 4 ++++ webview-ui/src/i18n/locales/de/settings.json | 4 ++++ webview-ui/src/i18n/locales/es/settings.json | 4 ++++ webview-ui/src/i18n/locales/fr/settings.json | 4 ++++ webview-ui/src/i18n/locales/hi/settings.json | 4 ++++ webview-ui/src/i18n/locales/id/settings.json | 4 ++++ webview-ui/src/i18n/locales/it/settings.json | 4 ++++ webview-ui/src/i18n/locales/ja/settings.json | 4 ++++ webview-ui/src/i18n/locales/ko/settings.json | 4 ++++ webview-ui/src/i18n/locales/nl/settings.json | 4 ++++ webview-ui/src/i18n/locales/pl/settings.json | 4 ++++ webview-ui/src/i18n/locales/pt-BR/settings.json | 4 ++++ webview-ui/src/i18n/locales/ru/settings.json | 4 ++++ webview-ui/src/i18n/locales/tr/settings.json | 4 ++++ webview-ui/src/i18n/locales/vi/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-CN/settings.json | 4 ++++ webview-ui/src/i18n/locales/zh-TW/settings.json | 4 ++++ 17 files changed, 68 insertions(+) diff --git a/webview-ui/src/i18n/locales/ca/settings.json b/webview-ui/src/i18n/locales/ca/settings.json index 1509137a902..98c0a936d29 100644 --- a/webview-ui/src/i18n/locales/ca/settings.json +++ b/webview-ui/src/i18n/locales/ca/settings.json @@ -484,6 +484,10 @@ "learnMore": "Més informació sobre l'encaminament de proveïdors" } }, + "openAi": { + "strictToolMode": "Activa el mode estricte d'eines", + "strictToolModeDescription": "Afegeix el mode estricte específic d'OpenAI a les definicions d'eines. Desactiveu-ho per a proveïdors com kie.ai que no admeten el mode estricte." + }, "customModel": { "capabilities": "Configureu les capacitats i preus per al vostre model personalitzat compatible amb OpenAI. Tingueu cura en especificar les capacitats del model, ja que poden afectar com funciona Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/de/settings.json b/webview-ui/src/i18n/locales/de/settings.json index bc275a64e50..801c72fa1ab 100644 --- a/webview-ui/src/i18n/locales/de/settings.json +++ b/webview-ui/src/i18n/locales/de/settings.json @@ -484,6 +484,10 @@ "learnMore": "Mehr über Anbieter-Routing erfahren" } }, + "openAi": { + "strictToolMode": "Strikten Tool-Modus aktivieren", + "strictToolModeDescription": "Fügt den OpenAI-spezifischen strikten Modus zu Tool-Definitionen hinzu. Deaktivieren Sie dies für Anbieter wie kie.ai, die den strikten Modus nicht unterstützen." + }, "customModel": { "capabilities": "Konfiguriere die Fähigkeiten und Preise für dein benutzerdefiniertes OpenAI-kompatibles Modell. Sei vorsichtig bei der Angabe der Modellfähigkeiten, da diese beeinflussen können, wie Roo Code funktioniert.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/es/settings.json b/webview-ui/src/i18n/locales/es/settings.json index 36243b99be0..eaa64248873 100644 --- a/webview-ui/src/i18n/locales/es/settings.json +++ b/webview-ui/src/i18n/locales/es/settings.json @@ -484,6 +484,10 @@ "learnMore": "Más información sobre el enrutamiento de proveedores" } }, + "openAi": { + "strictToolMode": "Habilitar modo estricto de herramientas", + "strictToolModeDescription": "Añade el modo estricto específico de OpenAI a las definiciones de herramientas. Desactívelo para proveedores como kie.ai que no admiten el modo estricto." + }, "customModel": { "capabilities": "Configure las capacidades y precios para su modelo personalizado compatible con OpenAI. Tenga cuidado al especificar las capacidades del modelo, ya que pueden afectar cómo funciona Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/fr/settings.json b/webview-ui/src/i18n/locales/fr/settings.json index 1c28b763077..4021ca943b3 100644 --- a/webview-ui/src/i18n/locales/fr/settings.json +++ b/webview-ui/src/i18n/locales/fr/settings.json @@ -484,6 +484,10 @@ "learnMore": "En savoir plus sur le routage des fournisseurs" } }, + "openAi": { + "strictToolMode": "Activer le mode outils strict", + "strictToolModeDescription": "Ajoute le mode strict spécifique à OpenAI aux définitions d'outils. Désactivez ceci pour les fournisseurs comme kie.ai qui ne prennent pas en charge le mode strict." + }, "customModel": { "capabilities": "Configurez les capacités et les prix pour votre modèle personnalisé compatible OpenAI. Soyez prudent lors de la spécification des capacités du modèle, car elles peuvent affecter le fonctionnement de Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/hi/settings.json b/webview-ui/src/i18n/locales/hi/settings.json index 4974ff706b4..a7e84e8920b 100644 --- a/webview-ui/src/i18n/locales/hi/settings.json +++ b/webview-ui/src/i18n/locales/hi/settings.json @@ -484,6 +484,10 @@ "learnMore": "प्रदाता रूटिंग के बारे में अधिक जानें" } }, + "openAi": { + "strictToolMode": "सख्त टूल मोड सक्षम करें", + "strictToolModeDescription": "टूल परिभाषाओं में OpenAI-विशिष्ट सख्त मोड जोड़ता है। kie.ai जैसे प्रदाताओं के लिए इसे अक्षम करें जो सख्त मोड का समर्थन नहीं करते।" + }, "customModel": { "capabilities": "अपने कस्टम OpenAI-संगत मॉडल के लिए क्षमताओं और मूल्य निर्धारण को कॉन्फ़िगर करें। मॉडल क्षमताओं को निर्दिष्ट करते समय सावधान रहें, क्योंकि वे Roo Code के प्रदर्शन को प्रभावित कर सकती हैं।", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/id/settings.json b/webview-ui/src/i18n/locales/id/settings.json index 908c975a5b8..07299764878 100644 --- a/webview-ui/src/i18n/locales/id/settings.json +++ b/webview-ui/src/i18n/locales/id/settings.json @@ -488,6 +488,10 @@ "learnMore": "Pelajari lebih lanjut tentang provider routing" } }, + "openAi": { + "strictToolMode": "Aktifkan mode tool ketat", + "strictToolModeDescription": "Menambahkan mode ketat khusus OpenAI ke definisi tool. Nonaktifkan ini untuk provider seperti kie.ai yang tidak mendukung mode ketat." + }, "customModel": { "capabilities": "Konfigurasi kemampuan dan harga untuk model kustom yang kompatibel dengan OpenAI. Hati-hati saat menentukan kemampuan model, karena dapat mempengaruhi performa Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/it/settings.json b/webview-ui/src/i18n/locales/it/settings.json index 1c3c7e494d7..f4c5bbfbc44 100644 --- a/webview-ui/src/i18n/locales/it/settings.json +++ b/webview-ui/src/i18n/locales/it/settings.json @@ -484,6 +484,10 @@ "learnMore": "Scopri di più sul routing dei fornitori" } }, + "openAi": { + "strictToolMode": "Abilita modalità strumenti rigorosa", + "strictToolModeDescription": "Aggiunge la modalità rigorosa specifica di OpenAI alle definizioni degli strumenti. Disabilitare per provider come kie.ai che non supportano la modalità rigorosa." + }, "customModel": { "capabilities": "Configura le capacità e i prezzi del tuo modello personalizzato compatibile con OpenAI. Fai attenzione quando specifichi le capacità del modello, poiché possono influenzare le prestazioni di Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ja/settings.json b/webview-ui/src/i18n/locales/ja/settings.json index b4af9d4033e..0f7f6d6523d 100644 --- a/webview-ui/src/i18n/locales/ja/settings.json +++ b/webview-ui/src/i18n/locales/ja/settings.json @@ -484,6 +484,10 @@ "learnMore": "プロバイダールーティングについて詳しく知る" } }, + "openAi": { + "strictToolMode": "厳密なツールモードを有効にする", + "strictToolModeDescription": "ツール定義にOpenAI固有の厳密モードを追加します。厳密モードをサポートしないkie.aiなどのプロバイダーの場合は無効にしてください。" + }, "customModel": { "capabilities": "カスタムOpenAI互換モデルの機能と価格を設定します。モデルの機能はRoo Codeのパフォーマンスに影響を与える可能性があるため、慎重に指定してください。", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ko/settings.json b/webview-ui/src/i18n/locales/ko/settings.json index 2888d75bb0b..e5c3ea45bd0 100644 --- a/webview-ui/src/i18n/locales/ko/settings.json +++ b/webview-ui/src/i18n/locales/ko/settings.json @@ -484,6 +484,10 @@ "learnMore": "제공자 라우팅에 대해 자세히 알아보기" } }, + "openAi": { + "strictToolMode": "엄격한 도구 모드 활성화", + "strictToolModeDescription": "도구 정의에 OpenAI 고유의 엄격 모드를 추가합니다. 엄격 모드를 지원하지 않는 kie.ai와 같은 제공업체의 경우 비활성화하세요." + }, "customModel": { "capabilities": "사용자 정의 OpenAI 호환 모델의 기능과 가격을 구성하세요. 모델 기능이 Roo Code의 성능에 영향을 미칠 수 있으므로 신중하게 지정하세요.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/nl/settings.json b/webview-ui/src/i18n/locales/nl/settings.json index 83e1f4b7ab3..d92695c7c46 100644 --- a/webview-ui/src/i18n/locales/nl/settings.json +++ b/webview-ui/src/i18n/locales/nl/settings.json @@ -484,6 +484,10 @@ "learnMore": "Meer informatie over providerroutering" } }, + "openAi": { + "strictToolMode": "Strikte toolmodus inschakelen", + "strictToolModeDescription": "Voegt OpenAI-specifieke strikte modus toe aan tooldefinities. Schakel dit uit voor providers zoals kie.ai die de strikte modus niet ondersteunen." + }, "customModel": { "capabilities": "Stel de mogelijkheden en prijzen in voor je aangepaste OpenAI-compatibele model. Wees voorzichtig met het opgeven van de modelmogelijkheden, want deze kunnen de prestaties van Roo Code beïnvloeden.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/pl/settings.json b/webview-ui/src/i18n/locales/pl/settings.json index 7c339f96a5b..3a00ddc1cd1 100644 --- a/webview-ui/src/i18n/locales/pl/settings.json +++ b/webview-ui/src/i18n/locales/pl/settings.json @@ -484,6 +484,10 @@ "learnMore": "Dowiedz się więcej o routingu dostawców" } }, + "openAi": { + "strictToolMode": "Włącz ścisły tryb narzędzi", + "strictToolModeDescription": "Dodaje tryb ścisły specyficzny dla OpenAI do definicji narzędzi. Wyłącz to dla dostawców takich jak kie.ai, którzy nie obsługują trybu ścisłego." + }, "customModel": { "capabilities": "Skonfiguruj możliwości i ceny swojego niestandardowego modelu zgodnego z OpenAI. Zachowaj ostrożność podczas określania możliwości modelu, ponieważ mogą one wpływać na wydajność Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/pt-BR/settings.json b/webview-ui/src/i18n/locales/pt-BR/settings.json index 04a786ab11e..b36840dce86 100644 --- a/webview-ui/src/i18n/locales/pt-BR/settings.json +++ b/webview-ui/src/i18n/locales/pt-BR/settings.json @@ -484,6 +484,10 @@ "learnMore": "Saiba mais sobre roteamento de provedores" } }, + "openAi": { + "strictToolMode": "Ativar modo estrito de ferramentas", + "strictToolModeDescription": "Adiciona o modo estrito específico do OpenAI às definições de ferramentas. Desative para provedores como kie.ai que não suportam o modo estrito." + }, "customModel": { "capabilities": "Configure as capacidades e preços para seu modelo personalizado compatível com OpenAI. Tenha cuidado ao especificar as capacidades do modelo, pois elas podem afetar como o Roo Code funciona.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/ru/settings.json b/webview-ui/src/i18n/locales/ru/settings.json index ebdbc01b931..10ba0a2b057 100644 --- a/webview-ui/src/i18n/locales/ru/settings.json +++ b/webview-ui/src/i18n/locales/ru/settings.json @@ -484,6 +484,10 @@ "learnMore": "Подробнее о маршрутизации провайдеров" } }, + "openAi": { + "strictToolMode": "Включить строгий режим инструментов", + "strictToolModeDescription": "Добавляет строгий режим OpenAI к определениям инструментов. Отключите для провайдеров вроде kie.ai, которые не поддерживают строгий режим." + }, "customModel": { "capabilities": "Настройте возможности и стоимость вашей пользовательской модели, совместимой с OpenAI. Будьте осторожны при указании возможностей модели, это может повлиять на работу Roo Code.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/tr/settings.json b/webview-ui/src/i18n/locales/tr/settings.json index 5a7daeec1d7..6425b48ab08 100644 --- a/webview-ui/src/i18n/locales/tr/settings.json +++ b/webview-ui/src/i18n/locales/tr/settings.json @@ -484,6 +484,10 @@ "learnMore": "Sağlayıcı yönlendirmesi hakkında daha fazla bilgi edinin" } }, + "openAi": { + "strictToolMode": "Katı araç modunu etkinleştir", + "strictToolModeDescription": "Araç tanımlarına OpenAI'ye özgü katı mod ekler. kie.ai gibi katı modu desteklemeyen sağlayıcılar için bunu devre dışı bırakın." + }, "customModel": { "capabilities": "Özel OpenAI uyumlu modelinizin yeteneklerini ve fiyatlandırmasını yapılandırın. Model yeteneklerini belirtirken dikkatli olun, çünkü bunlar Roo Code'un performansını etkileyebilir.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/vi/settings.json b/webview-ui/src/i18n/locales/vi/settings.json index 3e8e22d8f0c..5ff779d8e0a 100644 --- a/webview-ui/src/i18n/locales/vi/settings.json +++ b/webview-ui/src/i18n/locales/vi/settings.json @@ -484,6 +484,10 @@ "learnMore": "Tìm hiểu thêm về định tuyến nhà cung cấp" } }, + "openAi": { + "strictToolMode": "Bật chế độ công cụ nghiêm ngặt", + "strictToolModeDescription": "Thêm chế độ nghiêm ngặt dành riêng cho OpenAI vào định nghĩa công cụ. Tắt tính năng này cho các nhà cung cấp như kie.ai không hỗ trợ chế độ nghiêm ngặt." + }, "customModel": { "capabilities": "Cấu hình các khả năng và giá cả cho mô hình tương thích OpenAI tùy chỉnh của bạn. Hãy cẩn thận khi chỉ định khả năng của mô hình, vì chúng có thể ảnh hưởng đến cách Roo Code hoạt động.", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/zh-CN/settings.json b/webview-ui/src/i18n/locales/zh-CN/settings.json index 85bc9bd431b..80e9bc02395 100644 --- a/webview-ui/src/i18n/locales/zh-CN/settings.json +++ b/webview-ui/src/i18n/locales/zh-CN/settings.json @@ -484,6 +484,10 @@ "learnMore": "了解更多" } }, + "openAi": { + "strictToolMode": "启用严格工具模式", + "strictToolModeDescription": "为工具定义添加 OpenAI 特定的严格模式。对于不支持严格模式的提供商(如 kie.ai),请禁用此选项。" + }, "customModel": { "capabilities": "自定义模型配置注意事项:\n• 确保兼容OpenAI接口规范\n• 错误配置可能导致功能异常\n• 价格参数影响费用统计", "maxTokens": { diff --git a/webview-ui/src/i18n/locales/zh-TW/settings.json b/webview-ui/src/i18n/locales/zh-TW/settings.json index 47f614932b9..94ad9f852eb 100644 --- a/webview-ui/src/i18n/locales/zh-TW/settings.json +++ b/webview-ui/src/i18n/locales/zh-TW/settings.json @@ -493,6 +493,10 @@ "learnMore": "了解更多關於供應商路由的資訊" } }, + "openAi": { + "strictToolMode": "啟用嚴格工具模式", + "strictToolModeDescription": "為工具定義添加 OpenAI 特定的嚴格模式。對於不支援嚴格模式的提供者(如 kie.ai),請停用此選項。" + }, "customModel": { "capabilities": "設定自訂 OpenAI 相容模型的功能和定價。請謹慎設定模型功能,因為這會影響 Roo Code 的運作方式。", "maxTokens": {