diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/__tests__/index.spec.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/__tests__/index.spec.tsx index 0fe1deffceb..edffedbcf0b 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-modal/__tests__/index.spec.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/__tests__/index.spec.tsx @@ -1,5 +1,6 @@ import type * as React from 'react' import type { Credential, CredentialFormSchema, ModelProvider } from '../../declarations' +import type { FormSchema } from '@/app/components/base/form/types' import { fireEvent, render, screen, waitFor, within } from '@testing-library/react' import { ConfigurationMethodEnum, @@ -125,8 +126,10 @@ vi.mock('@/app/components/base/form/form-scenarios/auth', async () => { const AuthForm = React.forwardRef( ( { + formSchemas, onChange, }: { + formSchemas: FormSchema[] onChange?: (field: string, value: string) => void }, ref: React.ForwardedRef<{ @@ -141,6 +144,12 @@ vi.mock('@/app/components/base/form/form-scenarios/auth', async () => { })) return (
+ {formSchemas.map( + (schema) => + typeof schema.description === 'string' && ( +
{schema.description}
+ ), + )} @@ -281,6 +290,61 @@ describe('ModelModal', () => { expect(screen.getByText('common.modelProvider.auth.modelCredential'))!.toBeInTheDocument() }) + it('should show the Responses API tip only for official OpenAI credential forms', () => { + const tip = 'common.modelProvider.auth.openAIResponsesAPITip' + mockState.formSchemas = [ + { variable: 'api_protocol', type: 'select' } as unknown as CredentialFormSchema, + ] + + const officialOpenAI = renderModal({ + provider: createProvider({ provider: 'langgenius/openai/openai' }), + }) + expect(screen.getByText(tip))!.toBeInTheDocument() + officialOpenAI.unmount() + + const legacyOpenAI = renderModal() + expect(screen.getByText(tip))!.toBeInTheDocument() + legacyOpenAI.unmount() + + mockState.formSchemas = [] + const openAIWithoutProtocolField = renderModal() + expect(screen.queryByText(tip)).not.toBeInTheDocument() + openAIWithoutProtocolField.unmount() + + mockState.formSchemas = [ + { variable: 'api_protocol', type: 'select' } as unknown as CredentialFormSchema, + ] + renderModal({ + provider: createProvider({ provider: 'langgenius/azure_openai/azure_openai' }), + }) + expect(screen.queryByText(tip)).not.toBeInTheDocument() + }) + + it('should show the Responses API tip when adding a new custom model credential', () => { + const tip = 'common.modelProvider.auth.openAIResponsesAPITip' + mockState.formSchemas = [ + { variable: 'api_protocol', type: 'select' } as unknown as CredentialFormSchema, + ] + const customModel = renderModal({ mode: ModelModalModeEnum.configCustomModel }) + expect(screen.getByText(tip))!.toBeInTheDocument() + customModel.unmount() + + const modelCredential = renderModal({ + mode: ModelModalModeEnum.configModelCredential, + model: { model: 'gpt-5.6', model_type: ModelTypeEnum.textGeneration }, + }) + expect(screen.getByText(tip))!.toBeInTheDocument() + modelCredential.unmount() + + renderModal({ mode: ModelModalModeEnum.addCustomModelToModelList }) + + expect(screen.queryByText(tip)).not.toBeInTheDocument() + + fireEvent.click(screen.getByText('Add New')) + + expect(screen.getByText(tip))!.toBeInTheDocument() + }) + it('should call onCancel when the cancel button is clicked', () => { const { onCancel } = renderModal() diff --git a/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx index ae48f2a9aed..e33977a3c3f 100644 --- a/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx +++ b/web/app/components/header/account-setting/model-provider-page/model-modal/index.tsx @@ -30,6 +30,7 @@ import { import ModelIcon from '@/app/components/header/account-setting/model-provider-page/model-icon' import { useCredentialPermissions } from '@/hooks/use-credential-permissions' import { useRenderI18nObject } from '@/hooks/use-i18n' +import { ModelProviderQuotaGetPaid } from '@/types/model-provider' import { ConfigurationMethodEnum, FormTypeEnum, ModelModalModeEnum } from '../declarations' import { useLanguage } from '../hooks' import { CredentialSelector } from '../model-auth' @@ -285,6 +286,8 @@ const ModelModal: FC = ({ if (getForm()) getForm()?.setFieldValue(field, value) }, []) const notAllowCustomCredential = provider.allow_custom_token === false + const isOfficialOpenAIProvider = + provider.provider === ModelProviderQuotaGetPaid.OPENAI || provider.provider === 'openai' const handleOpenChange = useCallback( (open: boolean) => { @@ -357,6 +360,13 @@ const ModelModal: FC = ({ ...formSchema, name: formSchema.variable, showRadioUI: formSchema.type === FormTypeEnum.radio, + ...(isOfficialOpenAIProvider && formSchema.variable === 'api_protocol' + ? { + description: t(($) => $['modelProvider.auth.openAIResponsesAPITip'], { + ns: 'common', + }), + } + : {}), } }) as FormSchema[] } diff --git a/web/i18n/ar-TN/common.json b/web/i18n/ar-TN/common.json index 481715ba874..b37d1e3ff41 100644 --- a/web/i18n/ar-TN/common.json +++ b/web/i18n/ar-TN/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "إدارة بيانات الاعتماد", "modelProvider.auth.modelCredential": "بيانات اعتماد النموذج", "modelProvider.auth.modelCredentials": "بيانات اعتماد النموذج", + "modelProvider.auth.openAIResponsesAPITip": "بالنسبة إلى نماذج GPT-5.6 والإصدارات الأحدث، نوصي باستخدام Responses API.", "modelProvider.auth.providerManaged": "مدار من قبل المزود", "modelProvider.auth.providerManagedTip": "يتم استضافة التكوين الحالي بواسطة المزود.", "modelProvider.auth.removeModel": "إزالة النموذج", diff --git a/web/i18n/de-DE/common.json b/web/i18n/de-DE/common.json index c3f9ba7ba2f..10b45574ba1 100644 --- a/web/i18n/de-DE/common.json +++ b/web/i18n/de-DE/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Anmeldeinformationen verwalten", "modelProvider.auth.modelCredential": "Zeugnis des Modells", "modelProvider.auth.modelCredentials": "Modellanmeldeinformationen", + "modelProvider.auth.openAIResponsesAPITip": "Für GPT-5.6 und neuere Modelle empfehlen wir die Verwendung der Responses API.", "modelProvider.auth.providerManaged": "Anbieter verwaltet", "modelProvider.auth.providerManagedTip": "Die aktuelle Konfiguration wird vom Anbieter gehostet.", "modelProvider.auth.removeModel": "Modell entfernen", diff --git a/web/i18n/en-US/common.json b/web/i18n/en-US/common.json index 24463b81521..00c83f9528c 100644 --- a/web/i18n/en-US/common.json +++ b/web/i18n/en-US/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Manage Credentials", "modelProvider.auth.modelCredential": "Model credential", "modelProvider.auth.modelCredentials": "Model credentials", + "modelProvider.auth.openAIResponsesAPITip": "For GPT-5.6 and later models, we recommend using the Responses API.", "modelProvider.auth.providerManaged": "Provider managed", "modelProvider.auth.providerManagedTip": "The current configuration is hosted by the provider.", "modelProvider.auth.removeModel": "Remove Model", diff --git a/web/i18n/es-ES/common.json b/web/i18n/es-ES/common.json index 8d60586957b..d859fbb22e2 100644 --- a/web/i18n/es-ES/common.json +++ b/web/i18n/es-ES/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Administrar credenciales", "modelProvider.auth.modelCredential": "Credencial modelo", "modelProvider.auth.modelCredentials": "Credenciales del modelo", + "modelProvider.auth.openAIResponsesAPITip": "Para GPT-5.6 y modelos posteriores, recomendamos usar la API Responses.", "modelProvider.auth.providerManaged": "Proveedor gestionado", "modelProvider.auth.providerManagedTip": "La configuración actual es hospedada por el proveedor.", "modelProvider.auth.removeModel": "Eliminar modelo", diff --git a/web/i18n/fa-IR/common.json b/web/i18n/fa-IR/common.json index 9f378917c79..ef78f2b0763 100644 --- a/web/i18n/fa-IR/common.json +++ b/web/i18n/fa-IR/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "مدیریت اعتبارنامه ها", "modelProvider.auth.modelCredential": "اعتبار مدل", "modelProvider.auth.modelCredentials": "مدل اعتبارنامه", + "modelProvider.auth.openAIResponsesAPITip": "برای مدل‌های GPT-5.6 و جدیدتر، استفاده از Responses API را توصیه می‌کنیم.", "modelProvider.auth.providerManaged": "مدیریت شده توسط ارائه‌دهنده", "modelProvider.auth.providerManagedTip": "تنظیمات فعلی توسط ارائه‌دهنده میزبانی می‌شود.", "modelProvider.auth.removeModel": "حذف مدل", diff --git a/web/i18n/fr-FR/common.json b/web/i18n/fr-FR/common.json index b1d66c2b080..7710080d9f0 100644 --- a/web/i18n/fr-FR/common.json +++ b/web/i18n/fr-FR/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Gérer les informations d’identification", "modelProvider.auth.modelCredential": "Références du modèle", "modelProvider.auth.modelCredentials": "Informations d'identification du modèle", + "modelProvider.auth.openAIResponsesAPITip": "Pour GPT-5.6 et les modèles ultérieurs, nous recommandons d’utiliser l’API Responses.", "modelProvider.auth.providerManaged": "Fournisseur géré", "modelProvider.auth.providerManagedTip": "La configuration actuelle est hébergée par le fournisseur.", "modelProvider.auth.removeModel": "Supprimer le modèle", diff --git a/web/i18n/hi-IN/common.json b/web/i18n/hi-IN/common.json index 1c1cb77836d..4c27f5e4516 100644 --- a/web/i18n/hi-IN/common.json +++ b/web/i18n/hi-IN/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "क्रेडेंशियल्स प्रबंधित करें", "modelProvider.auth.modelCredential": "मॉडल क्रेडेंशियल", "modelProvider.auth.modelCredentials": "मॉडल क्रेडेंशियल्स", + "modelProvider.auth.openAIResponsesAPITip": "GPT-5.6 और बाद के मॉडल के लिए, हम Responses API का उपयोग करने की सलाह देते हैं।", "modelProvider.auth.providerManaged": "प्रदाता द्वारा प्रबंधित", "modelProvider.auth.providerManagedTip": "वर्तमान कॉन्फ़िगरेशन प्रदाता द्वारा होस्ट किया गया है।", "modelProvider.auth.removeModel": "मॉडल हटाएं", diff --git a/web/i18n/id-ID/common.json b/web/i18n/id-ID/common.json index 48e95cdc16f..a3f44326ba6 100644 --- a/web/i18n/id-ID/common.json +++ b/web/i18n/id-ID/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Kelola Kredensial", "modelProvider.auth.modelCredential": "Kredensial model", "modelProvider.auth.modelCredentials": "Kredensial model", + "modelProvider.auth.openAIResponsesAPITip": "Untuk GPT-5.6 dan model yang lebih baru, kami menyarankan penggunaan Responses API.", "modelProvider.auth.providerManaged": "Penyedia dikelola", "modelProvider.auth.providerManagedTip": "Konfigurasi saat ini dihosting oleh penyedia.", "modelProvider.auth.removeModel": "Hapus Model", diff --git a/web/i18n/it-IT/common.json b/web/i18n/it-IT/common.json index f19d52870a0..abd62d07d00 100644 --- a/web/i18n/it-IT/common.json +++ b/web/i18n/it-IT/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Gestisci credenziali", "modelProvider.auth.modelCredential": "Credenziale del modello", "modelProvider.auth.modelCredentials": "Credenziali del modello", + "modelProvider.auth.openAIResponsesAPITip": "Per GPT-5.6 e modelli successivi, consigliamo di utilizzare la Responses API.", "modelProvider.auth.providerManaged": "Fornitore gestito", "modelProvider.auth.providerManagedTip": "La configurazione attuale è ospitata dal fornitore.", "modelProvider.auth.removeModel": "Rimuovi modello", diff --git a/web/i18n/ja-JP/common.json b/web/i18n/ja-JP/common.json index 8a2d7741e7d..c866dc7b54d 100644 --- a/web/i18n/ja-JP/common.json +++ b/web/i18n/ja-JP/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "認証情報を管理", "modelProvider.auth.modelCredential": "モデルの資格情報", "modelProvider.auth.modelCredentials": "モデルの資格情報", + "modelProvider.auth.openAIResponsesAPITip": "GPT-5.6 以降のモデルでは、Responses API の使用をお勧めします。", "modelProvider.auth.providerManaged": "プロバイダー管理", "modelProvider.auth.providerManagedTip": "現在の設定はプロバイダーによってホストされています。", "modelProvider.auth.removeModel": "モデルを削除", diff --git a/web/i18n/ko-KR/common.json b/web/i18n/ko-KR/common.json index eb6ff0cdf78..78e6594c287 100644 --- a/web/i18n/ko-KR/common.json +++ b/web/i18n/ko-KR/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "자격 증명 관리", "modelProvider.auth.modelCredential": "모델 자격 증명", "modelProvider.auth.modelCredentials": "모델 자격 증명", + "modelProvider.auth.openAIResponsesAPITip": "GPT-5.6 이상 모델에서는 Responses API 사용을 권장합니다.", "modelProvider.auth.providerManaged": "제공자가 관리하는", "modelProvider.auth.providerManagedTip": "현재 구성은 제공업체에 의해 호스팅되고 있습니다.", "modelProvider.auth.removeModel": "모델 제거", diff --git a/web/i18n/nl-NL/common.json b/web/i18n/nl-NL/common.json index a2e640c97ab..05eba709db4 100644 --- a/web/i18n/nl-NL/common.json +++ b/web/i18n/nl-NL/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Manage Credentials", "modelProvider.auth.modelCredential": "Model credential", "modelProvider.auth.modelCredentials": "Model credentials", + "modelProvider.auth.openAIResponsesAPITip": "Voor GPT-5.6 en nieuwere modellen raden we het gebruik van de Responses API aan.", "modelProvider.auth.providerManaged": "Provider managed", "modelProvider.auth.providerManagedTip": "The current configuration is hosted by the provider.", "modelProvider.auth.removeModel": "Remove Model", diff --git a/web/i18n/pl-PL/common.json b/web/i18n/pl-PL/common.json index 9f2643167b4..8c90401a2e2 100644 --- a/web/i18n/pl-PL/common.json +++ b/web/i18n/pl-PL/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Zarządzanie poświadczeniami", "modelProvider.auth.modelCredential": "Poświadczenie modelu", "modelProvider.auth.modelCredentials": "Uprawnienia modelu", + "modelProvider.auth.openAIResponsesAPITip": "W przypadku modelu GPT-5.6 i nowszych zalecamy korzystanie z interfejsu Responses API.", "modelProvider.auth.providerManaged": "Zarządzane przez dostawcę", "modelProvider.auth.providerManagedTip": "Bieżąca konfiguracja jest hostowana przez dostawcę.", "modelProvider.auth.removeModel": "Usuń model", diff --git a/web/i18n/pt-BR/common.json b/web/i18n/pt-BR/common.json index ee48ef3cc86..ea3f78cb41e 100644 --- a/web/i18n/pt-BR/common.json +++ b/web/i18n/pt-BR/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Gerenciar credenciais", "modelProvider.auth.modelCredential": "Credencial de modelo", "modelProvider.auth.modelCredentials": "Credenciais do modelo", + "modelProvider.auth.openAIResponsesAPITip": "Para o GPT-5.6 e modelos posteriores, recomendamos usar a API Responses.", "modelProvider.auth.providerManaged": "Provedor gerenciado", "modelProvider.auth.providerManagedTip": "A configuração atual é hospedada pelo provedor.", "modelProvider.auth.removeModel": "Remover modelo", diff --git a/web/i18n/ro-RO/common.json b/web/i18n/ro-RO/common.json index 70af079fa55..5c3b8cb74fb 100644 --- a/web/i18n/ro-RO/common.json +++ b/web/i18n/ro-RO/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Gestionați acreditările", "modelProvider.auth.modelCredential": "Model de acreditare", "modelProvider.auth.modelCredentials": "Credențiale model", + "modelProvider.auth.openAIResponsesAPITip": "Pentru GPT-5.6 și modelele ulterioare, recomandăm utilizarea API-ului Responses.", "modelProvider.auth.providerManaged": "Gestionat de furnizor", "modelProvider.auth.providerManagedTip": "Configurarea curentă este găzduită de furnizor.", "modelProvider.auth.removeModel": "Eliminați modelul", diff --git a/web/i18n/ru-RU/common.json b/web/i18n/ru-RU/common.json index 085d4d4f6b4..1ec561a39a4 100644 --- a/web/i18n/ru-RU/common.json +++ b/web/i18n/ru-RU/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Управление учетными данными", "modelProvider.auth.modelCredential": "Удостоверение модели", "modelProvider.auth.modelCredentials": "Учетные данные модели", + "modelProvider.auth.openAIResponsesAPITip": "Для GPT-5.6 и более новых моделей рекомендуется использовать Responses API.", "modelProvider.auth.providerManaged": "Управляемый провайдером", "modelProvider.auth.providerManagedTip": "Текущая конфигурация размещена у провайдера.", "modelProvider.auth.removeModel": "Удалить модель", diff --git a/web/i18n/sl-SI/common.json b/web/i18n/sl-SI/common.json index 175e45c9077..55562960c27 100644 --- a/web/i18n/sl-SI/common.json +++ b/web/i18n/sl-SI/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Upravljanje poverilnic", "modelProvider.auth.modelCredential": "Poverilnice modela", "modelProvider.auth.modelCredentials": "Model akreditivi", + "modelProvider.auth.openAIResponsesAPITip": "Za GPT-5.6 in novejše modele priporočamo uporabo Responses API.", "modelProvider.auth.providerManaged": "Zagotavlja upravljano", "modelProvider.auth.providerManagedTip": "Trenutna konfiguracija je gostovana pri ponudniku.", "modelProvider.auth.removeModel": "Odstrani model", diff --git a/web/i18n/th-TH/common.json b/web/i18n/th-TH/common.json index 278c713cc39..b074a7b88ab 100644 --- a/web/i18n/th-TH/common.json +++ b/web/i18n/th-TH/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "จัดการข้อมูลประจําตัว", "modelProvider.auth.modelCredential": "ข้อมูลประจําตัวของรุ่น", "modelProvider.auth.modelCredentials": "ข้อมูลรับรองโมเดล", + "modelProvider.auth.openAIResponsesAPITip": "สำหรับ GPT-5.6 และโมเดลที่ใหม่กว่า เราขอแนะนำให้ใช้ Responses API", "modelProvider.auth.providerManaged": "ผู้ให้บริการจัดการ", "modelProvider.auth.providerManagedTip": "การกำหนดค่าปัจจุบันถูกโฮสต์โดยผู้ให้บริการ.", "modelProvider.auth.removeModel": "ลบโมเดล", diff --git a/web/i18n/tr-TR/common.json b/web/i18n/tr-TR/common.json index 26e683afaa2..3d78cadbe9b 100644 --- a/web/i18n/tr-TR/common.json +++ b/web/i18n/tr-TR/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Kimlik Bilgilerini Yönet", "modelProvider.auth.modelCredential": "Model kimlik bilgileri", "modelProvider.auth.modelCredentials": "Model kimlik bilgileri", + "modelProvider.auth.openAIResponsesAPITip": "GPT-5.6 ve sonraki modeller için Responses API'yi kullanmanızı öneririz.", "modelProvider.auth.providerManaged": "Sağlayıcı yönetimi", "modelProvider.auth.providerManagedTip": "Mevcut yapılandırma sağlayıcı tarafından barındırılmaktadır.", "modelProvider.auth.removeModel": "Modeli Kaldır", diff --git a/web/i18n/uk-UA/common.json b/web/i18n/uk-UA/common.json index 3e880810475..8884e81e403 100644 --- a/web/i18n/uk-UA/common.json +++ b/web/i18n/uk-UA/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Керування обліковими даними", "modelProvider.auth.modelCredential": "Облікові дані моделі", "modelProvider.auth.modelCredentials": "Модельні облікові дані", + "modelProvider.auth.openAIResponsesAPITip": "Для GPT-5.6 і новіших моделей рекомендуємо використовувати Responses API.", "modelProvider.auth.providerManaged": "Постачальник управляє", "modelProvider.auth.providerManagedTip": "Поточна конфігурація розміщується провайдером.", "modelProvider.auth.removeModel": "Видалити модель", diff --git a/web/i18n/vi-VN/common.json b/web/i18n/vi-VN/common.json index 5b694eb8236..4437103fa52 100644 --- a/web/i18n/vi-VN/common.json +++ b/web/i18n/vi-VN/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "Quản lý thông tin đăng nhập", "modelProvider.auth.modelCredential": "Thông tin đăng nhập mô hình", "modelProvider.auth.modelCredentials": "Chứng chỉ của mô hình", + "modelProvider.auth.openAIResponsesAPITip": "Đối với GPT-5.6 và các mô hình mới hơn, chúng tôi khuyên dùng Responses API.", "modelProvider.auth.providerManaged": "Nhà cung cấp đã được quản lý", "modelProvider.auth.providerManagedTip": "Cấu hình hiện tại được lưu trữ bởi nhà cung cấp.", "modelProvider.auth.removeModel": "Loại bỏ mô hình", diff --git a/web/i18n/zh-Hans/common.json b/web/i18n/zh-Hans/common.json index 51457bcd447..fe00eec2370 100644 --- a/web/i18n/zh-Hans/common.json +++ b/web/i18n/zh-Hans/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "管理凭据", "modelProvider.auth.modelCredential": "模型凭据", "modelProvider.auth.modelCredentials": "模型凭据", + "modelProvider.auth.openAIResponsesAPITip": "使用 GPT-5.6 及以上模型时,建议使用 Responses API。", "modelProvider.auth.providerManaged": "由模型供应商管理", "modelProvider.auth.providerManagedTip": "使用模型供应商提供的单组凭据。", "modelProvider.auth.removeModel": "移除模型", diff --git a/web/i18n/zh-Hant/common.json b/web/i18n/zh-Hant/common.json index b4725c627c5..fc16d91673b 100644 --- a/web/i18n/zh-Hant/common.json +++ b/web/i18n/zh-Hant/common.json @@ -332,6 +332,7 @@ "modelProvider.auth.manageCredentials": "管理憑證", "modelProvider.auth.modelCredential": "模型認證", "modelProvider.auth.modelCredentials": "模型憑證", + "modelProvider.auth.openAIResponsesAPITip": "使用 GPT-5.6 及以上模型時,建議使用 Responses API。", "modelProvider.auth.providerManaged": "供應商管理", "modelProvider.auth.providerManagedTip": "當前的配置由提供者主辦。", "modelProvider.auth.removeModel": "移除模型",