refactor: improve OpenAI Native streaming toggle UX

- Moved streaming toggle to Advanced Settings section
- Changed from "Enable Streaming" to "Disable Streaming" checkbox
- Updated all translation files with new keys
- Makes the setting more intuitive for users experiencing verification errors
This commit is contained in:
Roo Code 2025-08-15 21:39:22 +00:00
parent 5604dc5f88
commit ad3b150a8f
20 changed files with 52 additions and 45 deletions

View file

@ -3,6 +3,7 @@ import { convertHeadersToObject } from "./utils/headers"
import { useDebounce } from "react-use"
import { VSCodeLink } from "@vscode/webview-ui-toolkit/react"
import { ExternalLinkIcon } from "@radix-ui/react-icons"
import { Checkbox } from "vscrui"
import {
type ProviderName,
@ -677,6 +678,20 @@ const ApiOptions = ({
}
onChange={(value) => setApiConfigurationField("consecutiveMistakeLimit", value)}
/>
{selectedProvider === "openai-native" && (
<div>
<Checkbox
checked={!(apiConfiguration?.openAiNativeStreamingEnabled ?? true)}
onChange={(checked: boolean) => {
setApiConfigurationField("openAiNativeStreamingEnabled", !checked)
}}>
{t("settings:modelInfo.disableStreaming")}
</Checkbox>
<div className="text-sm text-vscode-descriptionForeground ml-6 -mt-2">
{t("settings:modelInfo.disableStreamingDescription")}
</div>
</div>
)}
{selectedProvider === "openrouter" &&
openRouterModelProviders &&
Object.keys(openRouterModelProviders).length > 0 && (

View file

@ -7,7 +7,7 @@ import type { ProviderSettings } from "@roo-code/types"
import { useAppTranslation } from "@src/i18n/TranslationContext"
import { VSCodeButtonLink } from "@src/components/common/VSCodeButtonLink"
import { inputEventTransform, noTransform } from "../transforms"
import { inputEventTransform } from "../transforms"
type OpenAIProps = {
apiConfiguration: ProviderSettings
@ -72,14 +72,6 @@ export const OpenAI = ({ apiConfiguration, setApiConfigurationField }: OpenAIPro
{t("settings:providers.getOpenAiApiKey")}
</VSCodeButtonLink>
)}
<Checkbox
checked={apiConfiguration?.openAiNativeStreamingEnabled ?? true}
onChange={handleInputChange("openAiNativeStreamingEnabled", noTransform)}>
{t("settings:modelInfo.enableStreaming")}
</Checkbox>
<div className="text-sm text-vscode-descriptionForeground ml-6 -mt-2">
{t("settings:modelInfo.enableStreamingDescription")}
</div>
</>
)
}

View file

@ -737,8 +737,8 @@
"outputPrice": "Preu de sortida",
"cacheReadsPrice": "Preu de lectures de caché",
"cacheWritesPrice": "Preu d'escriptures de caché",
"enableStreaming": "Habilitar streaming",
"enableStreamingDescription": "Desactiva el streaming si trobes errors de verificació d'organització amb models avançats. Les sol·licituds sense streaming poden funcionar sense verificació.",
"disableStreaming": "Desactivar streaming",
"disableStreamingDescription": "Marca això si trobes errors de verificació d'organització amb models avançats com GPT-5. Les sol·licituds sense streaming poden funcionar sense verificació.",
"enableR1Format": "Activar els paràmetres del model R1",
"enableR1FormatTips": "S'ha d'activat quan s'utilitzen models R1 com el QWQ per evitar errors 400",
"useAzure": "Utilitzar Azure",

View file

@ -737,8 +737,8 @@
"outputPrice": "Ausgabepreis",
"cacheReadsPrice": "Cache-Lesepreis",
"cacheWritesPrice": "Cache-Schreibpreis",
"enableStreaming": "Streaming aktivieren",
"enableStreamingDescription": "Deaktiviere Streaming, wenn du bei erweiterten Modellen auf Organisationsverifizierungsfehler stößt. Nicht-Streaming-Anfragen funktionieren möglicherweise ohne Verifizierung.",
"disableStreaming": "Streaming deaktivieren",
"disableStreamingDescription": "Aktiviere dies, wenn du bei erweiterten Modellen wie GPT-5 auf Organisationsverifizierungsfehler stößt. Nicht-Streaming-Anfragen funktionieren möglicherweise ohne Verifizierung.",
"enableR1Format": "R1-Modellparameter aktivieren",
"enableR1FormatTips": "Muss bei Verwendung von R1-Modellen wie QWQ aktiviert werden, um 400er-Fehler zu vermeiden",
"useAzure": "Azure verwenden",

View file

@ -736,8 +736,8 @@
"outputPrice": "Output price",
"cacheReadsPrice": "Cache reads price",
"cacheWritesPrice": "Cache writes price",
"enableStreaming": "Enable streaming",
"enableStreamingDescription": "Disable streaming if you encounter organization verification errors with advanced models. Non-streaming requests may work without verification.",
"disableStreaming": "Disable streaming",
"disableStreamingDescription": "Check this if you encounter organization verification errors with advanced models like GPT-5. Non-streaming requests may work without verification.",
"enableR1Format": "Enable R1 model parameters",
"enableR1FormatTips": "Must be enabled when using R1 models such as QWQ to prevent 400 errors",
"useAzure": "Use Azure",

View file

@ -737,8 +737,8 @@
"outputPrice": "Precio de salida",
"cacheReadsPrice": "Precio de lecturas de caché",
"cacheWritesPrice": "Precio de escrituras de caché",
"enableStreaming": "Habilitar streaming",
"enableStreamingDescription": "Desactiva el streaming si encuentras errores de verificación de organización con modelos avanzados. Las solicitudes sin streaming pueden funcionar sin verificación.",
"disableStreaming": "Desactivar streaming",
"disableStreamingDescription": "Marca esto si encuentras errores de verificación de organización con modelos avanzados como GPT-5. Las solicitudes sin streaming pueden funcionar sin verificación.",
"enableR1Format": "Habilitar parámetros del modelo R1",
"enableR1FormatTips": "Debe habilitarse al utilizar modelos R1 como QWQ, para evitar el error 400",
"useAzure": "Usar Azure",

View file

@ -737,8 +737,8 @@
"outputPrice": "Prix de sortie",
"cacheReadsPrice": "Prix des lectures de cache",
"cacheWritesPrice": "Prix des écritures de cache",
"enableStreaming": "Activer le streaming",
"enableStreamingDescription": "Désactive le streaming si tu rencontres des erreurs de vérification d'organisation avec des modèles avancés. Les requêtes sans streaming peuvent fonctionner sans vérification.",
"disableStreaming": "Désactiver le streaming",
"disableStreamingDescription": "Coche ceci si tu rencontres des erreurs de vérification d'organisation avec des modèles avancés comme GPT-5. Les requêtes sans streaming peuvent fonctionner sans vérification.",
"enableR1Format": "Activer les paramètres du modèle R1",
"enableR1FormatTips": "Doit être activé lors de l'utilisation de modèles R1 tels que QWQ, pour éviter l'erreur 400",
"useAzure": "Utiliser Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "आउटपुट मूल्य",
"cacheReadsPrice": "कैश रीड्स मूल्य",
"cacheWritesPrice": "कैश राइट्स मूल्य",
"enableStreaming": "स्ट्रीमिंग सक्षम करें",
"enableStreamingDescription": "यदि आपको उन्नत मॉडल के साथ संगठन सत्यापन त्रुटियों का सामना करना पड़ता है तो स्ट्रीमिंग अक्षम करें। गैर-स्ट्रीमिंग अनुरोध सत्यापन के बिना काम कर सकते हैं।",
"disableStreaming": "स्ट्रीमिंग अक्षम करें",
"disableStreamingDescription": "यदि आपको GPT-5 जैसे उन्नत मॉडल के साथ संगठन सत्यापन त्रुटियों का सामना करना पड़ता है तो इसे चेक करें। गैर-स्ट्रीमिंग अनुरोध सत्यापन के बिना काम कर सकते हैं।",
"enableR1Format": "R1 मॉडल पैरामीटर सक्षम करें",
"enableR1FormatTips": "QWQ जैसी R1 मॉडलों का उपयोग करते समय इसे सक्षम करना आवश्यक है, ताकि 400 त्रुटि से बचा जा सके",
"useAzure": "Azure का उपयोग करें",

View file

@ -767,8 +767,8 @@
"outputPrice": "Harga output",
"cacheReadsPrice": "Harga cache reads",
"cacheWritesPrice": "Harga cache writes",
"enableStreaming": "Aktifkan streaming",
"enableStreamingDescription": "Nonaktifkan streaming jika kamu mengalami kesalahan verifikasi organisasi dengan model lanjutan. Permintaan non-streaming mungkin berfungsi tanpa verifikasi.",
"disableStreaming": "Nonaktifkan streaming",
"disableStreamingDescription": "Centang ini jika kamu mengalami kesalahan verifikasi organisasi dengan model lanjutan seperti GPT-5. Permintaan non-streaming mungkin berfungsi tanpa verifikasi.",
"enableR1Format": "Aktifkan parameter model R1",
"enableR1FormatTips": "Harus diaktifkan saat menggunakan model R1 seperti QWQ untuk mencegah error 400",
"useAzure": "Gunakan Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "Prezzo output",
"cacheReadsPrice": "Prezzo letture cache",
"cacheWritesPrice": "Prezzo scritture cache",
"enableStreaming": "Abilita streaming",
"enableStreamingDescription": "Disabilita lo streaming se riscontri errori di verifica dell'organizzazione con modelli avanzati. Le richieste non in streaming potrebbero funzionare senza verifica.",
"disableStreaming": "Disabilita streaming",
"disableStreamingDescription": "Seleziona questo se riscontri errori di verifica dell'organizzazione con modelli avanzati come GPT-5. Le richieste non in streaming potrebbero funzionare senza verifica.",
"enableR1Format": "Abilita i parametri del modello R1",
"enableR1FormatTips": "Deve essere abilitato quando si utilizzano modelli R1 come QWQ, per evitare l'errore 400",
"useAzure": "Usa Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "出力価格",
"cacheReadsPrice": "キャッシュ読み取り価格",
"cacheWritesPrice": "キャッシュ書き込み価格",
"enableStreaming": "ストリーミングを有効化",
"enableStreamingDescription": "高度なモデルで組織の検証エラーが発生した場合は、ストリーミングを無効にしてください。非ストリーミングリクエストは検証なしで動作する可能性があります。",
"disableStreaming": "ストリーミングを無効化",
"disableStreamingDescription": "GPT-5のような高度なモデルで組織の検証エラーが発生した場合は、これをチェックしてください。非ストリーミングリクエストは検証なしで動作する可能性があります。",
"enableR1Format": "R1モデルパラメータを有効にする",
"enableR1FormatTips": "QWQなどのR1モデルを使用する際には、有効にする必要があります。400エラーを防ぐために",
"useAzure": "Azureを使用",

View file

@ -738,8 +738,8 @@
"outputPrice": "출력 가격",
"cacheReadsPrice": "캐시 읽기 가격",
"cacheWritesPrice": "캐시 쓰기 가격",
"enableStreaming": "스트리밍 활성화",
"enableStreamingDescription": "고급 모델에서 조직 확인 오류가 발생하면 스트리밍을 비활성화하세요. 비스트리밍 요청은 확인 없이 작동할 수 있습니다.",
"disableStreaming": "스트리밍 활성화",
"disableStreamingDescription": "GPT-5와 같은 고급 모델에서 조직 확인 오류가 발생하면 이것을 체크하세요. 비스트리밍 요청은 확인 없이 작동할 수 있습니다.",
"enableR1Format": "R1 모델 매개변수 활성화",
"enableR1FormatTips": "QWQ와 같은 R1 모델을 사용할 때 활성화해야 하며, 400 오류를 방지합니다",
"useAzure": "Azure 사용",

View file

@ -738,8 +738,8 @@
"outputPrice": "Uitvoerprijs",
"cacheReadsPrice": "Cache-leesprijs",
"cacheWritesPrice": "Cache-schrijfprijs",
"enableStreaming": "Streaming inschakelen",
"enableStreamingDescription": "Schakel streaming uit als je organisatieverificatiefouten tegenkomt met geavanceerde modellen. Niet-streaming verzoeken kunnen zonder verificatie werken.",
"disableStreaming": "Streaming uitschakelen",
"disableStreamingDescription": "Vink dit aan als je organisatieverificatiefouten tegenkomt met geavanceerde modellen zoals GPT-5. Niet-streaming verzoeken kunnen zonder verificatie werken.",
"enableR1Format": "R1-modelparameters inschakelen",
"enableR1FormatTips": "Moet ingeschakeld zijn bij gebruik van R1-modellen zoals QWQ om 400-fouten te voorkomen",
"useAzure": "Azure gebruiken",

View file

@ -738,8 +738,8 @@
"outputPrice": "Cena wyjścia",
"cacheReadsPrice": "Cena odczytów bufora",
"cacheWritesPrice": "Cena zapisów bufora",
"enableStreaming": "Włącz strumieniowanie",
"enableStreamingDescription": "Wyłącz strumieniowanie, jeśli napotkasz błędy weryfikacji organizacji z zaawansowanymi modelami. Żądania bez strumieniowania mogą działać bez weryfikacji.",
"disableStreaming": "Wyłącz strumieniowanie",
"disableStreamingDescription": "Zaznacz to, jeśli napotkasz błędy weryfikacji organizacji z zaawansowanymi modelami takimi jak GPT-5. Żądania bez strumieniowania mogą działać bez weryfikacji.",
"enableR1Format": "Włącz parametry modelu R1",
"enableR1FormatTips": "Należy włączyć podczas korzystania z modeli R1, takich jak QWQ, aby uniknąć błędu 400",
"useAzure": "Użyj Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "Preço de saída",
"cacheReadsPrice": "Preço de leituras de cache",
"cacheWritesPrice": "Preço de escritas de cache",
"enableStreaming": "Ativar streaming",
"enableStreamingDescription": "Desative o streaming se você encontrar erros de verificação de organização com modelos avançados. Solicitações sem streaming podem funcionar sem verificação.",
"disableStreaming": "Desativar streaming",
"disableStreamingDescription": "Marque isso se você encontrar erros de verificação de organização com modelos avançados como GPT-5. Solicitações sem streaming podem funcionar sem verificação.",
"enableR1Format": "Ativar parâmetros do modelo R1",
"enableR1FormatTips": "Deve ser ativado ao usar modelos R1 como QWQ, para evitar erro 400",
"useAzure": "Usar Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "Цена за вывод",
"cacheReadsPrice": "Цена чтения из кэша",
"cacheWritesPrice": "Цена записи в кэш",
"enableStreaming": "Включить потоковую передачу",
"enableStreamingDescription": "Отключи потоковую передачу, если сталкиваешься с ошибками проверки организации при использовании продвинутых моделей. Запросы без потоковой передачи могут работать без проверки.",
"disableStreaming": "Отключить потоковую передачу",
"disableStreamingDescription": "Отметь это, если сталкиваешься с ошибками проверки организации при использовании продвинутых моделей, таких как GPT-5. Запросы без потоковой передачи могут работать без проверки.",
"enableR1Format": "Включить параметры модели R1",
"enableR1FormatTips": "Необходимо включить при использовании моделей R1 (например, QWQ), чтобы избежать ошибок 400",
"useAzure": "Использовать Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": ıkış fiyatı",
"cacheReadsPrice": "Önbellek okuma fiyatı",
"cacheWritesPrice": "Önbellek yazma fiyatı",
"enableStreaming": "Akışı etkinleştir",
"enableStreamingDescription": "Gelişmiş modellerle kuruluş doğrulama hatalarıyla karşılaşırsan akışı devre dışı bırak. Akış olmayan istekler doğrulama olmadan çalışabilir.",
"disableStreaming": "Akışı devre dışı bırak",
"disableStreamingDescription": "GPT-5 gibi gelişmiş modellerle kuruluş doğrulama hatalarıyla karşılaşırsan bunu işaretle. Akış olmayan istekler doğrulama olmadan çalışabilir.",
"enableR1Format": "R1 model parametrelerini etkinleştir",
"enableR1FormatTips": "QWQ gibi R1 modelleri kullanıldığında etkinleştirilmelidir, 400 hatası alınmaması için",
"useAzure": "Azure kullan",

View file

@ -738,8 +738,8 @@
"outputPrice": "Giá đầu ra",
"cacheReadsPrice": "Giá đọc bộ nhớ đệm",
"cacheWritesPrice": "Giá ghi bộ nhớ đệm",
"enableStreaming": "Bật streaming",
"enableStreamingDescription": "Tắt streaming nếu bạn gặp lỗi xác minh tổ chức với các mô hình nâng cao. Các yêu cầu không streaming có thể hoạt động mà không cần xác minh.",
"disableStreaming": "Tắt streaming",
"disableStreamingDescription": "Đánh dấu này nếu bạn gặp lỗi xác minh tổ chức với các mô hình nâng cao như GPT-5. Các yêu cầu không streaming có thể hoạt động mà không cần xác minh.",
"enableR1Format": "Kích hoạt tham số mô hình R1",
"enableR1FormatTips": "Cần kích hoạt khi sử dụng các mô hình R1 như QWQ, để tránh lỗi 400",
"useAzure": "Sử dụng Azure",

View file

@ -738,8 +738,8 @@
"outputPrice": "输出价格",
"cacheReadsPrice": "缓存读取价格",
"cacheWritesPrice": "缓存写入价格",
"enableStreaming": "启用流式传输",
"enableStreamingDescription": "如果在使用高级模型时遇到组织验证错误,请禁用流式传输。非流式请求可能无需验证即可工作。",
"disableStreaming": "禁用流式传输",
"disableStreamingDescription": "如果在使用 GPT-5 等高级模型时遇到组织验证错误,请勾选此项。非流式请求可能无需验证即可工作。",
"enableR1Format": "启用 R1 模型参数",
"enableR1FormatTips": "使用 QWQ 等 R1 系列模型时必须启用,避免出现 400 错误",
"useAzure": "使用 Azure 服务",

View file

@ -738,8 +738,8 @@
"outputPrice": "輸出價格",
"cacheReadsPrice": "快取讀取價格",
"cacheWritesPrice": "快取寫入價格",
"enableStreaming": "啟用串流輸出",
"enableStreamingDescription": "如果在使用進階模型時遇到組織驗證錯誤,請停用串流輸出。非串流請求可能無需驗證即可運作。",
"disableStreaming": "停用串流輸出",
"disableStreamingDescription": "如果在使用 GPT-5 等進階模型時遇到組織驗證錯誤,請勾選此項。非串流請求可能無需驗證即可運作。",
"enableR1Format": "啟用 R1 模型參數",
"enableR1FormatTips": "使用 QWQ 等 R1 模型時必須啟用,以避免發生 400 錯誤",
"useAzure": "使用 Azure",