feat: add custom/other OpenAI-compatible LLM providers
Allow Settings → Providers to define custom providers (id, name, base URL, API key, models, headers) without code changes. Persist config via OpenCode layers, store keys through auth.set, and keep web/VS Code parity. Co-authored-by: Serhii Dziupin <makeittech@users.noreply.github.com>
This commit is contained in:
co-authored by
Serhii Dziupin
parent
5d24d6cb2a
commit
be87e25c7d
@@ -1301,6 +1301,46 @@ export const settingsDict = {
|
||||
"settings.providers.page.connect.searchProvidersPlaceholder": "Пошук...",
|
||||
"settings.providers.page.connect.noProvidersFound": "Немає провайдерів",
|
||||
"settings.providers.page.connect.allProvidersConnected": "Усі провайдери підключені.",
|
||||
"settings.providers.page.custom.optionLabel": "Інший / Власний",
|
||||
"settings.providers.page.custom.title": "Власний провайдер",
|
||||
"settings.providers.page.custom.description": "Додайте OpenAI-сумісного провайдера з базовою URL-адресою, обліковими даними та списком моделей. Зберігається в конфігурації OpenCode й працює в чаті як будь-який інший провайдер.",
|
||||
"settings.providers.page.custom.field.providerID.label": "ID провайдера",
|
||||
"settings.providers.page.custom.field.providerID.placeholder": "mij-provider",
|
||||
"settings.providers.page.custom.field.providerID.info": "Малі літери, цифри, дефіси та підкреслення. Використовується як ID провайдера OpenCode.",
|
||||
"settings.providers.page.custom.field.name.label": "Відображувана назва",
|
||||
"settings.providers.page.custom.field.name.placeholder": "Мій провайдер",
|
||||
"settings.providers.page.custom.field.name.info": "Показується у виборі провайдера та моделі.",
|
||||
"settings.providers.page.custom.field.baseURL.label": "Базова URL-адреса",
|
||||
"settings.providers.page.custom.field.baseURL.placeholder": "https://api.example.com/v1",
|
||||
"settings.providers.page.custom.field.baseURL.info": "Базова URL-адреса OpenAI-сумісного API. Має починатися з http:// або https://.",
|
||||
"settings.providers.page.custom.field.apiKey.label": "API-ключ",
|
||||
"settings.providers.page.custom.field.apiKey.placeholder": "sk-... або {env:VAR_NAME}",
|
||||
"settings.providers.page.custom.field.apiKey.info": "Зберігається в автентифікації OpenCode, не OpenChamber. Використовуйте {env:VAR_NAME}, щоб читати ключ зі змінної середовища.",
|
||||
"settings.providers.page.custom.models.title": "Моделі",
|
||||
"settings.providers.page.custom.models.idLabel": "ID моделі",
|
||||
"settings.providers.page.custom.models.idPlaceholder": "gpt-4o",
|
||||
"settings.providers.page.custom.models.nameLabel": "Назва моделі",
|
||||
"settings.providers.page.custom.models.namePlaceholder": "GPT-4o",
|
||||
"settings.providers.page.custom.models.add": "Додати модель",
|
||||
"settings.providers.page.custom.models.remove": "Видалити модель",
|
||||
"settings.providers.page.custom.headers.title": "Заголовки",
|
||||
"settings.providers.page.custom.headers.description": "Необов’язкові заголовки запиту, що надсилаються з кожним викликом.",
|
||||
"settings.providers.page.custom.headers.keyLabel": "Назва заголовка",
|
||||
"settings.providers.page.custom.headers.keyPlaceholder": "X-Custom-Header",
|
||||
"settings.providers.page.custom.headers.valueLabel": "Значення заголовка",
|
||||
"settings.providers.page.custom.headers.valuePlaceholder": "значення",
|
||||
"settings.providers.page.custom.headers.add": "Додати заголовок",
|
||||
"settings.providers.page.custom.headers.remove": "Видалити заголовок",
|
||||
"settings.providers.page.custom.actions.back": "Назад",
|
||||
"settings.providers.page.custom.actions.save": "Зберегти провайдера",
|
||||
"settings.providers.page.custom.error.providerID.required": "ID провайдера обов’язковий",
|
||||
"settings.providers.page.custom.error.providerID.format": "Використовуйте малі літери, цифри, дефіси або підкреслення",
|
||||
"settings.providers.page.custom.error.providerID.exists": "Провайдер із цим ID уже підключено",
|
||||
"settings.providers.page.custom.error.name.required": "Відображувана назва обов’язкова",
|
||||
"settings.providers.page.custom.error.baseURL.required": "Базова URL-адреса обов’язкова",
|
||||
"settings.providers.page.custom.error.baseURL.format": "Базова URL-адреса має починатися з http:// або https://",
|
||||
"settings.providers.page.custom.error.required": "Обов’язково",
|
||||
"settings.providers.page.custom.error.duplicate": "Дублікат",
|
||||
"settings.providers.page.auth.title": "Аутентифікація",
|
||||
"settings.providers.page.auth.loadingMethods": "Завантаження методів автентифікації...",
|
||||
"settings.providers.page.auth.apiKeyLabel": "API ключ",
|
||||
@@ -1358,6 +1398,8 @@ export const settingsDict = {
|
||||
"settings.providers.page.toast.deviceCodeCopyFailed": "Не вдалося скопіювати код пристрою",
|
||||
"settings.providers.page.toast.providerDisconnected": "Провайдера відключено",
|
||||
"settings.providers.page.toast.providerDisconnectFailed": "Не вдалося відключити провайдера",
|
||||
"settings.providers.page.toast.customProviderSaved": "{provider} підключено",
|
||||
"settings.providers.page.toast.customProviderSaveFailed": "Не вдалося зберегти власного провайдера",
|
||||
"settings.mcp.page.empty.selectServer": "Виберіть MCP сервер на бічній панелі",
|
||||
"settings.mcp.page.empty.addNewOne": "або додати новий",
|
||||
"settings.mcp.page.header.newServer": "Новий сервер MCP",
|
||||
|
||||
Reference in New Issue
Block a user