diff --git a/docs/uk/gateway/local-models.md b/docs/uk/gateway/local-models.md index d94ea8f8c..f754a0ce8 100644 --- a/docs/uk/gateway/local-models.md +++ b/docs/uk/gateway/local-models.md @@ -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..timeoutSeconds` для повільних локальних або віддалених серверів моделей, перш ніж збільшувати `agents.defaults.timeoutSeconds`. Тайм-аут провайдера застосовується лише до HTTP-запитів моделі, включно з підключенням, заголовками, потоковою передачею тіла та загальним guarded-fetch abort. +Зберігайте `models.mode: "merge"`, щоб хостовані моделі залишалися доступними як запасні. +Використовуйте `models.providers..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..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..models[].compat.supportsTools: false`. -- Якщо бекенд і далі не працює лише на більших запусках OpenClaw, то решта проблеми зазвичай повʼязана з обмеженнями моделі/сервера на боці upstream або з помилкою бекенда, а не з транспортним рівнем OpenClaw. +- Деякі сервери приймають лише рядковий `messages[].content` у Chat Completions, а не структуровані масиви частин контенту. Для таких кінцевих точок установіть `models.providers..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..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) diff --git a/docs/uk/providers/vllm.md b/docs/uk/providers/vllm.md index c91a511da..137761472 100644 --- a/docs/uk/providers/vllm.md +++ b/docs/uk/providers/vllm.md @@ -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` | ## Початок роботи - Ваша базова URL має надавати ендпойнти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює на: + Ваш базовий URL має надавати ендпоінти `/v1` (наприклад, `/v1/models`, `/v1/chat/completions`). vLLM зазвичай працює за адресою: ``` http://127.0.0.1:8000/v1 ``` - + Підійде будь-яке значення, якщо ваш сервер не вимагає автентифікації: ```bash @@ -48,7 +48,7 @@ OpenClaw розглядає `vllm` як локального OpenAI-сумісн - Замініть на один із ваших ID моделей vLLM: + Замініть на один з ідентифікаторів моделей вашого vLLM: ```json5 { @@ -61,7 +61,7 @@ OpenClaw розглядає `vllm` як локального OpenAI-сумісн ``` - + ```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 на записи моделей. -Якщо ви явно задаєте `models.providers.vllm`, автоматичне виявлення пропускається, і ви маєте визначити моделі вручну. +Якщо ви явно задаєте `models.providers.vllm`, автоматичне виявлення пропускається, і вам потрібно визначити моделі вручну. ## Явна конфігурація (ручне визначення моделей) @@ -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 vLLM розглядається як OpenAI-сумісний бекенд `/v1` у стилі проксі, а не як нативний - ендпойнт OpenAI. Це означає: + ендпоінт OpenAI. Це означає: | Поведінка | Застосовується? | |----------|----------| | Нативне формування запитів OpenAI | Ні | | `service_tier` | Не надсилається | | Відповіді `store` | Не надсилаються | - | Підказки кешу промптів | Не надсилаються | - | Формування payload для сумісності з reasoning OpenAI | Не застосовується | - | Приховані заголовки атрибуції OpenClaw | Не додаються для користувацьких базових URL | + | Підказки кешу prompt | Не надсилаються | + | Формування payload для сумісності OpenAI reasoning | Не застосовується | + | Приховані заголовки атрибуції OpenClaw | Не додаються для кастомних базових URL | - 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 - + + Спершу переконайтеся, що 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", + }, + }, + }, + }, + }, + }, + } + ``` + + Це суміснісний обхідний шлях, який вмикається за згодою. Він змушує кожен хід моделі з + інструментами вимагати виклик інструмента, тому використовуйте його лише для окремого локального запису моделі, + де така поведінка є прийнятною. + + + + Якщо ваш сервер vLLM працює на нестандартному хості або порту, задайте `baseUrl` у явній конфігурації провайдера: ```json5 @@ -211,8 +246,8 @@ GET http://127.0.0.1:8000/v1/models - Для великих локальних моделей, віддалених хостів у 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`, який керує всім запуском агента. - Переконайтеся, що сервер 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 приватної мережі, якщо провайдер не є + явно довіреним. - Якщо запити завершуються помилками автентифікації, задайте справжній `VLLM_API_KEY`, що відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`. + Якщо запити завершуються помилками автентифікації, задайте справжній `VLLM_API_KEY`, який відповідає конфігурації вашого сервера, або явно налаштуйте провайдера в `models.providers.vllm`. Якщо ваш сервер vLLM не вимагає автентифікації, будь-яке непорожнє значення `VLLM_API_KEY` працює як сигнал явного ввімкнення для OpenClaw. @@ -262,13 +297,13 @@ GET http://127.0.0.1:8000/v1/models - - Автоматичне виявлення вимагає, щоб `VLLM_API_KEY` було встановлено **і** щоб не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення й використовує лише оголошені вами моделі. + + Для автоматичного виявлення потрібно, щоб `VLLM_API_KEY` було задано **і** щоб не було явного запису конфігурації `models.providers.vllm`. Якщо ви визначили провайдера вручну, OpenClaw пропускає виявлення і використовує лише оголошені вами моделі. -Більше довідки: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq). +Додаткова допомога: [Усунення несправностей](/uk/help/troubleshooting) і [FAQ](/uk/help/faq). ## Пов’язане @@ -278,12 +313,12 @@ GET http://127.0.0.1:8000/v1/models Вибір провайдерів, посилань на моделі та поведінки перемикання на резервний варіант. - Нативний провайдер OpenAI та поведінка OpenAI-сумісного маршруту. + Нативний провайдер OpenAI і поведінка OpenAI-сумісного маршруту. - + Подробиці автентифікації та правила повторного використання облікових даних. - Типові проблеми та способи їх вирішення. + Поширені проблеми та способи їх вирішення.