mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
Deprecate free grok 4 fast (#8481)
Co-authored-by: ellipsis-dev[bot] <65095814+ellipsis-dev[bot]@users.noreply.github.com>
This commit is contained in:
parent
8622d93f59
commit
7ba8e33d03
23 changed files with 271 additions and 18 deletions
|
|
@ -76,6 +76,8 @@ export const modelInfoSchema = z.object({
|
|||
minTokensPerCachePoint: z.number().optional(),
|
||||
maxCachePoints: z.number().optional(),
|
||||
cachableFields: z.array(z.string()).optional(),
|
||||
// Flag to indicate if the model is deprecated and should not be used
|
||||
deprecated: z.boolean().optional(),
|
||||
/**
|
||||
* Service tiers with pricing information.
|
||||
* Each tier can have a name (for OpenAI service tiers) and pricing overrides.
|
||||
|
|
|
|||
|
|
@ -38,6 +38,7 @@ export const rooModels = {
|
|||
outputPrice: 0,
|
||||
description:
|
||||
"Grok 4 Fast is xAI's latest multimodal model with SOTA cost-efficiency and a 2M token context window. (Note: prompts and completions are logged by xAI and used to improve the model.)",
|
||||
deprecated: true,
|
||||
},
|
||||
"deepseek/deepseek-chat-v3.1": {
|
||||
maxTokens: 16_384,
|
||||
|
|
|
|||
|
|
@ -263,15 +263,24 @@ const ApiOptions = ({
|
|||
|
||||
const filteredModels = filterModels(models, selectedProvider, organizationAllowList)
|
||||
|
||||
const modelOptions = filteredModels
|
||||
? Object.keys(filteredModels).map((modelId) => ({
|
||||
value: modelId,
|
||||
label: modelId,
|
||||
}))
|
||||
// Include the currently selected model even if deprecated (so users can see what they have selected)
|
||||
// But filter out other deprecated models from being newly selectable
|
||||
const availableModels = filteredModels
|
||||
? Object.entries(filteredModels)
|
||||
.filter(([modelId, modelInfo]) => {
|
||||
// Always include the currently selected model
|
||||
if (modelId === selectedModelId) return true
|
||||
// Filter out deprecated models that aren't currently selected
|
||||
return !modelInfo.deprecated
|
||||
})
|
||||
.map(([modelId]) => ({
|
||||
value: modelId,
|
||||
label: modelId,
|
||||
}))
|
||||
: []
|
||||
|
||||
return modelOptions
|
||||
}, [selectedProvider, organizationAllowList])
|
||||
return availableModels
|
||||
}, [selectedProvider, organizationAllowList, selectedModelId])
|
||||
|
||||
const onProviderChange = useCallback(
|
||||
(value: ProviderName) => {
|
||||
|
|
@ -716,6 +725,11 @@ const ApiOptions = ({
|
|||
</Select>
|
||||
</div>
|
||||
|
||||
{/* Show error if a deprecated model is selected */}
|
||||
{selectedModelInfo?.deprecated && (
|
||||
<ApiErrorMessage errorMessage={t("settings:validation.modelDeprecated")} />
|
||||
)}
|
||||
|
||||
{selectedProvider === "bedrock" && selectedModelId === "custom-arn" && (
|
||||
<BedrockCustomArn
|
||||
apiConfiguration={apiConfiguration}
|
||||
|
|
@ -723,13 +737,16 @@ const ApiOptions = ({
|
|||
/>
|
||||
)}
|
||||
|
||||
<ModelInfoView
|
||||
apiProvider={selectedProvider}
|
||||
selectedModelId={selectedModelId}
|
||||
modelInfo={selectedModelInfo}
|
||||
isDescriptionExpanded={isDescriptionExpanded}
|
||||
setIsDescriptionExpanded={setIsDescriptionExpanded}
|
||||
/>
|
||||
{/* Only show model info if not deprecated */}
|
||||
{!selectedModelInfo?.deprecated && (
|
||||
<ModelInfoView
|
||||
apiProvider={selectedProvider}
|
||||
selectedModelId={selectedModelId}
|
||||
modelInfo={selectedModelInfo}
|
||||
isDescriptionExpanded={isDescriptionExpanded}
|
||||
setIsDescriptionExpanded={setIsDescriptionExpanded}
|
||||
/>
|
||||
)}
|
||||
</>
|
||||
)}
|
||||
|
||||
|
|
|
|||
|
|
@ -75,13 +75,30 @@ export const ModelPicker = ({
|
|||
const selectTimeoutRef = useRef<NodeJS.Timeout | null>(null)
|
||||
const closeTimeoutRef = useRef<NodeJS.Timeout | null>(null)
|
||||
|
||||
const { id: selectedModelId, info: selectedModelInfo } = useSelectedModel(apiConfiguration)
|
||||
|
||||
const modelIds = useMemo(() => {
|
||||
const filteredModels = filterModels(models, apiConfiguration.apiProvider, organizationAllowList)
|
||||
|
||||
return Object.keys(filteredModels ?? {}).sort((a, b) => a.localeCompare(b))
|
||||
}, [models, apiConfiguration.apiProvider, organizationAllowList])
|
||||
// Include the currently selected model even if deprecated (so users can see what they have selected)
|
||||
// But filter out other deprecated models from being newly selectable
|
||||
const availableModels = Object.entries(filteredModels ?? {})
|
||||
.filter(([modelId, modelInfo]) => {
|
||||
// Always include the currently selected model
|
||||
if (modelId === selectedModelId) return true
|
||||
// Filter out deprecated models that aren't currently selected
|
||||
return !modelInfo.deprecated
|
||||
})
|
||||
.reduce(
|
||||
(acc, [modelId, modelInfo]) => {
|
||||
acc[modelId] = modelInfo
|
||||
return acc
|
||||
},
|
||||
{} as Record<string, ModelInfo>,
|
||||
)
|
||||
|
||||
const { id: selectedModelId, info: selectedModelInfo } = useSelectedModel(apiConfiguration)
|
||||
return Object.keys(availableModels).sort((a, b) => a.localeCompare(b))
|
||||
}, [models, apiConfiguration.apiProvider, organizationAllowList, selectedModelId])
|
||||
|
||||
const [searchValue, setSearchValue] = useState("")
|
||||
|
||||
|
|
@ -225,7 +242,10 @@ export const ModelPicker = ({
|
|||
</Popover>
|
||||
</div>
|
||||
{errorMessage && <ApiErrorMessage errorMessage={errorMessage} />}
|
||||
{selectedModelId && selectedModelInfo && (
|
||||
{selectedModelInfo?.deprecated && (
|
||||
<ApiErrorMessage errorMessage={t("settings:validation.modelDeprecated")} />
|
||||
)}
|
||||
{selectedModelId && selectedModelInfo && !selectedModelInfo.deprecated && (
|
||||
<ModelInfoView
|
||||
apiProvider={apiConfiguration.apiProvider}
|
||||
selectedModelId={selectedModelId}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,195 @@
|
|||
// npx vitest src/components/settings/__tests__/ModelPicker.deprecated.spec.tsx
|
||||
|
||||
import { render, screen } from "@testing-library/react"
|
||||
import userEvent from "@testing-library/user-event"
|
||||
import { QueryClient, QueryClientProvider } from "@tanstack/react-query"
|
||||
import { describe, it, expect, vi, beforeEach } from "vitest"
|
||||
|
||||
import { ModelPicker } from "../ModelPicker"
|
||||
import type { ModelInfo } from "@roo-code/types"
|
||||
|
||||
// Mock the i18n module
|
||||
vi.mock("@src/i18n/TranslationContext", () => ({
|
||||
useAppTranslation: () => ({
|
||||
t: (key: string, options?: any) => {
|
||||
// Handle specific translation keys
|
||||
if (key === "settings:validation.modelDeprecated") {
|
||||
return "This model is no longer available. Please select a different model."
|
||||
}
|
||||
if (options) return `${key} ${JSON.stringify(options)}`
|
||||
return key
|
||||
},
|
||||
}),
|
||||
}))
|
||||
|
||||
// Mock the useSelectedModel hook
|
||||
vi.mock("@/components/ui/hooks/useSelectedModel", () => ({
|
||||
useSelectedModel: (apiConfiguration: any) => {
|
||||
const modelId = apiConfiguration?.openRouterModelId || "model-1"
|
||||
const models: Record<string, ModelInfo> = {
|
||||
"model-1": {
|
||||
maxTokens: 1000,
|
||||
contextWindow: 4000,
|
||||
supportsPromptCache: true,
|
||||
},
|
||||
"model-2": {
|
||||
maxTokens: 2000,
|
||||
contextWindow: 8000,
|
||||
supportsPromptCache: false,
|
||||
},
|
||||
"deprecated-model": {
|
||||
maxTokens: 1500,
|
||||
contextWindow: 6000,
|
||||
supportsPromptCache: true,
|
||||
deprecated: true,
|
||||
},
|
||||
}
|
||||
return {
|
||||
id: modelId,
|
||||
info: models[modelId],
|
||||
provider: "openrouter",
|
||||
isLoading: false,
|
||||
isError: false,
|
||||
}
|
||||
},
|
||||
}))
|
||||
|
||||
describe("ModelPicker - Deprecated Models", () => {
|
||||
const mockSetApiConfigurationField = vi.fn()
|
||||
const queryClient = new QueryClient({
|
||||
defaultOptions: {
|
||||
queries: { retry: false },
|
||||
},
|
||||
})
|
||||
|
||||
const regularModels: Record<string, ModelInfo> = {
|
||||
"model-1": {
|
||||
maxTokens: 1000,
|
||||
contextWindow: 4000,
|
||||
supportsPromptCache: true,
|
||||
},
|
||||
"model-2": {
|
||||
maxTokens: 2000,
|
||||
contextWindow: 8000,
|
||||
supportsPromptCache: false,
|
||||
},
|
||||
"deprecated-model": {
|
||||
maxTokens: 1500,
|
||||
contextWindow: 6000,
|
||||
supportsPromptCache: true,
|
||||
deprecated: true,
|
||||
},
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
vi.clearAllMocks()
|
||||
})
|
||||
|
||||
it("should filter out deprecated models from the dropdown", async () => {
|
||||
const user = userEvent.setup()
|
||||
|
||||
render(
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<ModelPicker
|
||||
defaultModelId="model-1"
|
||||
models={regularModels}
|
||||
modelIdKey="openRouterModelId"
|
||||
serviceName="Test Service"
|
||||
serviceUrl="https://test.com"
|
||||
apiConfiguration={{ apiProvider: "openrouter" }}
|
||||
setApiConfigurationField={mockSetApiConfigurationField}
|
||||
organizationAllowList={{ allowAll: true, providers: {} }}
|
||||
/>
|
||||
</QueryClientProvider>,
|
||||
)
|
||||
|
||||
// Open the dropdown
|
||||
const button = screen.getByTestId("model-picker-button")
|
||||
await user.click(button)
|
||||
|
||||
// Check that non-deprecated models are shown
|
||||
expect(screen.getByTestId("model-option-model-1")).toBeInTheDocument()
|
||||
expect(screen.getByTestId("model-option-model-2")).toBeInTheDocument()
|
||||
|
||||
// Check that deprecated model is NOT shown
|
||||
expect(screen.queryByTestId("model-option-deprecated-model")).not.toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("should show error when a deprecated model is currently selected", () => {
|
||||
render(
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<ModelPicker
|
||||
defaultModelId="deprecated-model"
|
||||
models={regularModels}
|
||||
modelIdKey="openRouterModelId"
|
||||
serviceName="Test Service"
|
||||
serviceUrl="https://test.com"
|
||||
apiConfiguration={{
|
||||
apiProvider: "openrouter",
|
||||
openRouterModelId: "deprecated-model",
|
||||
}}
|
||||
setApiConfigurationField={mockSetApiConfigurationField}
|
||||
organizationAllowList={{ allowAll: true, providers: {} }}
|
||||
/>
|
||||
</QueryClientProvider>,
|
||||
)
|
||||
|
||||
// Check that the error message is displayed
|
||||
expect(
|
||||
screen.getByText("This model is no longer available. Please select a different model."),
|
||||
).toBeInTheDocument()
|
||||
})
|
||||
|
||||
it("should allow selecting non-deprecated models", async () => {
|
||||
const user = userEvent.setup()
|
||||
|
||||
render(
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<ModelPicker
|
||||
defaultModelId="model-1"
|
||||
models={regularModels}
|
||||
modelIdKey="openRouterModelId"
|
||||
serviceName="Test Service"
|
||||
serviceUrl="https://test.com"
|
||||
apiConfiguration={{ apiProvider: "openrouter" }}
|
||||
setApiConfigurationField={mockSetApiConfigurationField}
|
||||
organizationAllowList={{ allowAll: true, providers: {} }}
|
||||
/>
|
||||
</QueryClientProvider>,
|
||||
)
|
||||
|
||||
// Open the dropdown
|
||||
const button = screen.getByTestId("model-picker-button")
|
||||
await user.click(button)
|
||||
|
||||
// Select a non-deprecated model
|
||||
const model2Option = screen.getByTestId("model-option-model-2")
|
||||
await user.click(model2Option)
|
||||
|
||||
// Verify the selection was made
|
||||
expect(mockSetApiConfigurationField).toHaveBeenCalledWith("openRouterModelId", "model-2")
|
||||
})
|
||||
|
||||
it("should not display model info for deprecated models", () => {
|
||||
render(
|
||||
<QueryClientProvider client={queryClient}>
|
||||
<ModelPicker
|
||||
defaultModelId="deprecated-model"
|
||||
models={regularModels}
|
||||
modelIdKey="openRouterModelId"
|
||||
serviceName="Test Service"
|
||||
serviceUrl="https://test.com"
|
||||
apiConfiguration={{
|
||||
apiProvider: "openrouter",
|
||||
openRouterModelId: "deprecated-model",
|
||||
}}
|
||||
setApiConfigurationField={mockSetApiConfigurationField}
|
||||
organizationAllowList={{ allowAll: true, providers: {} }}
|
||||
/>
|
||||
</QueryClientProvider>,
|
||||
)
|
||||
|
||||
// Model info should not be displayed for deprecated models
|
||||
expect(screen.queryByText("This is a deprecated model")).not.toBeInTheDocument()
|
||||
})
|
||||
})
|
||||
1
webview-ui/src/i18n/locales/ca/settings.json
generated
1
webview-ui/src/i18n/locales/ca/settings.json
generated
|
|
@ -824,6 +824,7 @@
|
|||
"regionMismatch": "Avís: La regió del vostre ARN ({{arnRegion}}) no coincideix amb la regió seleccionada ({{region}}). Això pot causar problemes d'accés. El proveïdor utilitzarà la regió de l'ARN."
|
||||
},
|
||||
"modelAvailability": "L'ID de model ({{modelId}}) que heu proporcionat no està disponible. Si us plau, trieu un altre model.",
|
||||
"modelDeprecated": "Aquest model ja no està disponible. Si us plau, seleccioneu un model diferent.",
|
||||
"providerNotAllowed": "El proveïdor '{{provider}}' no està permès per la vostra organització",
|
||||
"modelNotAllowed": "El model '{{model}}' no està permès per al proveïdor '{{provider}}' per la vostra organització",
|
||||
"profileInvalid": "Aquest perfil conté un proveïdor o model que no està permès per la vostra organització",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/de/settings.json
generated
1
webview-ui/src/i18n/locales/de/settings.json
generated
|
|
@ -824,6 +824,7 @@
|
|||
"regionMismatch": "Warnung: Die Region in deiner ARN ({{arnRegion}}) stimmt nicht mit deiner ausgewählten Region ({{region}}) überein. Dies kann zu Zugriffsproblemen führen. Der Anbieter wird die Region aus der ARN verwenden."
|
||||
},
|
||||
"modelAvailability": "Die von dir angegebene Modell-ID ({{modelId}}) ist nicht verfügbar. Bitte wähle ein anderes Modell.",
|
||||
"modelDeprecated": "Dieses Modell ist nicht mehr verfügbar. Bitte wähle ein anderes Modell.",
|
||||
"providerNotAllowed": "Anbieter '{{provider}}' ist von deiner Organisation nicht erlaubt",
|
||||
"modelNotAllowed": "Modell '{{model}}' ist für Anbieter '{{provider}}' von deiner Organisation nicht erlaubt",
|
||||
"profileInvalid": "Dieses Profil enthält einen Anbieter oder ein Modell, das von deiner Organisation nicht erlaubt ist",
|
||||
|
|
|
|||
|
|
@ -829,6 +829,7 @@
|
|||
"regionMismatch": "Warning: The region in your ARN ({{arnRegion}}) does not match your selected region ({{region}}). This may cause access issues. The provider will use the region from the ARN."
|
||||
},
|
||||
"modelAvailability": "The model ID ({{modelId}}) you provided is not available. Please choose a different model.",
|
||||
"modelDeprecated": "This model is no longer available. Please select a different model.",
|
||||
"providerNotAllowed": "Provider '{{provider}}' is not allowed by your organization",
|
||||
"modelNotAllowed": "Model '{{model}}' is not allowed for provider '{{provider}}' by your organization",
|
||||
"profileInvalid": "This profile contains a provider or model that is not allowed by your organization",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/es/settings.json
generated
1
webview-ui/src/i18n/locales/es/settings.json
generated
|
|
@ -824,6 +824,7 @@
|
|||
"regionMismatch": "Advertencia: La región en su ARN ({{arnRegion}}) no coincide con su región seleccionada ({{region}}). Esto puede causar problemas de acceso. El proveedor usará la región del ARN."
|
||||
},
|
||||
"modelAvailability": "El ID de modelo ({{modelId}}) que proporcionó no está disponible. Por favor, elija un modelo diferente.",
|
||||
"modelDeprecated": "Este modelo ya no está disponible. Por favor, elija un modelo diferente.",
|
||||
"providerNotAllowed": "El proveedor '{{provider}}' no está permitido por su organización",
|
||||
"modelNotAllowed": "El modelo '{{model}}' no está permitido para el proveedor '{{provider}}' por su organización",
|
||||
"profileInvalid": "Este perfil contiene un proveedor o modelo que no está permitido por su organización",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/fr/settings.json
generated
1
webview-ui/src/i18n/locales/fr/settings.json
generated
|
|
@ -824,6 +824,7 @@
|
|||
"regionMismatch": "Attention : La région dans votre ARN ({{arnRegion}}) ne correspond pas à votre région sélectionnée ({{region}}). Cela peut causer des problèmes d'accès. Le fournisseur utilisera la région de l'ARN."
|
||||
},
|
||||
"modelAvailability": "L'ID de modèle ({{modelId}}) que vous avez fourni n'est pas disponible. Veuillez choisir un modèle différent.",
|
||||
"modelDeprecated": "Ce modèle n'est plus disponible. Veuillez sélectionner un modèle différent.",
|
||||
"providerNotAllowed": "Le fournisseur '{{provider}}' n'est pas autorisé par votre organisation",
|
||||
"modelNotAllowed": "Le modèle '{{model}}' n'est pas autorisé pour le fournisseur '{{provider}}' par votre organisation",
|
||||
"profileInvalid": "Ce profil contient un fournisseur ou un modèle qui n'est pas autorisé par votre organisation",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/hi/settings.json
generated
1
webview-ui/src/i18n/locales/hi/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "चेतावनी: आपके ARN में क्षेत्र ({{arnRegion}}) आपके चयनित क्षेत्र ({{region}}) से मेल नहीं खाता। इससे पहुंच संबंधी समस्याएं हो सकती हैं। प्रदाता ARN से क्षेत्र का उपयोग करेगा।"
|
||||
},
|
||||
"modelAvailability": "आपके द्वारा प्रदान की गई मॉडल ID ({{modelId}}) उपलब्ध नहीं है। कृपया कोई अन्य मॉडल चुनें।",
|
||||
"modelDeprecated": "यह मॉडल अब उपलब्ध नहीं है। कृपया कोई अन्य मॉडल चुनें।",
|
||||
"providerNotAllowed": "प्रदाता '{{provider}}' आपके संगठन द्वारा अनुमत नहीं है",
|
||||
"modelNotAllowed": "मॉडल '{{model}}' प्रदाता '{{provider}}' के लिए आपके संगठन द्वारा अनुमत नहीं है",
|
||||
"profileInvalid": "इस प्रोफ़ाइल में एक प्रदाता या मॉडल शामिल है जो आपके संगठन द्वारा अनुमत नहीं है",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/id/settings.json
generated
1
webview-ui/src/i18n/locales/id/settings.json
generated
|
|
@ -854,6 +854,7 @@
|
|||
"regionMismatch": "Peringatan: Region di ARN kamu ({{arnRegion}}) tidak cocok dengan region yang kamu pilih ({{region}}). Ini dapat menyebabkan masalah akses. Provider akan menggunakan region dari ARN."
|
||||
},
|
||||
"modelAvailability": "Model ID ({{modelId}}) yang kamu berikan tidak tersedia. Silakan pilih model yang berbeda.",
|
||||
"modelDeprecated": "Model ini tidak lagi tersedia. Silakan pilih model yang berbeda.",
|
||||
"providerNotAllowed": "Provider '{{provider}}' tidak diizinkan oleh organisasi kamu",
|
||||
"modelNotAllowed": "Model '{{model}}' tidak diizinkan untuk provider '{{provider}}' oleh organisasi kamu",
|
||||
"profileInvalid": "Profil ini berisi provider atau model yang tidak diizinkan oleh organisasi kamu",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/it/settings.json
generated
1
webview-ui/src/i18n/locales/it/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Attenzione: La regione nel tuo ARN ({{arnRegion}}) non corrisponde alla regione selezionata ({{region}}). Questo potrebbe causare problemi di accesso. Il provider utilizzerà la regione dall'ARN."
|
||||
},
|
||||
"modelAvailability": "L'ID modello ({{modelId}}) fornito non è disponibile. Seleziona un modello diverso.",
|
||||
"modelDeprecated": "Questo modello non è più disponibile. Seleziona un modello diverso.",
|
||||
"providerNotAllowed": "Il fornitore '{{provider}}' non è consentito dalla tua organizzazione",
|
||||
"modelNotAllowed": "Il modello '{{model}}' non è consentito per il fornitore '{{provider}}' dalla tua organizzazione.",
|
||||
"profileInvalid": "Questo profilo contiene un fornitore o un modello non consentito dalla tua organizzazione.",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/ja/settings.json
generated
1
webview-ui/src/i18n/locales/ja/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "警告:ARN内のリージョン({{arnRegion}})が選択したリージョン({{region}})と一致しません。これによりアクセスの問題が発生する可能性があります。プロバイダーはARNのリージョンを使用します。"
|
||||
},
|
||||
"modelAvailability": "指定されたモデルID({{modelId}})は利用できません。別のモデルを選択してください。",
|
||||
"modelDeprecated": "このモデルは利用できなくなりました。別のモデルを選択してください。",
|
||||
"providerNotAllowed": "プロバイダー「{{provider}}」は組織によって許可されていません",
|
||||
"modelNotAllowed": "モデル「{{model}}」はプロバイダー「{{provider}}」に対して組織によって許可されていません",
|
||||
"profileInvalid": "このプロファイルには、組織によって許可されていないプロバイダーまたはモデルが含まれています",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/ko/settings.json
generated
1
webview-ui/src/i18n/locales/ko/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "경고: ARN의 리전({{arnRegion}})이 선택한 리전({{region}})과 일치하지 않습니다. 접근 문제가 발생할 수 있습니다. 제공자는 ARN의 리전을 사용합니다."
|
||||
},
|
||||
"modelAvailability": "제공한 모델 ID({{modelId}})를 사용할 수 없습니다. 다른 모델을 선택하세요.",
|
||||
"modelDeprecated": "이 모델은 더 이상 사용할 수 없습니다. 다른 모델을 선택하세요.",
|
||||
"providerNotAllowed": "제공자 '{{provider}}'는 조직에서 허용되지 않습니다",
|
||||
"modelNotAllowed": "모델 '{{model}}'은 제공자 '{{provider}}'에 대해 조직에서 허용되지 않습니다",
|
||||
"profileInvalid": "이 프로필에는 조직에서 허용되지 않는 제공자 또는 모델이 포함되어 있습니다",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/nl/settings.json
generated
1
webview-ui/src/i18n/locales/nl/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Waarschuwing: De regio in je ARN ({{arnRegion}}) komt niet overeen met je geselecteerde regio ({{region}}). Dit kan toegangsfouten veroorzaken. De provider gebruikt de regio uit de ARN."
|
||||
},
|
||||
"modelAvailability": "Het opgegeven model-ID ({{modelId}}) is niet beschikbaar. Kies een ander model.",
|
||||
"modelDeprecated": "Dit model is niet meer beschikbaar. Kies een ander model.",
|
||||
"providerNotAllowed": "Provider '{{provider}}' is niet toegestaan door je organisatie",
|
||||
"modelNotAllowed": "Model '{{model}}' is niet toegestaan voor provider '{{provider}}' door je organisatie",
|
||||
"profileInvalid": "Dit profiel bevat een provider of model dat niet is toegestaan door je organisatie",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/pl/settings.json
generated
1
webview-ui/src/i18n/locales/pl/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Ostrzeżenie: Region w Twoim ARN ({{arnRegion}}) nie zgadza się z wybranym regionem ({{region}}). Może to powodować problemy z dostępem. Dostawca użyje regionu z ARN."
|
||||
},
|
||||
"modelAvailability": "Podane ID modelu ({{modelId}}) jest niedostępne. Wybierz inny model.",
|
||||
"modelDeprecated": "Ten model nie jest już dostępny. Wybierz inny model.",
|
||||
"providerNotAllowed": "Dostawca '{{provider}}' nie jest dozwolony przez Twoją organizację",
|
||||
"modelNotAllowed": "Model '{{model}}' nie jest dozwolony dla dostawcy '{{provider}}' przez Twoją organizację",
|
||||
"profileInvalid": "Ten profil zawiera dostawcę lub model, który nie jest dozwolony przez Twoją organizację",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/pt-BR/settings.json
generated
1
webview-ui/src/i18n/locales/pt-BR/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Aviso: A região em seu ARN ({{arnRegion}}) não corresponde à região selecionada ({{region}}). Isso pode causar problemas de acesso. O provedor usará a região do ARN."
|
||||
},
|
||||
"modelAvailability": "O ID do modelo ({{modelId}}) que você forneceu não está disponível. Por favor, escolha outro modelo.",
|
||||
"modelDeprecated": "Este modelo não está mais disponível. Por favor, selecione um modelo diferente.",
|
||||
"providerNotAllowed": "O provedor '{{provider}}' não é permitido pela sua organização",
|
||||
"modelNotAllowed": "O modelo '{{model}}' não é permitido para o provedor '{{provider}}' pela sua organização",
|
||||
"profileInvalid": "Este perfil contém um provedor ou modelo que não é permitido pela sua organização",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/ru/settings.json
generated
1
webview-ui/src/i18n/locales/ru/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Внимание: регион в вашем ARN ({{arnRegion}}) не совпадает с выбранным регионом ({{region}}). Это может вызвать проблемы с доступом. Провайдер будет использовать регион из ARN."
|
||||
},
|
||||
"modelAvailability": "ID модели ({{modelId}}), который вы указали, недоступен. Пожалуйста, выберите другую модель.",
|
||||
"modelDeprecated": "Эта модель больше недоступна. Пожалуйста, выберите другую модель.",
|
||||
"providerNotAllowed": "Провайдер '{{provider}}' не разрешен вашей организацией",
|
||||
"modelNotAllowed": "Модель '{{model}}' не разрешена для провайдера '{{provider}}' вашей организацией",
|
||||
"profileInvalid": "Этот профиль содержит провайдера или модель, которые не разрешены вашей организацией",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/tr/settings.json
generated
1
webview-ui/src/i18n/locales/tr/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Uyarı: ARN'nizdeki bölge ({{arnRegion}}) seçtiğiniz bölge ({{region}}) ile eşleşmiyor. Bu erişim sorunlarına neden olabilir. Sağlayıcı, ARN'deki bölgeyi kullanacak."
|
||||
},
|
||||
"modelAvailability": "Sağladığınız model kimliği ({{modelId}}) kullanılamıyor. Lütfen başka bir model seçin.",
|
||||
"modelDeprecated": "Bu model artık kullanılamıyor. Lütfen farklı bir model seçin.",
|
||||
"providerNotAllowed": "Sağlayıcı '{{provider}}' kuruluşunuz tarafından izin verilmiyor",
|
||||
"modelNotAllowed": "Model '{{model}}' sağlayıcı '{{provider}}' için kuruluşunuz tarafından izin verilmiyor",
|
||||
"profileInvalid": "Bu profil, kuruluşunuz tarafından izin verilmeyen bir sağlayıcı veya model içeriyor",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/vi/settings.json
generated
1
webview-ui/src/i18n/locales/vi/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "Cảnh báo: Vùng trong ARN của bạn ({{arnRegion}}) không khớp với vùng bạn đã chọn ({{region}}). Điều này có thể gây ra vấn đề truy cập. Nhà cung cấp sẽ sử dụng vùng từ ARN."
|
||||
},
|
||||
"modelAvailability": "ID mô hình ({{modelId}}) bạn đã cung cấp không khả dụng. Vui lòng chọn một mô hình khác.",
|
||||
"modelDeprecated": "Mô hình này không còn khả dụng. Vui lòng chọn một mô hình khác.",
|
||||
"providerNotAllowed": "Nhà cung cấp '{{provider}}' không được phép bởi tổ chức của bạn",
|
||||
"modelNotAllowed": "Mô hình '{{model}}' không được phép cho nhà cung cấp '{{provider}}' bởi tổ chức của bạn",
|
||||
"profileInvalid": "Hồ sơ này chứa một nhà cung cấp hoặc mô hình không được phép bởi tổ chức của bạn",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/zh-CN/settings.json
generated
1
webview-ui/src/i18n/locales/zh-CN/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "警告:您的 ARN 中的区域 ({{arnRegion}}) 与您选择的区域 ({{region}}) 不匹配。这可能会导致访问问题。提供程序将使用 ARN 中的区域。"
|
||||
},
|
||||
"modelAvailability": "模型ID {{modelId}} 不可用,请重新选择",
|
||||
"modelDeprecated": "此模型不再可用,请选择其他模型。",
|
||||
"providerNotAllowed": "提供商 '{{provider}}' 不允许用于您的组织",
|
||||
"modelNotAllowed": "模型 '{{model}}' 不允许用于提供商 '{{provider}}',您的组织不允许",
|
||||
"profileInvalid": "此配置文件包含您的组织不允许的提供商或模型",
|
||||
|
|
|
|||
1
webview-ui/src/i18n/locales/zh-TW/settings.json
generated
1
webview-ui/src/i18n/locales/zh-TW/settings.json
generated
|
|
@ -825,6 +825,7 @@
|
|||
"regionMismatch": "警告:您 ARN 中的區域 ({{arnRegion}}) 與您選擇的區域 ({{region}}) 不符,可能導致存取問題。系統將使用 ARN 中指定的區域。"
|
||||
},
|
||||
"modelAvailability": "您指定的模型 ID ({{modelId}}) 目前無法使用,請選擇其他模型。",
|
||||
"modelDeprecated": "此模型已停用,請選擇其他模型。",
|
||||
"providerNotAllowed": "供應商 '{{provider}}' 不允許用於您的組織。",
|
||||
"modelNotAllowed": "模型 '{{model}}' 不允許用於供應商 '{{provider}}',您的組織不允許",
|
||||
"profileInvalid": "此設定檔包含您的組織不允許的供應商或模型",
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue