chore(i18n): refresh uk translations
This commit is contained in:
parent
6790d84e9d
commit
d14e7db2bf
@ -1,26 +1,26 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете обслуговувати моделі з власного сервера з GPU
|
||||
- Ви налаштовуєте LM Studio або OpenAI-сумісний проксі
|
||||
- Ви хочете розміщувати моделі на власному GPU-сервері
|
||||
- Ви налаштовуєте LM Studio або OpenAI-сумісний проксі-сервер
|
||||
- Вам потрібні найбезпечніші рекомендації щодо локальних моделей
|
||||
summary: Запуск OpenClaw на локальних LLM (LM Studio, vLLM, LiteLLM, власні кінцеві точки OpenAI)
|
||||
summary: Запустіть OpenClaw на локальних LLM (LM Studio, vLLM, LiteLLM, власні кінцеві точки OpenAI)
|
||||
title: Локальні моделі
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T08:31:12Z"
|
||||
generated_at: "2026-04-27T09:35:36Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 0e2733bd1d6f9e57f0b0fb888d28beebff321d12684a6ea670bee327d2ced8dc
|
||||
source_hash: 9a3f013bba75ddcb17d7213c2b657d39465231429fd46c4235dcfdfee2a9541c
|
||||
source_path: gateway/local-models.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Локальний запуск можливий, але OpenClaw очікує великий контекст і надійний захист від інʼєкцій у промпти. Невеликі відеокарти обрізають контекст і послаблюють безпеку. Орієнтуйтеся на високий рівень: **≥2 повністю укомплектовані Mac Studio або еквівалентна GPU-система (~$30k+)**. Одна GPU на **24 GB** підходить лише для простіших запитів із вищою затримкою. Використовуйте **найбільший / повнорозмірний варіант моделі, який можете запустити**; агресивно квантизовані або “small” чекпойнти підвищують ризик інʼєкцій у промпти (див. [Безпека](/uk/gateway/security)).
|
||||
Локальний запуск можливий, але OpenClaw очікує великий контекст + сильний захист від інʼєкцій у промпт. Малі карти обрізають контекст і погіршують безпеку. Орієнтуйтеся на високий рівень: **≥2 Mac Studio з максимальними характеристиками або еквівалентна GPU-система (~$30k+)**. Одна GPU на **24 GB** підходить лише для легших промптів із вищою затримкою. Використовуйте **найбільший / повнорозмірний варіант моделі, який можете запустити**; агресивно квантизовані або “small” чекпоїнти підвищують ризик інʼєкцій у промпт (див. [Безпека](/uk/gateway/security)).
|
||||
|
||||
Якщо вам потрібне локальне налаштування з найменшими труднощами, почніть із [LM Studio](/uk/providers/lmstudio) або [Ollama](/uk/providers/ollama) і `openclaw onboard`. Ця сторінка — рекомендаційний посібник для локальних стеків вищого класу та власних локальних серверів, сумісних з OpenAI.
|
||||
Якщо вам потрібне найменш складне локальне налаштування, почніть із [LM Studio](/uk/providers/lmstudio) або [Ollama](/uk/providers/ollama) і `openclaw onboard`. Ця сторінка — практичний посібник для потужніших локальних стеків і власних локальних серверів, сумісних з OpenAI.
|
||||
|
||||
## Рекомендовано: LM Studio + велика локальна модель (Responses API)
|
||||
|
||||
Найкращий актуальний локальний стек. Завантажте велику модель у LM Studio (наприклад, повнорозмірну збірку Qwen, DeepSeek або Llama), увімкніть локальний сервер (типово `http://127.0.0.1:1234`) і використовуйте Responses API, щоб відокремити міркування від фінального тексту.
|
||||
Найкращий поточний локальний стек. Завантажте велику модель у LM Studio (наприклад, повнорозмірну збірку Qwen, DeepSeek або Llama), увімкніть локальний сервер (типово `http://127.0.0.1:1234`) і використовуйте Responses API, щоб відокремити міркування від фінального тексту.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -60,15 +60,15 @@ x-i18n:
|
||||
**Контрольний список налаштування**
|
||||
|
||||
- Встановіть LM Studio: [https://lmstudio.ai](https://lmstudio.ai)
|
||||
- У LM Studio завантажте **найбільшу доступну збірку моделі** (уникайте варіантів “small” і сильно квантизованих), запустіть сервер, переконайтеся, що `http://127.0.0.1:1234/v1/models` її показує.
|
||||
- Замініть `my-local-model` на фактичний ідентифікатор моделі, показаний у LM Studio.
|
||||
- У LM Studio завантажте **найбільшу доступну збірку моделі** (уникайте “small”/сильно квантизованих варіантів), запустіть сервер, переконайтеся, що `http://127.0.0.1:1234/v1/models` показує її в списку.
|
||||
- Замініть `my-local-model` на фактичний ID моделі, показаний у LM Studio.
|
||||
- Тримайте модель завантаженою; холодне завантаження додає затримку запуску.
|
||||
- Скоригуйте `contextWindow`/`maxTokens`, якщо ваша збірка LM Studio відрізняється.
|
||||
- Для WhatsApp дотримуйтеся Responses API, щоб надсилався лише фінальний текст.
|
||||
- Для WhatsApp використовуйте лише Responses API, щоб надсилався тільки фінальний текст.
|
||||
|
||||
Залишайте хостингові моделі налаштованими навіть під час локальної роботи; використовуйте `models.mode: "merge"`, щоб запасні варіанти залишалися доступними.
|
||||
Тримайте хостовані моделі налаштованими навіть під час локального запуску; використовуйте `models.mode: "merge"`, щоб запасні варіанти залишалися доступними.
|
||||
|
||||
### Гібридна конфігурація: хостингова основна модель, локальна запасна
|
||||
### Гібридна конфігурація: основна хостована модель, локальна запасна
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -109,18 +109,18 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
### Спочатку локальна модель, із хостинговою страховкою
|
||||
### Локальний пріоритет із хостованою страховкою
|
||||
|
||||
Поміняйте місцями основну модель і порядок запасних; залиште той самий блок providers і `models.mode: "merge"`, щоб можна було переключитися на Sonnet або Opus, коли локальний сервер недоступний.
|
||||
Поміняйте місцями основну модель і запасні; збережіть той самий блок providers і `models.mode: "merge"`, щоб мати змогу переключитися на Sonnet або Opus, коли локальний сервер недоступний.
|
||||
|
||||
### Регіональний хостинг / маршрутизація даних
|
||||
|
||||
- Хостингові варіанти MiniMax/Kimi/GLM також доступні в OpenRouter з кінцевими точками, привʼязаними до регіону (наприклад, хостинг у США). Виберіть там регіональний варіант, щоб зберігати трафік у вибраній юрисдикції, і водночас використовуйте `models.mode: "merge"` для запасних варіантів Anthropic/OpenAI.
|
||||
- Лише локальний режим залишається найсильнішим шляхом для приватності; регіональна маршрутизація хостингових моделей — це компромісний варіант, коли вам потрібні можливості провайдера, але ви хочете контролювати потік даних.
|
||||
- Хостовані варіанти MiniMax/Kimi/GLM також доступні в OpenRouter з кінцевими точками, привʼязаними до регіону (наприклад, хостинг у США). Виберіть там регіональний варіант, щоб трафік залишався у вибраній вами юрисдикції, і водночас використовуйте `models.mode: "merge"` для запасних варіантів Anthropic/OpenAI.
|
||||
- Лише локальний запуск залишається найсильнішим варіантом для приватності; хостована регіональна маршрутизація — це компромісний варіант, коли вам потрібні можливості провайдера, але ви хочете контролювати потік даних.
|
||||
|
||||
## Інші локальні проксі, сумісні з OpenAI
|
||||
|
||||
vLLM, LiteLLM, OAI-proxy або власні шлюзи підходять, якщо вони надають кінцеву точку `/v1` у стилі OpenAI. Замініть блок provider вище на свою кінцеву точку та ідентифікатор моделі:
|
||||
vLLM, LiteLLM, OAI-proxy або власні шлюзи працюють, якщо вони надають кінцеву точку `/v1` у стилі OpenAI. Замініть блок provider вище на свою кінцеву точку та ID моделі:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -149,37 +149,63 @@ vLLM, LiteLLM, OAI-proxy або власні шлюзи підходять, як
|
||||
}
|
||||
```
|
||||
|
||||
Залишайте `models.mode: "merge"`, щоб хостингові моделі були доступні як запасні.
|
||||
Використовуйте `models.providers.<id>.timeoutSeconds` для повільних локальних або віддалених серверів моделей, перш ніж збільшувати `agents.defaults.timeoutSeconds`. Тайм-аут провайдера застосовується лише до HTTP-запитів моделі, включно з підключенням, заголовками, потоковою передачею тіла та загальним guarded-fetch abort.
|
||||
Зберігайте `models.mode: "merge"`, щоб хостовані моделі залишалися доступними як запасні.
|
||||
Використовуйте `models.providers.<id>.timeoutSeconds` для повільних локальних або віддалених серверів моделей, перш ніж збільшувати `agents.defaults.timeoutSeconds`. Таймаут провайдера застосовується лише до HTTP-запитів до моделі, включно з підключенням, заголовками, потоковим передаванням тіла та загальним guarded-fetch abort.
|
||||
|
||||
Примітка щодо поведінки локальних/проксійованих бекендів `/v1`:
|
||||
Примітка щодо поведінки для локальних/проксійованих бекендів `/v1`:
|
||||
|
||||
- OpenClaw розглядає їх як проксі-маршрути, сумісні з OpenAI, а не як нативні кінцеві точки OpenAI
|
||||
- тут не застосовується формування запитів, яке працює лише для нативного OpenAI: без `service_tier`, без Responses `store`, без формування payload для сумісності з міркуваннями OpenAI і без підказок кешу промптів
|
||||
- приховані службові заголовки OpenClaw (`originator`, `version`, `User-Agent`) не додаються до цих власних проксі-URL
|
||||
- OpenClaw обробляє їх як проксі-маршрути, сумісні з OpenAI, а не як нативні кінцеві точки OpenAI
|
||||
- тут не застосовується формування запитів, специфічне лише для нативного OpenAI: без `service_tier`, без Responses `store`, без формування payload для сумісності з reasoning OpenAI і без підказок кешу промптів
|
||||
- приховані заголовки атрибуції OpenClaw (`originator`, `version`, `User-Agent`) не додаються на ці власні проксі-URL
|
||||
|
||||
Примітки щодо сумісності для суворіших OpenAI-сумісних бекендів:
|
||||
Примітки щодо сумісності для суворіших бекендів, сумісних з OpenAI:
|
||||
|
||||
- Деякі сервери приймають лише рядковий `messages[].content` у Chat Completions, а не структуровані масиви частин вмісту. Для таких кінцевих точок установіть `models.providers.<provider>.models[].compat.requiresStringContent: true`.
|
||||
- Деякі локальні моделі виводять окремі запити інструментів у дужках як текст, наприклад `[tool_name]`, потім JSON і `[END_TOOL_REQUEST]`. OpenClaw перетворює їх на реальні виклики інструментів лише тоді, коли назва точно збігається із зареєстрованим інструментом для цього ходу; інакше блок вважається непідтримуваним текстом і приховується від видимих користувачу відповідей.
|
||||
- Якщо модель виводить JSON, XML або текст у стилі ReAct, що виглядає як виклик інструмента, але провайдер не повернув структурований виклик, OpenClaw залишає це як текст і записує попередження з ідентифікатором запуску, провайдером/моделлю, виявленим шаблоном і назвою інструмента, якщо вона доступна. Розглядайте це як несумісність викликів інструментів у провайдера/моделі, а не як завершене виконання інструмента.
|
||||
- Деякі менші або суворіші локальні бекенди нестабільно працюють із повною формою промпта середовища агента OpenClaw, особливо коли включені схеми інструментів. Якщо бекенд працює для маленьких прямих викликів `/v1/chat/completions`, але не працює для звичайних ходів агента OpenClaw, спочатку спробуйте `agents.defaults.experimental.localModelLean: true`, щоб прибрати важкі інструменти за замовчуванням, такі як `browser`, `cron` і `message`; це експериментальний прапорець, а не стабільний параметр стандартного режиму. Див. [Експериментальні можливості](/uk/concepts/experimental-features). Якщо це не допоможе, спробуйте `models.providers.<provider>.models[].compat.supportsTools: false`.
|
||||
- Якщо бекенд і далі не працює лише на більших запусках OpenClaw, то решта проблеми зазвичай повʼязана з обмеженнями моделі/сервера на боці upstream або з помилкою бекенда, а не з транспортним рівнем OpenClaw.
|
||||
- Деякі сервери приймають лише рядковий `messages[].content` у Chat Completions, а не структуровані масиви частин контенту. Для таких кінцевих точок установіть `models.providers.<provider>.models[].compat.requiresStringContent: true`.
|
||||
- Деякі локальні моделі виводять окремі запити до інструментів у дужках як текст, наприклад `[tool_name]`, за яким ідуть JSON і `[END_TOOL_REQUEST]`. OpenClaw перетворює їх на справжні виклики інструментів лише тоді, коли назва точно збігається з зареєстрованим інструментом для цього ходу; інакше блок обробляється як непідтримуваний текст і приховується з відповідей, видимих користувачу.
|
||||
- Якщо модель виводить JSON, XML або текст у стилі ReAct, що виглядає як виклик інструмента, але провайдер не передав структурований виклик, OpenClaw залишає це як текст і записує попередження з id запуску, провайдером/моделлю, виявленим шаблоном і назвою інструмента, якщо вона доступна. Сприймайте це як несумісність виклику інструментів провайдера/моделі, а не як завершений запуск інструмента.
|
||||
- Для бекендів Chat Completions, сумісних з OpenAI, чий парсер інструментів працює лише за примусового використання інструментів, установіть перевизначення запиту для конкретної моделі замість покладання на текстовий парсинг:
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
models: {
|
||||
"local/my-local-model": {
|
||||
params: {
|
||||
extra_body: {
|
||||
tool_choice: "required",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це лише для моделей/сеансів, де кожен звичайний хід має викликати інструмент.
|
||||
Це перевизначає типове проксі-значення OpenClaw `tool_choice: "auto"`.
|
||||
|
||||
- Деякі менші або суворіші локальні бекенди нестабільно працюють із повною формою промптів середовища агента OpenClaw, особливо коли включено схеми інструментів. Якщо бекенд працює для крихітних прямих викликів `/v1/chat/completions`, але не працює для звичайних ходів агента OpenClaw, спочатку спробуйте `agents.defaults.experimental.localModelLean: true`, щоб прибрати важкі стандартні інструменти, такі як `browser`, `cron` і `message`; це експериментальний прапорець, а не стабільне налаштування режиму за замовчуванням. Див. [Експериментальні можливості](/uk/concepts/experimental-features). Якщо це все ще не допомагає, спробуйте `models.providers.<provider>.models[].compat.supportsTools: false`.
|
||||
- Якщо бекенд усе ще не працює лише на більших запусках OpenClaw, то залишкова проблема зазвичай повʼязана з можливостями моделі/сервера вгору за стеком або з багом бекенда, а не з транспортним рівнем OpenClaw.
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
- Gateway може дістатися до проксі? `curl http://127.0.0.1:1234/v1/models`.
|
||||
- Модель LM Studio вивантажена? Завантажте знову; холодний старт — поширена причина “зависання”.
|
||||
- Модель у LM Studio вивантажена? Завантажте знову; холодний старт — поширена причина “зависання”.
|
||||
- Локальний сервер повідомляє `terminated`, `ECONNRESET` або закриває потік посеред ходу?
|
||||
OpenClaw записує низькокардинальний `model.call.error.failureKind`, а також знімок RSS/heap процесу OpenClaw у діагностику. Для тиску на памʼять у LM Studio/Ollama зіставте цей час із журналом сервера або журналом аварій macOS / jetsam, щоб підтвердити, чи було вбито сервер моделі.
|
||||
- OpenClaw попереджає, коли виявлене вікно контексту нижче за **32k**, і блокує, якщо нижче за **16k**. Якщо ви натрапили на цю попередню перевірку, збільште ліміт контексту сервера/моделі або виберіть більшу модель.
|
||||
- Помилки контексту? Зменште `contextWindow` або збільште ліміт вашого сервера.
|
||||
OpenClaw записує `model.call.error.failureKind` з низькою кардинальністю, а також знімок RSS/heap процесу OpenClaw у діагностику. Для тиску на памʼять у LM Studio/Ollama зіставте цей час із журналом сервера або журналом збоїв macOS / jetsam, щоб підтвердити, чи було завершено сервер моделі.
|
||||
- OpenClaw попереджає, коли виявлене вікно контексту менше за **32k**, і блокує роботу нижче **16k**. Якщо ви натрапили на цю попередню перевірку, збільште ліміт контексту сервера/моделі або виберіть більшу модель.
|
||||
- Помилки контексту? Зменште `contextWindow` або збільште ліміт сервера.
|
||||
- OpenAI-сумісний сервер повертає `messages[].content ... expected a string`?
|
||||
Додайте `compat.requiresStringContent: true` у запис цієї моделі.
|
||||
- Прямі маленькі виклики `/v1/chat/completions` працюють, але `openclaw infer model run` не працює на Gemma або іншій локальній моделі? Спочатку вимкніть схеми інструментів через `compat.supportsTools: false`, а потім перевірте ще раз. Якщо сервер і далі аварійно завершується лише на більших промптах OpenClaw, розглядайте це як обмеження моделі/сервера на боці upstream.
|
||||
- Безпека: локальні моделі обходяться без фільтрів на боці провайдера; звужуйте агентів і тримайте увімкненим Compaction, щоб обмежити радіус ураження від інʼєкцій у промпти.
|
||||
Додайте `compat.requiresStringContent: true` до цього запису моделі.
|
||||
- Прямі крихітні виклики `/v1/chat/completions` працюють, але `openclaw infer model run`
|
||||
не працює з Gemma або іншою локальною моделлю? Спочатку вимкніть схеми інструментів через
|
||||
`compat.supportsTools: false`, потім перевірте ще раз. Якщо сервер усе ще падає лише
|
||||
на більших промптах OpenClaw, вважайте це обмеженням сервера/моделі вгору за стеком.
|
||||
- Безпека: локальні моделі обходять фільтри на боці провайдера; тримайте агентів вузькоспрямованими та вмикайте Compaction, щоб обмежити радіус ураження інʼєкцій у промпт.
|
||||
|
||||
## Повʼязане
|
||||
|
||||
- [Довідник з конфігурації](/uk/gateway/configuration-reference)
|
||||
- [Резервне перемикання моделей](/uk/concepts/model-failover)
|
||||
- [Довідник із конфігурації](/uk/gateway/configuration-reference)
|
||||
- [Відмовостійкість моделей](/uk/concepts/model-failover)
|
||||
|
||||
@ -1,45 +1,45 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете запустити OpenClaw з локальним сервером vLLM
|
||||
- Ви хочете використовувати сумісні з OpenAI ендпойнти `/v1` із власними моделями
|
||||
summary: Запустіть OpenClaw з vLLM (локальним сервером, сумісним з OpenAI)
|
||||
- Ви хочете OpenAI-сумісні ендпоінти `/v1` із власними моделями
|
||||
summary: Запуск OpenClaw з vLLM (сумісним з OpenAI локальним сервером)
|
||||
title: vLLM
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T04:34:13Z"
|
||||
generated_at: "2026-04-27T09:35:35Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 60d82c078af1e7565900eab879d30fe4e6c6ee4f3733df6f19d5f30d5cbd0b59
|
||||
source_hash: 4987a7809157b682fa6227ebde0ae8dcd2d7c5a29f19a9e30b5846771dd7ec38
|
||||
source_path: providers/vllm.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
vLLM може обслуговувати моделі з відкритим кодом (і деякі користувацькі) через **OpenAI-сумісний** HTTP API. OpenClaw підключається до vLLM за допомогою API `openai-completions`.
|
||||
vLLM може обслуговувати моделі з відкритим кодом (а також деякі кастомні) через **OpenAI-сумісний** HTTP API. OpenClaw підключається до vLLM за допомогою API `openai-completions`.
|
||||
|
||||
OpenClaw також може **автоматично виявляти** доступні моделі з vLLM, якщо ви явно вмикаєте це через `VLLM_API_KEY` (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації) і не визначаєте явний запис `models.providers.vllm`.
|
||||
OpenClaw також може **автоматично виявляти** доступні моделі з vLLM, якщо ви явно ввімкнете це за допомогою `VLLM_API_KEY` (підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації) і не визначите явний запис `models.providers.vllm`.
|
||||
|
||||
OpenClaw розглядає `vllm` як локального OpenAI-сумісного провайдера, який підтримує
|
||||
облік використання під час потокової передачі, тому кількість токенів у статусі/контексті може оновлюватися з
|
||||
OpenClaw розглядає `vllm` як локальний OpenAI-сумісний провайдер, який підтримує
|
||||
потоковий облік використання, тому лічильники токенів статусу/контексту можуть оновлюватися з
|
||||
відповідей `stream_options.include_usage`.
|
||||
|
||||
| Властивість | Значення |
|
||||
| ---------------- | ---------------------------------------- |
|
||||
| ID провайдера | `vllm` |
|
||||
| API | `openai-completions` (OpenAI-сумісний) |
|
||||
| Автентифікація | змінна середовища `VLLM_API_KEY` |
|
||||
| Базова URL за замовчуванням | `http://127.0.0.1:8000/v1` |
|
||||
| Властивість | Значення |
|
||||
| --------------- | ---------------------------------------- |
|
||||
| ID провайдера | `vllm` |
|
||||
| API | `openai-completions` (OpenAI-сумісний) |
|
||||
| Автентифікація | змінна середовища `VLLM_API_KEY` |
|
||||
| Базовий URL за замовчуванням | `http://127.0.0.1:8000/v1` |
|
||||
|
||||
## Початок роботи
|
||||
|
||||
<Steps>
|
||||
<Step title="Запустіть vLLM з OpenAI-сумісним сервером">
|
||||
Ваша базова URL має надавати ендпойнти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює на:
|
||||
Ваш базовий URL має надавати ендпоінти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює за адресою:
|
||||
|
||||
```
|
||||
http://127.0.0.1:8000/v1
|
||||
```
|
||||
|
||||
</Step>
|
||||
<Step title="Установіть змінну середовища для API-ключа">
|
||||
<Step title="Задайте змінну середовища ключа API">
|
||||
Підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації:
|
||||
|
||||
```bash
|
||||
@ -48,7 +48,7 @@ OpenClaw розглядає `vllm` як локального OpenAI-сумісн
|
||||
|
||||
</Step>
|
||||
<Step title="Виберіть модель">
|
||||
Замініть на один із ваших ID моделей vLLM:
|
||||
Замініть на один з ідентифікаторів моделей вашого vLLM:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -61,7 +61,7 @@ OpenClaw розглядає `vllm` як локального OpenAI-сумісн
|
||||
```
|
||||
|
||||
</Step>
|
||||
<Step title="Переконайтеся, що модель доступна">
|
||||
<Step title="Перевірте, що модель доступна">
|
||||
```bash
|
||||
openclaw models list --provider vllm
|
||||
```
|
||||
@ -70,16 +70,16 @@ OpenClaw розглядає `vllm` як локального OpenAI-сумісн
|
||||
|
||||
## Виявлення моделей (неявний провайдер)
|
||||
|
||||
Коли `VLLM_API_KEY` установлено (або існує профіль автентифікації) і ви **не** визначили `models.providers.vllm`, OpenClaw виконує запит:
|
||||
Коли задано `VLLM_API_KEY` (або існує профіль автентифікації) і ви **не** визначаєте `models.providers.vllm`, OpenClaw виконує запит:
|
||||
|
||||
```
|
||||
GET http://127.0.0.1:8000/v1/models
|
||||
```
|
||||
|
||||
і перетворює повернені ID на записи моделей.
|
||||
і перетворює повернуті ID на записи моделей.
|
||||
|
||||
<Note>
|
||||
Якщо ви явно задаєте `models.providers.vllm`, автоматичне виявлення пропускається, і ви маєте визначити моделі вручну.
|
||||
Якщо ви явно задаєте `models.providers.vllm`, автоматичне виявлення пропускається, і вам потрібно визначити моделі вручну.
|
||||
</Note>
|
||||
|
||||
## Явна конфігурація (ручне визначення моделей)
|
||||
@ -87,9 +87,9 @@ GET http://127.0.0.1:8000/v1/models
|
||||
Використовуйте явну конфігурацію, коли:
|
||||
|
||||
- vLLM працює на іншому хості або порту
|
||||
- ви хочете зафіксувати значення `contextWindow` або `maxTokens`
|
||||
- ваш сервер вимагає справжній API-ключ (або ви хочете керувати заголовками)
|
||||
- ви підключаєтеся до довіреного ендпойнта vLLM через local loopback, LAN або Tailscale
|
||||
- Ви хочете зафіксувати значення `contextWindow` або `maxTokens`
|
||||
- Ваш сервер вимагає справжній API-ключ (або ви хочете керувати заголовками)
|
||||
- Ви підключаєтеся до довіреного ендпоінта vLLM через local loopback, LAN або Tailscale
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -100,7 +100,7 @@ GET http://127.0.0.1:8000/v1/models
|
||||
apiKey: "${VLLM_API_KEY}",
|
||||
api: "openai-completions",
|
||||
request: { allowPrivateNetwork: true },
|
||||
timeoutSeconds: 300, // Необов’язково: збільшує тайм-аут підключення/заголовків/тіла/запиту для повільних локальних моделей
|
||||
timeoutSeconds: 300, // Необов’язково: збільшити час очікування підключення/заголовків/тіла/запиту для повільних локальних моделей
|
||||
models: [
|
||||
{
|
||||
id: "your-model-id",
|
||||
@ -123,22 +123,22 @@ GET http://127.0.0.1:8000/v1/models
|
||||
<AccordionGroup>
|
||||
<Accordion title="Поведінка в стилі проксі">
|
||||
vLLM розглядається як OpenAI-сумісний бекенд `/v1` у стилі проксі, а не як нативний
|
||||
ендпойнт OpenAI. Це означає:
|
||||
ендпоінт OpenAI. Це означає:
|
||||
|
||||
| Поведінка | Застосовується? |
|
||||
|----------|----------|
|
||||
| Нативне формування запитів OpenAI | Ні |
|
||||
| `service_tier` | Не надсилається |
|
||||
| Відповіді `store` | Не надсилаються |
|
||||
| Підказки кешу промптів | Не надсилаються |
|
||||
| Формування payload для сумісності з reasoning OpenAI | Не застосовується |
|
||||
| Приховані заголовки атрибуції OpenClaw | Не додаються для користувацьких базових URL |
|
||||
| Підказки кешу prompt | Не надсилаються |
|
||||
| Формування payload для сумісності OpenAI reasoning | Не застосовується |
|
||||
| Приховані заголовки атрибуції OpenClaw | Не додаються для кастомних базових URL |
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Керування thinking у Nemotron 3">
|
||||
vLLM/Nemotron 3 може використовувати kwargs шаблону чату, щоб керувати тим, чи reasoning
|
||||
повертається як прихований reasoning або як видимий текст відповіді. Коли сеанс OpenClaw
|
||||
vLLM/Nemotron 3 може використовувати kwargs шаблону чату, щоб керувати тим, чи
|
||||
reasoning повертається як приховане reasoning або як видимий текст відповіді. Коли сесія OpenClaw
|
||||
використовує `vllm/nemotron-3-*` з вимкненим thinking, OpenClaw надсилає:
|
||||
|
||||
```json
|
||||
@ -151,7 +151,7 @@ GET http://127.0.0.1:8000/v1/models
|
||||
```
|
||||
|
||||
Щоб налаштувати ці значення, задайте `chat_template_kwargs` у параметрах моделі.
|
||||
Якщо ви також задасте `params.extra_body.chat_template_kwargs`, це значення матиме
|
||||
Якщо ви також задаєте `params.extra_body.chat_template_kwargs`, це значення має
|
||||
остаточний пріоритет, оскільки `extra_body` є останнім перевизначенням тіла запиту.
|
||||
|
||||
```json5
|
||||
@ -175,7 +175,42 @@ GET http://127.0.0.1:8000/v1/models
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Користувацька базова URL">
|
||||
<Accordion title="Парсер викликів інструментів Qwen потребує required">
|
||||
Спершу переконайтеся, що vLLM було запущено з правильним парсером викликів інструментів і шаблоном чату
|
||||
для моделі. Наприклад, у документації vLLM вказано `hermes` для моделей Qwen2.5
|
||||
і `qwen3_xml` для моделей Qwen3-Coder.
|
||||
|
||||
Деякі комбінації Qwen/vLLM усе ще повертають сирий текст виклику інструмента або порожній
|
||||
масив `tool_calls`, коли запит використовує `tool_choice: "auto"`, але повертають
|
||||
структуровані виклики інструментів, коли запит використовує `tool_choice: "required"`. Для
|
||||
таких записів моделей примусово задайте OpenAI-сумісне поле запиту через
|
||||
`params.extra_body`:
|
||||
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
models: {
|
||||
"vllm/Qwen-Qwen2.5-Coder-32B-Instruct": {
|
||||
params: {
|
||||
extra_body: {
|
||||
tool_choice: "required",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
Це суміснісний обхідний шлях, який вмикається за згодою. Він змушує кожен хід моделі з
|
||||
інструментами вимагати виклик інструмента, тому використовуйте його лише для окремого локального запису моделі,
|
||||
де така поведінка є прийнятною.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Кастомний базовий URL">
|
||||
Якщо ваш сервер vLLM працює на нестандартному хості або порту, задайте `baseUrl` у явній конфігурації провайдера:
|
||||
|
||||
```json5
|
||||
@ -211,8 +246,8 @@ GET http://127.0.0.1:8000/v1/models
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Повільна перша відповідь або тайм-аут віддаленого сервера">
|
||||
Для великих локальних моделей, віддалених хостів у LAN або каналів tailnet задайте
|
||||
тайм-аут запиту в межах провайдера:
|
||||
Для великих локальних моделей, віддалених хостів у LAN або з’єднань tailnet задайте
|
||||
час очікування запиту на рівні провайдера:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -231,30 +266,30 @@ GET http://127.0.0.1:8000/v1/models
|
||||
}
|
||||
```
|
||||
|
||||
`timeoutSeconds` застосовується лише до HTTP-запитів до моделей vLLM, включно з
|
||||
установленням з’єднання, заголовками відповіді, потоковою передачею тіла та загальним
|
||||
перериванням guarded-fetch. Надавайте цьому перевагу перед збільшенням
|
||||
`timeoutSeconds` застосовується лише до HTTP-запитів моделі vLLM, включно з
|
||||
встановленням з’єднання, заголовками відповіді, потоковою передачею тіла та загальним
|
||||
аварійним завершенням guarded-fetch. Надавайте цьому перевагу перед збільшенням
|
||||
`agents.defaults.timeoutSeconds`, який керує всім запуском агента.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Сервер недоступний">
|
||||
Переконайтеся, що сервер vLLM запущено й до нього можна звернутися:
|
||||
Переконайтеся, що сервер vLLM запущено і він доступний:
|
||||
|
||||
```bash
|
||||
curl http://127.0.0.1:8000/v1/models
|
||||
```
|
||||
|
||||
Якщо ви бачите помилку з’єднання, перевірте хост, порт і те, що vLLM запущено в режимі OpenAI-сумісного сервера.
|
||||
Для явних ендпойнтів local loopback, LAN або Tailscale також задайте
|
||||
Для явних ендпоінтів local loopback, LAN або Tailscale також задайте
|
||||
`models.providers.vllm.request.allowPrivateNetwork: true`; запити провайдера
|
||||
за замовчуванням блокують URL приватної мережі, якщо провайдер не
|
||||
позначено як явно довірений.
|
||||
за замовчуванням блокують URL приватної мережі, якщо провайдер не є
|
||||
явно довіреним.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Помилки автентифікації в запитах">
|
||||
Якщо запити завершуються помилками автентифікації, задайте справжній `VLLM_API_KEY`, що відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`.
|
||||
Якщо запити завершуються помилками автентифікації, задайте справжній `VLLM_API_KEY`, який відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`.
|
||||
|
||||
<Tip>
|
||||
Якщо ваш сервер vLLM не вимагає автентифікації, будь-яке непорожнє значення `VLLM_API_KEY` працює як сигнал явного ввімкнення для OpenClaw.
|
||||
@ -262,13 +297,13 @@ GET http://127.0.0.1:8000/v1/models
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Моделі не виявлено">
|
||||
Автоматичне виявлення вимагає, щоб `VLLM_API_KEY` було встановлено **і** щоб не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення й використовує лише оголошені вами моделі.
|
||||
<Accordion title="Не виявлено жодної моделі">
|
||||
Для автоматичного виявлення потрібно, щоб `VLLM_API_KEY` було задано **і** щоб не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення і використовує лише оголошені вами моделі.
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
<Warning>
|
||||
Більше довідки: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq).
|
||||
Додаткова допомога: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq).
|
||||
</Warning>
|
||||
|
||||
## Пов’язане
|
||||
@ -278,12 +313,12 @@ GET http://127.0.0.1:8000/v1/models
|
||||
Вибір провайдерів, посилань на моделі та поведінки перемикання на резервний варіант.
|
||||
</Card>
|
||||
<Card title="OpenAI" href="/uk/providers/openai" icon="bolt">
|
||||
Нативний провайдер OpenAI та поведінка OpenAI-сумісного маршруту.
|
||||
Нативний провайдер OpenAI і поведінка OpenAI-сумісного маршруту.
|
||||
</Card>
|
||||
<Card title="OAuth та автентифікація" href="/uk/gateway/authentication" icon="key">
|
||||
<Card title="OAuth і автентифікація" href="/uk/gateway/authentication" icon="key">
|
||||
Подробиці автентифікації та правила повторного використання облікових даних.
|
||||
</Card>
|
||||
<Card title="Усунення несправностей" href="/uk/help/troubleshooting" icon="wrench">
|
||||
Типові проблеми та способи їх вирішення.
|
||||
Поширені проблеми та способи їх вирішення.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user