chore(i18n): refresh uk translations
This commit is contained in:
parent
aecba10971
commit
e8c98f8ce8
@ -1,39 +1,39 @@
|
||||
---
|
||||
read_when:
|
||||
- Додавання або змінення команд `openclaw infer`
|
||||
- Проєктування стабільної автоматизації headless-можливостей
|
||||
summary: Infer-first CLI для робочих процесів із моделями, зображеннями, аудіо, TTS, відео, вебом і ембедингами на основі провайдерів
|
||||
title: CLI для інференсу
|
||||
- Проєктування стабільної автоматизації можливостей без графічного інтерфейсу
|
||||
summary: CLI з пріоритетним визначенням для робочих процесів моделей, зображень, аудіо, TTS, відео, вебу та ембедингів, що працюють через провайдера
|
||||
title: CLI для inference
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T19:09:04Z"
|
||||
generated_at: "2026-04-25T19:29:25Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 2e4ee27a124a5969231fb3363e582cf90323f887e9625dc7c8aa3e7640b54224
|
||||
source_hash: bd5b98b70fd959cdcdf80131cebf99cb7131b220c5757acb380ce405b85998a1
|
||||
source_path: cli/infer.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
`openclaw infer` — це канонічна headless-поверхня для робочих процесів інференсу на основі провайдерів.
|
||||
`openclaw infer` — це канонічна headless-поверхня для робочих процесів inference, що працюють через провайдера.
|
||||
|
||||
Вона навмисно надає сімейства можливостей, а не сирі назви RPC Gateway і не сирі ідентифікатори інструментів агентів.
|
||||
Вона навмисно відкриває сімейства можливостей, а не сирі назви RPC Gateway і не сирі id інструментів агента.
|
||||
|
||||
## Перетворіть infer на skill
|
||||
|
||||
Скопіюйте й вставте це в агента:
|
||||
Скопіюйте й вставте це агенту:
|
||||
|
||||
```text
|
||||
Read https://docs.openclaw.ai/cli/infer, then create a skill that routes my common workflows to `openclaw infer`.
|
||||
Focus on model runs, image generation, video generation, audio transcription, TTS, web search, and embeddings.
|
||||
Прочитай https://docs.openclaw.ai/cli/infer, а потім створи skill, який маршрутизує мої типові робочі процеси до `openclaw infer`.
|
||||
Зосередься на запусках моделей, генерації зображень, генерації відео, транскрибуванні аудіо, TTS, вебпошуку та ембедингах.
|
||||
```
|
||||
|
||||
Хороший skill на основі infer має:
|
||||
|
||||
- зіставляти поширені наміри користувача з правильними підкомандами infer
|
||||
- зіставляти типові наміри користувача з правильним підкомандним infer
|
||||
- включати кілька канонічних прикладів infer для робочих процесів, які він охоплює
|
||||
- віддавати перевагу `openclaw infer ...` у прикладах і рекомендаціях
|
||||
- уникати повторного документування всієї поверхні infer у тілі skill
|
||||
- віддавати перевагу `openclaw infer ...` у прикладах і підказках
|
||||
- уникати повторного документування всієї поверхні infer всередині тіла skill
|
||||
|
||||
Типове покриття skill, зосередженого на infer:
|
||||
Типове охоплення skill, зосередженого на infer:
|
||||
|
||||
- `openclaw infer model run`
|
||||
- `openclaw infer image generate`
|
||||
@ -44,17 +44,20 @@ Focus on model runs, image generation, video generation, audio transcription, TT
|
||||
|
||||
## Навіщо використовувати infer
|
||||
|
||||
`openclaw infer` надає один узгоджений CLI для завдань інференсу на основі провайдерів у межах OpenClaw.
|
||||
`openclaw infer` надає один узгоджений CLI для завдань inference через провайдера всередині OpenClaw.
|
||||
|
||||
Переваги:
|
||||
|
||||
- Використовуйте провайдерів і моделі, уже налаштовані в OpenClaw, замість того щоб підключати окремі одноразові обгортки для кожного бекенда.
|
||||
- Тримайте робочі процеси для моделей, зображень, транскрибування аудіо, TTS, відео, вебу й ембедингів в одному дереві команд.
|
||||
- Використовуйте провайдерів і моделі, уже налаштовані в OpenClaw, замість підключення одноразових обгорток для кожного бекенда.
|
||||
- Тримайте робочі процеси моделей, зображень, транскрибування аудіо, TTS, відео, вебу та ембедингів в одному дереві команд.
|
||||
- Використовуйте стабільну форму виводу `--json` для скриптів, автоматизації та робочих процесів, керованих агентами.
|
||||
- Віддавайте перевагу first-party поверхні OpenClaw, коли завдання по суті зводиться до «запустити інференс».
|
||||
- Віддавайте перевагу першорядній поверхні OpenClaw, коли завдання по суті зводиться до «запустити inference».
|
||||
- Використовуйте звичайний локальний шлях без потреби в Gateway для більшості команд infer.
|
||||
|
||||
Для наскрізних перевірок провайдерів віддавайте перевагу `openclaw infer ...`, щойно нижчорівневі тести провайдерів уже зелені. Це перевіряє поставлюваний CLI, завантаження конфігурації, визначення агента за замовчуванням, активацію вбудованих Plugin, виправлення залежностей під час виконання та спільне середовище виконання можливостей до того, як буде зроблено запит до провайдера.
|
||||
Для наскрізних перевірок провайдерів віддавайте перевагу `openclaw infer ...`, коли низькорівневі
|
||||
тести провайдерів уже зелені. Це перевіряє доставлений CLI, завантаження конфігурації,
|
||||
визначення агента за замовчуванням, активацію вбудованих Plugin, відновлення залежностей під час виконання
|
||||
та спільне середовище виконання можливостей перед надсиланням запиту до провайдера.
|
||||
|
||||
## Дерево команд
|
||||
|
||||
@ -109,17 +112,17 @@ Focus on model runs, image generation, video generation, audio transcription, TT
|
||||
|
||||
## Поширені завдання
|
||||
|
||||
Ця таблиця зіставляє поширені завдання інференсу з відповідною командою infer.
|
||||
Ця таблиця зіставляє поширені завдання inference з відповідною командою infer.
|
||||
|
||||
| Завдання | Команда | Примітки |
|
||||
| ----------------------- | ---------------------------------------------------------------------- | ----------------------------------------------------- |
|
||||
| Виконати текстовий/модельний запит | `openclaw infer model run --prompt "..." --json` | За замовчуванням використовує звичайний локальний шлях |
|
||||
| Запустити текстовий/модельний запит | `openclaw infer model run --prompt "..." --json` | За замовчуванням використовує звичайний локальний шлях |
|
||||
| Згенерувати зображення | `openclaw infer image generate --prompt "..." --json` | Використовуйте `image edit`, якщо починаєте з наявного файлу |
|
||||
| Описати файл зображення | `openclaw infer image describe --file ./image.png --json` | `--model` має бути `<provider/model>`, здатною працювати із зображеннями |
|
||||
| Транскрибувати аудіо | `openclaw infer audio transcribe --file ./memo.m4a --json` | `--model` має бути `<provider/model>` |
|
||||
| Синтезувати мовлення | `openclaw infer tts convert --text "..." --output ./speech.mp3 --json` | `tts status` орієнтований на gateway |
|
||||
| Згенерувати відео | `openclaw infer video generate --prompt "..." --json` | Підтримує підказки для провайдера, наприклад `--resolution` |
|
||||
| Описати відеофайл | `openclaw infer video describe --file ./clip.mp4 --json` | `--model` має бути `<provider/model>` |
|
||||
| Описати файл зображення | `openclaw infer image describe --file ./image.png --json` | `--model` має бути image-capable `<provider/model>` |
|
||||
| Транскрибувати аудіо | `openclaw infer audio transcribe --file ./memo.m4a --json` | `--model` має бути `<provider/model>` |
|
||||
| Синтезувати мовлення | `openclaw infer tts convert --text "..." --output ./speech.mp3 --json` | `tts status` орієнтований на gateway |
|
||||
| Згенерувати відео | `openclaw infer video generate --prompt "..." --json` | Підтримує підказки провайдера, як-от `--resolution` |
|
||||
| Описати відеофайл | `openclaw infer video describe --file ./clip.mp4 --json` | `--model` має бути `<provider/model>` |
|
||||
| Шукати у вебі | `openclaw infer web search --query "..." --json` | |
|
||||
| Отримати вебсторінку | `openclaw infer web fetch --url https://example.com --json` | |
|
||||
| Створити ембединги | `openclaw infer embedding create --text "..." --json` | |
|
||||
@ -129,16 +132,16 @@ Focus on model runs, image generation, video generation, audio transcription, TT
|
||||
- `openclaw infer ...` — основна CLI-поверхня для цих робочих процесів.
|
||||
- Використовуйте `--json`, коли вивід споживатиметься іншою командою або скриптом.
|
||||
- Використовуйте `--provider` або `--model provider/model`, коли потрібен конкретний бекенд.
|
||||
- Для `image describe`, `audio transcribe` і `video describe` `--model` має використовувати форму `<provider/model>`.
|
||||
- Для `image describe` явний `--model` запускає цю пару провайдер/модель безпосередньо. Модель має підтримувати зображення в каталозі моделей або конфігурації провайдера. `codex/<model>` запускає обмежений поворот image-understanding через сервер застосунку Codex; `openai-codex/<model>` використовує шлях провайдера OpenAI Codex OAuth.
|
||||
- Команди безстанового виконання за замовчуванням локальні.
|
||||
- Команди для стану, яким керує Gateway, за замовчуванням використовують gateway.
|
||||
- Для `image describe`, `audio transcribe` і `video describe` параметр `--model` має використовувати форму `<provider/model>`.
|
||||
- Для `image describe` явний `--model` запускає цю пару provider/model напряму. Модель має бути здатною працювати із зображеннями в каталозі моделей або конфігурації провайдера. `codex/<model>` запускає обмежений turn розуміння зображень через сервер застосунку Codex; `openai-codex/<model>` використовує шлях провайдера OpenAI Codex OAuth.
|
||||
- Команди stateless execution за замовчуванням локальні.
|
||||
- Команди стану, керованого Gateway, за замовчуванням працюють через gateway.
|
||||
- Звичайний локальний шлях не потребує запущеного Gateway.
|
||||
- `model run` — одноразова команда. MCP-сервери, відкриті через середовище виконання агента для цієї команди, закриваються після відповіді як для локального виконання, так і для `--gateway`, тож повторні виклики у скриптах не залишають дочірні stdio MCP-процеси активними.
|
||||
- `model run` є одноразовою командою. MCP-сервери, відкриті через середовище виконання агента для цієї команди, завершуються після відповіді як для локального виконання, так і для `--gateway`, тому повторні виклики в скриптах не залишають дочірні процеси stdio MCP активними.
|
||||
|
||||
## Model
|
||||
|
||||
Використовуйте `model` для текстового інференсу на основі провайдерів і перевірки моделей/провайдерів.
|
||||
Використовуйте `model` для text inference через провайдера та перевірки моделей/провайдерів.
|
||||
|
||||
```bash
|
||||
openclaw infer model run --prompt "Reply with exactly: smoke-ok" --json
|
||||
@ -149,8 +152,8 @@ openclaw infer model inspect --name gpt-5.5 --json
|
||||
|
||||
Примітки:
|
||||
|
||||
- `model run` повторно використовує середовище виконання агента, тому перевизначення провайдера/моделі поводяться так само, як і під час звичайного виконання агента.
|
||||
- Оскільки `model run` призначена для headless-автоматизації, вона не зберігає вбудовані MCP-середовища виконання для сесії після завершення команди.
|
||||
- `model run` повторно використовує середовище виконання агента, тому перевизначення provider/model поводяться як під час звичайного виконання агента.
|
||||
- Оскільки `model run` призначено для headless-автоматизації, він не зберігає вбудовані середовища виконання MCP на рівні сесії після завершення команди.
|
||||
- `model auth login`, `model auth logout` і `model auth status` керують збереженим станом автентифікації провайдера.
|
||||
|
||||
## Image
|
||||
@ -160,9 +163,9 @@ openclaw infer model inspect --name gpt-5.5 --json
|
||||
```bash
|
||||
openclaw infer image generate --prompt "friendly lobster illustration" --json
|
||||
openclaw infer image generate --prompt "cinematic product photo of headphones" --json
|
||||
openclaw infer image generate --model openai/gpt-image-1.5 --output-format png --openai-background transparent --prompt "simple red circle sticker on a transparent background" --json
|
||||
openclaw infer image generate --model openai/gpt-image-1.5 --output-format png --background transparent --prompt "simple red circle sticker on a transparent background" --json
|
||||
openclaw infer image generate --prompt "slow image backend" --timeout-ms 180000 --json
|
||||
openclaw infer image edit --file ./logo.png --model openai/gpt-image-1.5 --output-format png --openai-background transparent --prompt "keep the logo, remove the background" --json
|
||||
openclaw infer image edit --file ./logo.png --model openai/gpt-image-1.5 --output-format png --background transparent --prompt "keep the logo, remove the background" --json
|
||||
openclaw infer image describe --file ./photo.jpg --json
|
||||
openclaw infer image describe --file ./ui-screenshot.png --model openai/gpt-4.1-mini --json
|
||||
openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --json
|
||||
@ -171,9 +174,15 @@ openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --j
|
||||
Примітки:
|
||||
|
||||
- Використовуйте `image edit`, якщо починаєте з наявних вхідних файлів.
|
||||
- Використовуйте `--output-format png --openai-background transparent` разом із `--model openai/gpt-image-1.5` для PNG-виводу OpenAI з прозорим фоном. Ці специфічні для OpenAI прапорці доступні як у `image generate`, так і в `image edit`.
|
||||
- Використовуйте `image providers --json`, щоб перевірити, які вбудовані провайдери зображень можна виявити, налаштовано, вибрано, а також які можливості генерації/редагування надає кожен провайдер.
|
||||
- Використовуйте `image generate --model <provider/model> --json` як найвужчу живу CLI-перевірку для змін у генерації зображень. Приклад:
|
||||
- Використовуйте `--output-format png --background transparent` разом із
|
||||
`--model openai/gpt-image-1.5` для виводу OpenAI PNG з прозорим тлом;
|
||||
`--openai-background` залишається доступним як псевдонім, специфічний для OpenAI. Провайдери,
|
||||
які не декларують підтримку тла, повідомляють про цю підказку як про проігнороване перевизначення.
|
||||
- Використовуйте `image providers --json`, щоб перевірити, які вбудовані image-провайдери
|
||||
можна виявити, налаштовано, вибрано, а також які можливості генерації/редагування
|
||||
відкриває кожен провайдер.
|
||||
- Використовуйте `image generate --model <provider/model> --json` як найвужчу живу
|
||||
CLI-перевірку для змін у генерації зображень. Приклад:
|
||||
|
||||
```bash
|
||||
openclaw infer image providers --json
|
||||
@ -184,10 +193,12 @@ openclaw infer image describe --file ./photo.jpg --model ollama/qwen2.5vl:7b --j
|
||||
--json
|
||||
```
|
||||
|
||||
Відповідь JSON повідомляє `ok`, `provider`, `model`, `attempts` і шляхи записаних вихідних файлів. Якщо задано `--output`, остаточне розширення може відповідати MIME-типу, який повернув провайдер.
|
||||
JSON-відповідь повідомляє `ok`, `provider`, `model`, `attempts` і записані
|
||||
шляхи виводу. Якщо встановлено `--output`, фінальне розширення може відповідати
|
||||
MIME-типу, який повернув провайдер.
|
||||
|
||||
- Для `image describe` `--model` має бути `<provider/model>`, здатною працювати із зображеннями.
|
||||
- Для локальних візуальних моделей Ollama спочатку завантажте модель і встановіть `OLLAMA_API_KEY` у будь-яке умовне значення, наприклад `ollama-local`. Див. [Ollama](/uk/providers/ollama#vision-and-image-description).
|
||||
- Для `image describe` параметр `--model` має бути image-capable `<provider/model>`.
|
||||
- Для локальних vision-моделей Ollama спочатку завантажте модель і встановіть `OLLAMA_API_KEY` у будь-яке заповнювальне значення, наприклад `ollama-local`. Див. [Ollama](/uk/providers/ollama#vision-and-image-description).
|
||||
|
||||
## Audio
|
||||
|
||||
@ -201,12 +212,12 @@ openclaw infer audio transcribe --file ./memo.m4a --model openai/whisper-1 --jso
|
||||
|
||||
Примітки:
|
||||
|
||||
- `audio transcribe` призначена для транскрибування файлів, а не для керування сеансами в реальному часі.
|
||||
- `audio transcribe` призначено для транскрибування файлів, а не для керування сесіями в реальному часі.
|
||||
- `--model` має бути `<provider/model>`.
|
||||
|
||||
## TTS
|
||||
|
||||
Використовуйте `tts` для синтезу мовлення та стану TTS-провайдера.
|
||||
Використовуйте `tts` для синтезу мовлення та стану провайдера TTS.
|
||||
|
||||
```bash
|
||||
openclaw infer tts convert --text "hello from openclaw" --output ./hello.mp3 --json
|
||||
@ -217,12 +228,12 @@ openclaw infer tts status --json
|
||||
|
||||
Примітки:
|
||||
|
||||
- `tts status` за замовчуванням використовує gateway, оскільки відображає стан TTS, яким керує gateway.
|
||||
- Використовуйте `tts providers`, `tts voices` і `tts set-provider`, щоб перевіряти та налаштовувати поведінку TTS.
|
||||
- `tts status` за замовчуванням використовує gateway, оскільки відображає стан TTS, керований gateway.
|
||||
- Використовуйте `tts providers`, `tts voices` і `tts set-provider` для перевірки та налаштування поведінки TTS.
|
||||
|
||||
## Video
|
||||
|
||||
Використовуйте `video` для генерації та опису.
|
||||
Використовуйте `video` для генерації й опису.
|
||||
|
||||
```bash
|
||||
openclaw infer video generate --prompt "cinematic sunset over the ocean" --json
|
||||
@ -234,11 +245,11 @@ openclaw infer video describe --file ./clip.mp4 --model openai/gpt-4.1-mini --js
|
||||
Примітки:
|
||||
|
||||
- `video generate` приймає `--size`, `--aspect-ratio`, `--resolution`, `--duration`, `--audio`, `--watermark` і `--timeout-ms` та передає їх у середовище виконання генерації відео.
|
||||
- Для `video describe` `--model` має бути `<provider/model>`.
|
||||
- `--model` має бути `<provider/model>` для `video describe`.
|
||||
|
||||
## Web
|
||||
|
||||
Використовуйте `web` для робочих процесів пошуку й отримання сторінок.
|
||||
Використовуйте `web` для робочих процесів пошуку та отримання сторінок.
|
||||
|
||||
```bash
|
||||
openclaw infer web search --query "OpenClaw docs" --json
|
||||
@ -249,7 +260,7 @@ openclaw infer web providers --json
|
||||
|
||||
Примітки:
|
||||
|
||||
- Використовуйте `web providers`, щоб переглянути доступних, налаштованих і вибраних провайдерів.
|
||||
- Використовуйте `web providers` для перевірки доступних, налаштованих і вибраних провайдерів.
|
||||
|
||||
## Embedding
|
||||
|
||||
@ -263,7 +274,7 @@ openclaw infer embedding providers --json
|
||||
|
||||
## Вивід JSON
|
||||
|
||||
Команди infer нормалізують вивід JSON у спільній оболонці:
|
||||
Команди infer нормалізують вивід JSON у спільному контейнері:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -277,7 +288,7 @@ openclaw infer embedding providers --json
|
||||
}
|
||||
```
|
||||
|
||||
Поля верхнього рівня стабільні:
|
||||
Поля верхнього рівня є стабільними:
|
||||
|
||||
- `ok`
|
||||
- `capability`
|
||||
@ -288,23 +299,25 @@ openclaw infer embedding providers --json
|
||||
- `outputs`
|
||||
- `error`
|
||||
|
||||
Для команд, що генерують медіа, `outputs` містить файли, записані OpenClaw. Для автоматизації використовуйте в цьому масиві `path`, `mimeType`, `size` і будь-які специфічні для медіа розміри замість розбору людиночитного stdout.
|
||||
Для команд генерації медіа `outputs` містить файли, записані OpenClaw. Використовуйте
|
||||
`path`, `mimeType`, `size` та будь-які специфічні для медіа розміри в цьому масиві
|
||||
для автоматизації замість розбору stdout, придатного для читання людиною.
|
||||
|
||||
## Поширені помилки
|
||||
|
||||
```bash
|
||||
# Погано
|
||||
# Bad
|
||||
openclaw infer media image generate --prompt "friendly lobster"
|
||||
|
||||
# Добре
|
||||
# Good
|
||||
openclaw infer image generate --prompt "friendly lobster"
|
||||
```
|
||||
|
||||
```bash
|
||||
# Погано
|
||||
# Bad
|
||||
openclaw infer audio transcribe --file ./memo.m4a --model whisper-1 --json
|
||||
|
||||
# Добре
|
||||
# Good
|
||||
openclaw infer audio transcribe --file ./memo.m4a --model openai/whisper-1 --json
|
||||
```
|
||||
|
||||
@ -314,5 +327,5 @@ openclaw infer audio transcribe --file ./memo.m4a --model openai/whisper-1 --jso
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Довідка CLI](/uk/cli)
|
||||
- [Довідник CLI](/uk/cli)
|
||||
- [Моделі](/uk/concepts/models)
|
||||
|
||||
@ -1,15 +1,15 @@
|
||||
---
|
||||
read_when:
|
||||
- Вам потрібен огляд журналювання, зрозумілий для початківців
|
||||
- Вам потрібен дружній для початківців огляд журналювання
|
||||
- Ви хочете налаштувати рівні журналювання або формати
|
||||
- Ви усуваєте несправності й хочете швидко знайти журнали
|
||||
summary: 'Огляд журналювання: журнали файлів, виведення в консоль, перегляд журналів у CLI та інтерфейс Control UI'
|
||||
summary: 'Огляд журналювання: журнали файлів, виведення в консоль, відстеження через CLI та Control UI'
|
||||
title: Огляд журналювання
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T18:41:27Z"
|
||||
generated_at: "2026-04-25T19:29:25Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 745c14ef9ca008d43a0f4f2d5c051ec6bafbe5249e1a1753448182fff72afd6e
|
||||
source_hash: 9db99c0d30f2456bc436de00ca53c97f0021525dc9c045dfec982cc1bd0d6e1d
|
||||
source_path: logging.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -18,14 +18,14 @@ x-i18n:
|
||||
|
||||
OpenClaw має дві основні поверхні журналювання:
|
||||
|
||||
- **Файлові журнали** (рядки JSON), які записує Gateway.
|
||||
- **Виведення в консоль**, яке показується в терміналах і в інтерфейсі Gateway Debug UI.
|
||||
- **Журнали файлів** (рядки JSON), які записує Gateway.
|
||||
- **Виведення в консоль**, яке показується в терміналах і в Gateway Debug UI.
|
||||
|
||||
Вкладка **Logs** в Control UI відстежує файловий журнал gateway. На цій сторінці пояснюється, де зберігаються журнали, як їх читати та як налаштовувати рівні й формати журналювання.
|
||||
Вкладка **Logs** у Control UI відстежує журнал файлу gateway. На цій сторінці пояснюється, де зберігаються журнали, як їх читати та як налаштовувати рівні й формати журналювання.
|
||||
|
||||
## Де зберігаються журнали
|
||||
|
||||
За замовчуванням Gateway записує циклічний файл журналу в:
|
||||
За замовчуванням Gateway записує ротаційний файл журналу в:
|
||||
|
||||
`/tmp/openclaw/openclaw-YYYY-MM-DD.log`
|
||||
|
||||
@ -43,7 +43,7 @@ OpenClaw має дві основні поверхні журналювання:
|
||||
|
||||
## Як читати журнали
|
||||
|
||||
### CLI: перегляд у реальному часі (рекомендовано)
|
||||
### CLI: відстеження в реальному часі (рекомендовано)
|
||||
|
||||
Використовуйте CLI, щоб відстежувати файл журналу gateway через RPC:
|
||||
|
||||
@ -53,30 +53,30 @@ openclaw logs --follow
|
||||
|
||||
Корисні поточні параметри:
|
||||
|
||||
- `--local-time`: відображати часові мітки у вашому локальному часовому поясі
|
||||
- `--local-time`: показувати часові мітки у вашому локальному часовому поясі
|
||||
- `--url <url>` / `--token <token>` / `--timeout <ms>`: стандартні прапорці Gateway RPC
|
||||
- `--expect-final`: прапорець очікування фінальної відповіді для RPC на базі агента (приймається тут через спільний клієнтський шар)
|
||||
- `--expect-final`: прапорець очікування фінальної відповіді для RPC на основі агентів (підтримується тут через спільний клієнтський шар)
|
||||
|
||||
Режими виведення:
|
||||
|
||||
- **Сеанси TTY**: зручні для читання, кольорові, структуровані рядки журналу.
|
||||
- **Сеанси без TTY**: звичайний текст.
|
||||
- **TTY-сеанси**: гарні, кольорові, структуровані рядки журналу.
|
||||
- **Не-TTY-сеанси**: звичайний текст.
|
||||
- `--json`: JSON із розділенням по рядках (одна подія журналу на рядок).
|
||||
- `--plain`: примусово використовувати звичайний текст у сеансах TTY.
|
||||
- `--no-color`: вимкнути кольори ANSI.
|
||||
- `--plain`: примусово використовувати звичайний текст у TTY-сеансах.
|
||||
- `--no-color`: вимкнути ANSI-кольори.
|
||||
|
||||
Коли ви передаєте явний `--url`, CLI не застосовує автоматично облікові дані з конфігурації або середовища; якщо цільовий Gateway вимагає автентифікації, додайте `--token` самостійно.
|
||||
|
||||
У режимі JSON CLI виводить об’єкти з тегом `type`:
|
||||
У режимі JSON CLI виводить об’єкти з позначкою `type`:
|
||||
|
||||
- `meta`: метадані потоку (файл, курсор, розмір)
|
||||
- `log`: розібраний запис журналу
|
||||
- `notice`: підказки про обрізання / ротацію
|
||||
- `raw`: нерозібраний рядок журналу
|
||||
|
||||
Якщо локальний loopback Gateway запитує сполучення, `openclaw logs` автоматично переходить до налаштованого локального файлу журналу. Явні цілі `--url` не використовують цей резервний механізм.
|
||||
Якщо Gateway на local loopback запитує сполучення, `openclaw logs` автоматично переходить до налаштованого локального файлу журналу. Явні цілі `--url` не використовують цей резервний варіант.
|
||||
|
||||
Якщо Gateway недоступний, CLI виводить коротку підказку виконати:
|
||||
Якщо Gateway недоступний, CLI виводить коротку підказку запустити:
|
||||
|
||||
```bash
|
||||
openclaw doctor
|
||||
@ -97,27 +97,27 @@ openclaw channels logs --channel whatsapp
|
||||
|
||||
## Формати журналів
|
||||
|
||||
### Файлові журнали (JSONL)
|
||||
### Журнали файлів (JSONL)
|
||||
|
||||
Кожен рядок у файлі журналу — це об’єкт JSON. CLI і Control UI розбирають ці записи, щоб відображати структуроване виведення (час, рівень, підсистема, повідомлення).
|
||||
Кожен рядок у файлі журналу є об’єктом JSON. CLI і Control UI аналізують ці записи, щоб показувати структуроване виведення (час, рівень, підсистема, повідомлення).
|
||||
|
||||
### Виведення в консоль
|
||||
|
||||
Журнали консолі **враховують TTY** і форматуються для зручності читання:
|
||||
|
||||
- Префікси підсистем (наприклад, `gateway/channels/whatsapp`)
|
||||
- Кольори рівнів (info/warn/error)
|
||||
- Кольорове позначення рівнів (info/warn/error)
|
||||
- Необов’язковий компактний або JSON-режим
|
||||
|
||||
Форматування консолі керується `logging.consoleStyle`.
|
||||
Форматування консолі керується параметром `logging.consoleStyle`.
|
||||
|
||||
### Журнали WebSocket Gateway
|
||||
|
||||
`openclaw gateway` також має журналювання протоколу WebSocket для трафіку RPC:
|
||||
`openclaw gateway` також має журналювання протоколу WebSocket для RPC-трафіку:
|
||||
|
||||
- звичайний режим: лише важливі результати (помилки, помилки розбору, повільні виклики)
|
||||
- звичайний режим: лише цікаві результати (помилки, помилки розбору, повільні виклики)
|
||||
- `--verbose`: увесь трафік запитів/відповідей
|
||||
- `--ws-log auto|compact|full`: вибір стилю докладного відображення
|
||||
- `--ws-log auto|compact|full`: вибір стилю детального відображення
|
||||
- `--compact`: псевдонім для `--ws-log compact`
|
||||
|
||||
Приклади:
|
||||
@ -130,7 +130,7 @@ openclaw gateway --verbose --ws-log full
|
||||
|
||||
## Налаштування журналювання
|
||||
|
||||
Усі налаштування журналювання розміщені в розділі `logging` у `~/.openclaw/openclaw.json`.
|
||||
Уся конфігурація журналювання міститься в `logging` у `~/.openclaw/openclaw.json`.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -147,70 +147,76 @@ openclaw gateway --verbose --ws-log full
|
||||
|
||||
### Рівні журналювання
|
||||
|
||||
- `logging.level`: рівень **файлових журналів** (JSONL).
|
||||
- `logging.consoleLevel`: рівень докладності **консолі**.
|
||||
- `logging.level`: рівень **журналів файлів** (JSONL).
|
||||
- `logging.consoleLevel`: рівень деталізації **консолі**.
|
||||
|
||||
Ви можете перевизначити обидва через змінну середовища **`OPENCLAW_LOG_LEVEL`** (наприклад, `OPENCLAW_LOG_LEVEL=debug`). Змінна середовища має вищий пріоритет за файл конфігурації, тож ви можете підвищити докладність для одного запуску без редагування `openclaw.json`. Ви також можете передати глобальний параметр CLI **`--log-level <level>`** (наприклад, `openclaw --log-level debug gateway run`), який перевизначає змінну середовища для цієї команди.
|
||||
Ви можете перевизначити обидва через змінну середовища **`OPENCLAW_LOG_LEVEL`** (наприклад, `OPENCLAW_LOG_LEVEL=debug`). Змінна середовища має вищий пріоритет, ніж файл конфігурації, тому ви можете підвищити деталізацію для одного запуску без редагування `openclaw.json`. Ви також можете передати глобальний параметр CLI **`--log-level <level>`** (наприклад, `openclaw --log-level debug gateway run`), який перевизначає змінну середовища для цієї команди.
|
||||
|
||||
`--verbose` впливає лише на виведення в консоль і докладність журналу WS; він не змінює рівні файлового журналу.
|
||||
`--verbose` впливає лише на виведення в консоль і деталізацію журналів WS; він не змінює рівні журналів файлів.
|
||||
|
||||
### Стилі консолі
|
||||
|
||||
`logging.consoleStyle`:
|
||||
|
||||
- `pretty`: зручний для людей, кольоровий, із часовими мітками.
|
||||
- `compact`: більш стислий вивід (найкраще для довгих сеансів).
|
||||
- `pretty`: зручний для людини, кольоровий, із часовими мітками.
|
||||
- `compact`: компактніше виведення (найкраще для довгих сеансів).
|
||||
- `json`: JSON у кожному рядку (для обробників журналів).
|
||||
|
||||
### Редагування чутливих даних
|
||||
### Редагування
|
||||
|
||||
Підсумки інструментів можуть редагувати чутливі токени до того, як вони потраплять у консоль:
|
||||
|
||||
- `logging.redactSensitive`: `off` | `tools` (типово: `tools`)
|
||||
- `logging.redactPatterns`: список рядків regex для перевизначення типового набору
|
||||
|
||||
Редагування впливає **лише на виведення в консоль** і не змінює файлові журнали.
|
||||
Редагування впливає **лише на виведення в консоль** і не змінює журнали файлів.
|
||||
|
||||
## Діагностика + OpenTelemetry
|
||||
|
||||
Діагностика — це структуровані, машиночитні події для запусків моделей **і**
|
||||
телеметрії потоку повідомлень (webhooks, постановка в чергу, стан сеансу). Вони **не** замінюють журнали; вони існують для подачі метрик, трасувань та інших експортерів.
|
||||
Діагностика — це структуровані, придатні для машинного читання події для запусків моделей **і**
|
||||
телеметрії потоку повідомлень (webhooks, черги, стан сеансу). Вони **не**
|
||||
замінюють журнали; вони існують для подачі даних у метрики, трасування та інші експортери.
|
||||
|
||||
Події діагностики створюються всередині процесу, але експортери підключаються лише тоді, коли ввімкнено діагностику та plugin експортера.
|
||||
Події діагностики створюються в процесі, але експортери підключаються лише тоді, коли
|
||||
увімкнено діагностику + Plugin експорту.
|
||||
|
||||
### OpenTelemetry проти OTLP
|
||||
|
||||
- **OpenTelemetry (OTel)**: модель даних і SDK для трасувань, метрик і журналів.
|
||||
- **OTLP**: мережевий протокол, який використовується для експорту даних OTel у collector/backend.
|
||||
- OpenClaw наразі експортує через **OTLP/HTTP (protobuf)**.
|
||||
- **OpenTelemetry (OTel)**: модель даних + SDK для трасувань, метрик і журналів.
|
||||
- **OTLP**: дротовий протокол, що використовується для експорту даних OTel у колектор/бекенд.
|
||||
- Сьогодні OpenClaw експортує через **OTLP/HTTP (protobuf)**.
|
||||
|
||||
### Експортовані сигнали
|
||||
|
||||
- **Метрики**: лічильники та гістограми (використання токенів, потік повідомлень, постановка в чергу).
|
||||
- **Трасування**: spans для використання моделей і обробки webhook/повідомлень.
|
||||
- **Журнали**: експортуються через OTLP, коли ввімкнено `diagnostics.otel.logs`. Обсяг журналів може бути великим; зважайте на `logging.level` і фільтри експортера.
|
||||
- **Метрики**: лічильники + гістограми (використання токенів, потік повідомлень, черги).
|
||||
- **Трасування**: spans для використання моделей + обробки webhook/повідомлень.
|
||||
- **Журнали**: експортуються через OTLP, коли увімкнено `diagnostics.otel.logs`. Обсяг
|
||||
журналів може бути високим; пам’ятайте про `logging.level` і фільтри експорту.
|
||||
|
||||
### Каталог подій діагностики
|
||||
|
||||
Використання моделей:
|
||||
|
||||
- `model.usage`: токени, вартість, тривалість, контекст, provider/model/channel, ідентифікатори сеансів.
|
||||
- `model.usage`: токени, вартість, тривалість, контекст, provider/model/channel, id сеансів.
|
||||
`usage` — це облік provider/ходу для вартості й телеметрії; `context.used`
|
||||
— це поточний знімок prompt/контексту, і він може бути нижчим за provider
|
||||
`usage.total`, коли задіяно кешоване введення або виклики циклу інструментів.
|
||||
|
||||
Потік повідомлень:
|
||||
|
||||
- `webhook.received`: вхідний webhook для кожного каналу.
|
||||
- `webhook.processed`: оброблений webhook + тривалість.
|
||||
- `webhook.processed`: webhook оброблено + тривалість.
|
||||
- `webhook.error`: помилки обробника webhook.
|
||||
- `message.queued`: повідомлення поставлено в чергу для обробки.
|
||||
- `message.queued`: повідомлення поставлено в чергу на обробку.
|
||||
- `message.processed`: результат + тривалість + необов’язкова помилка.
|
||||
- `message.delivery.started`: розпочато спробу вихідної доставки.
|
||||
- `message.delivery.completed`: завершено спробу вихідної доставки + тривалість/кількість результатів.
|
||||
- `message.delivery.error`: помилка спроби вихідної доставки + тривалість/обмежена категорія помилки.
|
||||
- `message.delivery.error`: спроба вихідної доставки не вдалася + тривалість/обмежена категорія помилки.
|
||||
|
||||
Черга + сеанс:
|
||||
|
||||
- `queue.lane.enqueue`: додавання в lane черги команд + глибина.
|
||||
- `queue.lane.dequeue`: вилучення з lane черги команд + час очікування.
|
||||
- `queue.lane.enqueue`: додавання в lane командної черги + глибина.
|
||||
- `queue.lane.dequeue`: вилучення з lane командної черги + час очікування.
|
||||
- `session.state`: перехід стану сеансу + причина.
|
||||
- `session.stuck`: попередження про завислий сеанс + вік.
|
||||
- `run.attempt`: метадані повторної спроби/спроби запуску.
|
||||
@ -219,12 +225,12 @@ openclaw gateway --verbose --ws-log full
|
||||
Exec:
|
||||
|
||||
- `exec.process.completed`: результат процесу terminal exec, тривалість, ціль, режим,
|
||||
код завершення та тип збою. Текст команди й робочі каталоги не
|
||||
код виходу та тип збою. Текст команди й робочі каталоги не
|
||||
включаються.
|
||||
|
||||
### Увімкнення діагностики (без експортера)
|
||||
### Увімкнення діагностики (без експорту)
|
||||
|
||||
Використовуйте це, якщо хочете, щоб події діагностики були доступні plugin-ам або користувацьким sinks:
|
||||
Використовуйте це, якщо хочете, щоб події діагностики були доступні для Plugin або власних приймачів:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -236,8 +242,8 @@ Exec:
|
||||
|
||||
### Прапорці діагностики (цільові журнали)
|
||||
|
||||
Використовуйте прапорці, щоб увімкнути додаткові, цільові журнали налагодження без підвищення `logging.level`.
|
||||
Прапорці нечутливі до регістру та підтримують wildcard-шаблони (наприклад, `telegram.*` або `*`).
|
||||
Використовуйте прапорці, щоб увімкнути додаткові цільові журнали налагодження без підвищення `logging.level`.
|
||||
Прапорці не чутливі до регістру й підтримують wildcard-символи (наприклад, `telegram.*` або `*`).
|
||||
|
||||
```json
|
||||
{
|
||||
@ -255,14 +261,14 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
|
||||
|
||||
Примітки:
|
||||
|
||||
- Журнали за прапорцями записуються у стандартний файл журналу (той самий, що й `logging.file`).
|
||||
- Журнали прапорців потрапляють до стандартного файлу журналу (того самого, що й `logging.file`).
|
||||
- Виведення все одно редагується відповідно до `logging.redactSensitive`.
|
||||
- Повний посібник: [/diagnostics/flags](/uk/diagnostics/flags).
|
||||
|
||||
### Експорт до OpenTelemetry
|
||||
### Експорт в OpenTelemetry
|
||||
|
||||
Діагностику можна експортувати через plugin `diagnostics-otel` (OTLP/HTTP). Це
|
||||
працює з будь-яким collector/backend OpenTelemetry, який приймає OTLP/HTTP.
|
||||
Діагностику можна експортувати через Plugin `diagnostics-otel` (OTLP/HTTP). Це
|
||||
працює з будь-яким колектором/бекендом OpenTelemetry, який приймає OTLP/HTTP.
|
||||
|
||||
```json
|
||||
{
|
||||
@ -301,20 +307,22 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload
|
||||
|
||||
Примітки:
|
||||
|
||||
- Ви також можете ввімкнути plugin за допомогою `openclaw plugins enable diagnostics-otel`.
|
||||
- Ви також можете ввімкнути Plugin за допомогою `openclaw plugins enable diagnostics-otel`.
|
||||
- `protocol` наразі підтримує лише `http/protobuf`. `grpc` ігнорується.
|
||||
- Метрики включають використання токенів, вартість, розмір контексту, тривалість запуску та лічильники/гістограми потоку повідомлень (webhooks, постановка в чергу, стан сеансу, глибина/очікування черги).
|
||||
- Трасування/метрики можна перемикати через `traces` / `metrics` (типово: увімкнено). Трасування включають spans використання моделей, а також spans обробки webhook/повідомлень, коли це ввімкнено.
|
||||
- Необроблений вміст моделей/інструментів типово не експортується. Використовуйте
|
||||
`diagnostics.otel.captureContent` лише тоді, коли ваші правила щодо collector і зберігання
|
||||
схвалюють текст підказок, відповідей, інструментів або системних підказок.
|
||||
- Установіть `headers`, якщо ваш collector вимагає автентифікації.
|
||||
- Метрики включають використання токенів, вартість, розмір контексту, тривалість запуску та
|
||||
лічильники/гістограми потоку повідомлень (webhooks, черги, стан сеансу, глибина/очікування черги).
|
||||
- Трасування/метрики можна вмикати й вимикати через `traces` / `metrics` (типово: увімкнено). Трасування
|
||||
включають spans використання моделей, а також spans обробки webhook/повідомлень, коли їх увімкнено.
|
||||
- Необроблений вміст моделі/інструментів типово не експортується. Використовуйте
|
||||
`diagnostics.otel.captureContent` лише тоді, коли ваш колектор і політика зберігання
|
||||
схвалені для тексту prompt, відповіді, інструмента або системного prompt.
|
||||
- Встановіть `headers`, якщо ваш колектор потребує автентифікації.
|
||||
- Підтримувані змінні середовища: `OTEL_EXPORTER_OTLP_ENDPOINT`,
|
||||
`OTEL_SERVICE_NAME`, `OTEL_EXPORTER_OTLP_PROTOCOL`.
|
||||
- Установіть `OPENCLAW_OTEL_PRELOADED=1`, коли інше попереднє завантаження або хост-процес уже
|
||||
зареєстрували глобальний SDK OpenTelemetry. У цьому режимі plugin не запускає
|
||||
- Встановіть `OPENCLAW_OTEL_PRELOADED=1`, коли інше попереднє завантаження або хост-процес уже
|
||||
зареєстрували глобальний SDK OpenTelemetry. У цьому режимі Plugin не запускає
|
||||
і не завершує власний SDK, але все одно підключає слухачі діагностики OpenClaw і
|
||||
дотримується `diagnostics.otel.traces`, `metrics` і `logs`.
|
||||
враховує `diagnostics.otel.traces`, `metrics` і `logs`.
|
||||
|
||||
### Експортовані метрики (назви + типи)
|
||||
|
||||
@ -369,7 +377,7 @@ Exec:
|
||||
- `openclaw.exec.duration_ms` (histogram, attrs: `openclaw.exec.target`,
|
||||
`openclaw.exec.mode`, `openclaw.outcome`, `openclaw.failureKind`)
|
||||
|
||||
Внутрішні компоненти діагностики (пам’ять + цикл інструментів):
|
||||
Внутрішня діагностика (пам’ять + цикл інструментів):
|
||||
|
||||
- `openclaw.memory.heap_used_bytes` (histogram, attrs: `openclaw.memory.kind`)
|
||||
- `openclaw.memory.rss_bytes` (histogram)
|
||||
@ -391,8 +399,8 @@ Exec:
|
||||
- `gen_ai.system`, `gen_ai.request.model`, `gen_ai.operation.name`,
|
||||
`openclaw.provider`, `openclaw.model`, `openclaw.api`,
|
||||
`openclaw.transport`, `openclaw.provider.request_id_hash` (обмежений
|
||||
SHA-хеш ідентифікатора запиту до висхідного provider; необроблені id не
|
||||
експортуються)
|
||||
хеш на основі SHA ідентифікатора запиту до висхідного provider; необроблені id
|
||||
не експортуються)
|
||||
- `openclaw.tool.execution`
|
||||
- `gen_ai.tool.name`, `openclaw.toolName`, `openclaw.errorCategory`,
|
||||
`openclaw.tool.params.*`
|
||||
@ -416,46 +424,46 @@ Exec:
|
||||
- `openclaw.context.assembled`
|
||||
- `openclaw.prompt.size`, `openclaw.history.size`,
|
||||
`openclaw.context.tokens`, `openclaw.errorCategory` (без вмісту prompt,
|
||||
history, response або ключа сеансу)
|
||||
історії, відповіді або ключа сеансу)
|
||||
- `openclaw.tool.loop`
|
||||
- `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`,
|
||||
`openclaw.errorCategory` (без повідомлень циклу, параметрів або виводу інструмента)
|
||||
`openclaw.errorCategory` (без повідомлень циклу, параметрів або виведення інструмента)
|
||||
- `openclaw.memory.pressure`
|
||||
- `openclaw.memory.level`, `openclaw.memory.heap_used_bytes`,
|
||||
`openclaw.memory.rss_bytes`
|
||||
|
||||
Коли захоплення вмісту явно ввімкнено, spans моделей/інструментів також можуть містити
|
||||
обмежені, відредаговані атрибути `openclaw.content.*` для конкретних класів вмісту,
|
||||
які ви вирішили включити.
|
||||
Коли захоплення вмісту явно ввімкнено, spans моделі/інструмента також можуть містити
|
||||
обмежені, відредаговані атрибути `openclaw.content.*` для конкретних класів
|
||||
вмісту, які ви явно дозволили.
|
||||
|
||||
### Семплювання + скидання
|
||||
### Вибірка + скидання
|
||||
|
||||
- Семплювання трасувань: `diagnostics.otel.sampleRate` (0.0–1.0, лише root spans).
|
||||
- Вибірка трасувань: `diagnostics.otel.sampleRate` (0.0–1.0, лише кореневі spans).
|
||||
- Інтервал експорту метрик: `diagnostics.otel.flushIntervalMs` (мінімум 1000 мс).
|
||||
|
||||
### Примітки щодо протоколу
|
||||
|
||||
- Кінцеві точки OTLP/HTTP можна задавати через `diagnostics.otel.endpoint` або
|
||||
- Кінцеві точки OTLP/HTTP можна задати через `diagnostics.otel.endpoint` або
|
||||
`OTEL_EXPORTER_OTLP_ENDPOINT`.
|
||||
- Якщо кінцева точка вже містить `/v1/traces` або `/v1/metrics`, вона використовується як є.
|
||||
- Якщо кінцева точка вже містить `/v1/logs`, вона використовується як є для журналів.
|
||||
- `OPENCLAW_OTEL_PRELOADED=1` повторно використовує зовнішньо зареєстрований SDK OpenTelemetry
|
||||
для трасувань/метрик замість запуску NodeSDK, що належить plugin-у.
|
||||
- `diagnostics.otel.logs` вмикає експорт журналів OTLP для виведення основного логера.
|
||||
для трасувань/метрик замість запуску NodeSDK, що належить Plugin.
|
||||
- `diagnostics.otel.logs` вмикає експорт журналів OTLP для виведення основного журналера.
|
||||
|
||||
### Поведінка експорту журналів
|
||||
|
||||
- Журнали OTLP використовують ті самі структуровані записи, що записуються в `logging.file`.
|
||||
- Дотримуються `logging.level` (рівень файлового журналу). Редагування консолі **не** застосовується
|
||||
- Дотримуються `logging.level` (рівня журналів файлів). Редагування консолі **не** застосовується
|
||||
до журналів OTLP.
|
||||
- Для інсталяцій із великим обсягом даних краще використовувати семплювання/фільтрацію на рівні OTLP collector.
|
||||
- Для інсталяцій із великим обсягом даних слід віддавати перевагу вибірці/фільтрації на боці OTLP-колектора.
|
||||
|
||||
## Поради з усунення несправностей
|
||||
|
||||
- **Gateway недоступний?** Спочатку виконайте `openclaw doctor`.
|
||||
- **Журнали порожні?** Перевірте, що Gateway запущений і записує у шлях до файлу,
|
||||
- **Gateway недоступний?** Спочатку запустіть `openclaw doctor`.
|
||||
- **Журнали порожні?** Перевірте, чи запущений Gateway і чи записує він у шлях до файлу,
|
||||
вказаний у `logging.file`.
|
||||
- **Потрібно більше деталей?** Установіть `logging.level` у `debug` або `trace` і повторіть спробу.
|
||||
- **Потрібно більше деталей?** Встановіть `logging.level` на `debug` або `trace` і повторіть спробу.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете здійснити вихідний голосовий дзвінок з OpenClaw
|
||||
- Ви налаштовуєте або розробляєте Plugin voice-call
|
||||
summary: 'Plugin Voice Call: вхідні й вихідні дзвінки через Twilio/Telnyx/Plivo (встановлення Plugin + конфігурація + CLI)'
|
||||
title: Plugin Voice Call
|
||||
- Ви налаштовуєте або розробляєте плагін voice-call
|
||||
summary: 'Плагін Voice Call: вихідні + вхідні дзвінки через Twilio/Telnyx/Plivo (встановлення плагіна + конфігурація + CLI)'
|
||||
title: Плагін Voice call
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T05:58:02Z"
|
||||
generated_at: "2026-04-25T19:29:27Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: bb396c6e346590b742c4d0f0e4f9653982da78fc40b9650760ed10d6fcd5710c
|
||||
source_hash: f6f6cb9346b63751756b8c6744b56486d1856b2d0f3b94082ced42c7435595d6
|
||||
source_path: plugins/voice-call.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Голосові дзвінки для OpenClaw через Plugin. Підтримує вихідні сповіщення та
|
||||
багатоходові розмови з політиками для вхідних викликів.
|
||||
багатоходові розмови з політиками вхідних дзвінків.
|
||||
|
||||
Поточні провайдери:
|
||||
|
||||
@ -34,11 +34,11 @@ x-i18n:
|
||||
|
||||
Plugin Voice Call працює **всередині процесу Gateway**.
|
||||
|
||||
Якщо ви використовуєте віддалений Gateway, встановіть/налаштуйте Plugin на **машині, де працює Gateway**, а потім перезапустіть Gateway, щоб завантажити його.
|
||||
Якщо ви використовуєте віддалений Gateway, встановіть/налаштуйте Plugin на **машині, де працює Gateway**, а потім перезапустіть Gateway, щоб його завантажити.
|
||||
|
||||
## Встановлення
|
||||
|
||||
### Варіант A: встановлення з npm (рекомендовано)
|
||||
### Варіант A: встановити з npm (рекомендовано)
|
||||
|
||||
```bash
|
||||
openclaw plugins install @openclaw/voice-call
|
||||
@ -46,7 +46,7 @@ openclaw plugins install @openclaw/voice-call
|
||||
|
||||
Після цього перезапустіть Gateway.
|
||||
|
||||
### Варіант B: встановлення з локальної папки (розробка, без копіювання)
|
||||
### Варіант B: встановити з локальної папки (розробка, без копіювання)
|
||||
|
||||
```bash
|
||||
PLUGIN_SRC=./path/to/local/voice-call-plugin
|
||||
@ -60,6 +60,8 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
|
||||
Задайте конфігурацію в `plugins.entries.voice-call.config`:
|
||||
|
||||
Якщо `enabled` має значення true, але для вибраного провайдера відсутні облікові дані, під час запуску Gateway у журналах з’явиться попередження про незавершене налаштування з відсутніми ключами, і запуск runtime буде пропущено. Виконайте `openclaw voicecall setup`, щоб побачити ті самі відомості про готовність. Команди, RPC-виклики й інструменти агента все одно повертають точну інформацію про відсутню конфігурацію провайдера під час використання.
|
||||
|
||||
```json5
|
||||
{
|
||||
plugins: {
|
||||
@ -67,8 +69,8 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
"voice-call": {
|
||||
enabled: true,
|
||||
config: {
|
||||
provider: "twilio", // or "telnyx" | "plivo" | "mock"
|
||||
fromNumber: "+15550001234", // or TWILIO_FROM_NUMBER for Twilio
|
||||
provider: "twilio", // або "telnyx" | "plivo" | "mock"
|
||||
fromNumber: "+15550001234", // або TWILIO_FROM_NUMBER для Twilio
|
||||
toNumber: "+15550005678",
|
||||
|
||||
twilio: {
|
||||
@ -79,8 +81,8 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
telnyx: {
|
||||
apiKey: "...",
|
||||
connectionId: "...",
|
||||
// Telnyx webhook public key from the Telnyx Mission Control Portal
|
||||
// (Base64 string; can also be set via TELNYX_PUBLIC_KEY).
|
||||
// Публічний ключ webhook Telnyx з порталу Telnyx Mission Control
|
||||
// (рядок Base64; також можна задати через TELNYX_PUBLIC_KEY).
|
||||
publicKey: "...",
|
||||
},
|
||||
|
||||
@ -89,19 +91,19 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
authToken: "...",
|
||||
},
|
||||
|
||||
// Webhook server
|
||||
// Сервер Webhook
|
||||
serve: {
|
||||
port: 3334,
|
||||
path: "/voice/webhook",
|
||||
},
|
||||
|
||||
// Webhook security (recommended for tunnels/proxies)
|
||||
// Безпека Webhook (рекомендовано для тунелів/проксі)
|
||||
webhookSecurity: {
|
||||
allowedHosts: ["voice.example.com"],
|
||||
trustedProxyIPs: ["100.64.0.1"],
|
||||
},
|
||||
|
||||
// Public exposure (pick one)
|
||||
// Публічний доступ (виберіть один варіант)
|
||||
// publicUrl: "https://example.ngrok.app/voice/webhook",
|
||||
// tunnel: { provider: "ngrok" },
|
||||
// tailscale: { mode: "funnel", path: "/voice/webhook" }
|
||||
@ -112,11 +114,11 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
|
||||
streaming: {
|
||||
enabled: true,
|
||||
provider: "openai", // optional; first registered realtime transcription provider when unset
|
||||
provider: "openai", // необов’язково; перший зареєстрований провайдер транскрипції в реальному часі, якщо не задано
|
||||
streamPath: "/voice/stream",
|
||||
providers: {
|
||||
openai: {
|
||||
apiKey: "sk-...", // optional if OPENAI_API_KEY is set
|
||||
apiKey: "sk-...", // необов’язково, якщо задано OPENAI_API_KEY
|
||||
model: "gpt-4o-transcribe",
|
||||
silenceDurationMs: 800,
|
||||
vadThreshold: 0.5,
|
||||
@ -130,7 +132,7 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
|
||||
realtime: {
|
||||
enabled: false,
|
||||
provider: "google", // optional; first registered realtime voice provider when unset
|
||||
provider: "google", // необов’язково; перший зареєстрований провайдер голосу в реальному часі, якщо не задано
|
||||
toolPolicy: "safe-read-only",
|
||||
providers: {
|
||||
google: {
|
||||
@ -146,31 +148,29 @@ cd "$PLUGIN_SRC" && pnpm install
|
||||
}
|
||||
```
|
||||
|
||||
Перевірте налаштування перед тестуванням із реальним провайдером:
|
||||
Перед тестуванням із реальним провайдером перевірте налаштування:
|
||||
|
||||
```bash
|
||||
openclaw voicecall setup
|
||||
```
|
||||
|
||||
Типовий вивід зручний для читання в журналах чату та сесіях термінала. Він перевіряє,
|
||||
чи Plugin увімкнено, чи задано провайдера й облікові дані, чи налаштовано
|
||||
публічну доступність Webhook, і чи активний лише один аудіорежим. Для сценаріїв
|
||||
використовуйте `openclaw voicecall setup --json`.
|
||||
Типовий вивід зручно читати в журналах чату та сеансах термінала. Він перевіряє,
|
||||
чи увімкнено Plugin, чи наявні провайдер і облікові дані, чи налаштовано публічний доступ до webhook, і чи активний лише один аудіорежим. Для скриптів використовуйте
|
||||
`openclaw voicecall setup --json`.
|
||||
|
||||
Для Twilio, Telnyx і Plivo налаштування має визначатися в публічний URL Webhook. Якщо
|
||||
налаштований `publicUrl`, URL тунелю, URL Tailscale або резервний `serve` визначається як
|
||||
loopback або приватний мережевий простір, налаштування завершується помилкою замість запуску
|
||||
провайдера, який не може отримувати реальні carrier Webhook.
|
||||
Для Twilio, Telnyx і Plivo налаштування має визначити публічний URL webhook. Якщо
|
||||
налаштований `publicUrl`, URL тунелю, URL Tailscale або резервний `serve`
|
||||
вказує на loopback чи простір приватної мережі, налаштування завершується помилкою замість запуску провайдера, який не може приймати реальні webhook від оператора.
|
||||
|
||||
Для передбачуваного smoke-тесту виконайте:
|
||||
Для простого smoke-тесту без сюрпризів виконайте:
|
||||
|
||||
```bash
|
||||
openclaw voicecall smoke
|
||||
openclaw voicecall smoke --to "+15555550123"
|
||||
```
|
||||
|
||||
Друга команда все ще є dry run. Додайте `--yes`, щоб здійснити короткий
|
||||
вихідний дзвінок-сповіщення:
|
||||
Друга команда все ще є dry run. Додайте `--yes`, щоб здійснити короткий вихідний
|
||||
дзвінок у режимі notify:
|
||||
|
||||
```bash
|
||||
openclaw voicecall smoke --to "+15555550123" --yes
|
||||
@ -178,28 +178,28 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
|
||||
Примітки:
|
||||
|
||||
- Twilio/Telnyx потребують **публічно доступного** URL Webhook.
|
||||
- Plivo потребує **публічно доступного** URL Webhook.
|
||||
- Twilio/Telnyx потребують **публічно доступного** URL webhook.
|
||||
- Plivo потребує **публічно доступного** URL webhook.
|
||||
- `mock` — це локальний провайдер для розробки (без мережевих викликів).
|
||||
- Якщо старі конфігурації все ще використовують `provider: "log"`, `twilio.from` або застарілі ключі `streaming.*` для OpenAI, виконайте `openclaw doctor --fix`, щоб переписати їх.
|
||||
- Якщо в старих конфігураціях досі використовується `provider: "log"`, `twilio.from` або застарілі ключі OpenAI `streaming.*`, виконайте `openclaw doctor --fix`, щоб переписати їх.
|
||||
- Telnyx потребує `telnyx.publicKey` (або `TELNYX_PUBLIC_KEY`), якщо лише `skipSignatureVerification` не має значення true.
|
||||
- `skipSignatureVerification` — лише для локального тестування.
|
||||
- Якщо ви використовуєте безкоштовний тариф ngrok, встановіть `publicUrl` точно на URL ngrok; перевірка підпису завжди примусово застосовується.
|
||||
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` дозволяє Webhook Twilio з недійсними підписами **лише** коли `tunnel.provider="ngrok"` і `serve.bind` — це loopback (локальний агент ngrok). Використовуйте лише для локальної розробки.
|
||||
- URL безкоштовного тарифу ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` зміщується, підписи Twilio не проходитимуть перевірку. Для продакшену віддавайте перевагу стабільному домену або Tailscale funnel.
|
||||
- `skipSignatureVerification` призначено лише для локального тестування.
|
||||
- Якщо ви використовуєте безкоштовний рівень ngrok, задайте `publicUrl` точно як URL ngrok; перевірка підпису завжди примусово виконується.
|
||||
- `tunnel.allowNgrokFreeTierLoopbackBypass: true` дозволяє webhook Twilio з недійсними підписами **лише** коли `tunnel.provider="ngrok"` і `serve.bind` є loopback (локальний агент ngrok). Використовуйте лише для локальної розробки.
|
||||
- URL безкоштовного рівня ngrok можуть змінюватися або додавати проміжну поведінку; якщо `publicUrl` зміниться, підписи Twilio не пройдуть перевірку. Для production краще використовувати стабільний домен або Tailscale funnel.
|
||||
- `realtime.enabled` запускає повноцінні голосові розмови voice-to-voice; не вмикайте його разом із `streaming.enabled`.
|
||||
- Типові параметри безпеки потокової передачі:
|
||||
- `streaming.preStartTimeoutMs` закриває сокети, які так і не надіслали коректний кадр `start`.
|
||||
- `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих сокетів до старту.
|
||||
- `streaming.maxPendingConnectionsPerIp` обмежує кількість неавтентифікованих сокетів до старту на одну IP-адресу джерела.
|
||||
- `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікування + активні).
|
||||
- Runtime fallback поки що все ще приймає ці старі ключі voice-call, але шлях переписування — це `openclaw doctor --fix`, а compat shim є тимчасовим.
|
||||
- Типові параметри безпеки streaming:
|
||||
- `streaming.preStartTimeoutMs` закриває сокети, які так і не надсилають коректний кадр `start`.
|
||||
- `streaming.maxPendingConnections` обмежує загальну кількість неавтентифікованих pre-start сокетів.
|
||||
- `streaming.maxPendingConnectionsPerIp` обмежує кількість неавтентифікованих pre-start сокетів для кожної вихідної IP-адреси.
|
||||
- `streaming.maxConnections` обмежує загальну кількість відкритих сокетів медіапотоку (очікувані + активні).
|
||||
- Runtime fallback поки що все ще приймає ці старі ключі voice-call, але шлях переписування — це `openclaw doctor --fix`, а shim сумісності є тимчасовим.
|
||||
|
||||
## Голосові розмови в реальному часі
|
||||
|
||||
`realtime` вибирає повнодуплексного провайдера голосу в реальному часі для живого аудіо дзвінка.
|
||||
Він відокремлений від `streaming`, який лише пересилає аудіо провайдерам
|
||||
транскрипції в реальному часі.
|
||||
`realtime` вибирає повнодуплексного провайдера голосу в реальному часі для аудіо
|
||||
живих дзвінків. Це окремо від `streaming`, який лише пересилає аудіо до
|
||||
провайдерів транскрипції в реальному часі.
|
||||
|
||||
Поточна поведінка runtime:
|
||||
|
||||
@ -207,28 +207,28 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
- `realtime.enabled` не можна поєднувати з `streaming.enabled`.
|
||||
- `realtime.provider` є необов’язковим. Якщо не задано, Voice Call використовує першого
|
||||
зареєстрованого провайдера голосу в реальному часі.
|
||||
- Вбудовані провайдери голосу в реальному часі включають Google Gemini Live (`google`) та
|
||||
OpenAI (`openai`), які реєструються їхніми provider Plugin.
|
||||
- Сира конфігурація, якою володіє провайдер, розміщується в `realtime.providers.<providerId>`.
|
||||
- Вбудовані провайдери голосу в реальному часі включають Google Gemini Live (`google`) і
|
||||
OpenAI (`openai`), зареєстровані їхніми Plugin провайдерів.
|
||||
- Необроблена конфігурація, якою керує провайдер, міститься в `realtime.providers.<providerId>`.
|
||||
- Voice Call типово надає спільний інструмент реального часу `openclaw_agent_consult`.
|
||||
Модель реального часу може викликати його, коли абонент просить про глибше
|
||||
Модель реального часу може викликати його, коли абонент просить глибше
|
||||
міркування, актуальну інформацію або звичайні інструменти OpenClaw.
|
||||
- `realtime.toolPolicy` керує запуском consult:
|
||||
- `safe-read-only`: надає інструмент consult і обмежує звичайного агента
|
||||
до `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і
|
||||
- `safe-read-only`: надавати інструмент consult і обмежувати звичайного агента
|
||||
інструментами `read`, `web_search`, `web_fetch`, `x_search`, `memory_search` і
|
||||
`memory_get`.
|
||||
- `owner`: надає інструмент consult і дозволяє звичайному агенту використовувати
|
||||
звичайну політику інструментів агента.
|
||||
- `none`: не надає інструмент consult. Користувацькі `realtime.tools` усе одно
|
||||
- `owner`: надавати інструмент consult і дозволяти звичайному агенту використовувати звичайну
|
||||
політику інструментів агента.
|
||||
- `none`: не надавати інструмент consult. Користувацькі `realtime.tools` усе одно
|
||||
передаються провайдеру реального часу.
|
||||
- Ключі сесії consult повторно використовують наявну голосову сесію, коли це можливо, а потім
|
||||
резервно використовують номер телефону абонента/одержувача, щоб наступні виклики consult
|
||||
зберігали контекст під час дзвінка.
|
||||
- Якщо `realtime.provider` вказує на незареєстрованого провайдера або якщо взагалі не
|
||||
зареєстровано жодного провайдера голосу в реальному часі, Voice Call записує попередження
|
||||
в журнал і пропускає медіа реального часу замість зламу всього Plugin.
|
||||
- Ключі сеансу consult повторно використовують наявний голосовий сеанс, коли це можливо, а потім
|
||||
переходять до номера телефону абонента/одержувача, щоб подальші виклики consult зберігали
|
||||
контекст під час дзвінка.
|
||||
- Якщо `realtime.provider` вказує на незареєстрованого провайдера, або якщо взагалі не зареєстровано
|
||||
жодного провайдера голосу в реальному часі, Voice Call записує попередження в журнал і пропускає
|
||||
медіа реального часу замість того, щоб зламати весь Plugin.
|
||||
|
||||
Типові значення для Google Gemini Live realtime:
|
||||
Типові налаштування реального часу Google Gemini Live:
|
||||
|
||||
- API key: `realtime.providers.google.apiKey`, `GEMINI_API_KEY` або
|
||||
`GOOGLE_GENERATIVE_AI_API_KEY`
|
||||
@ -249,7 +249,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
realtime: {
|
||||
enabled: true,
|
||||
provider: "google",
|
||||
instructions: "Speak briefly. Call openclaw_agent_consult before using deeper tools.",
|
||||
instructions: "Говори коротко. Викликай openclaw_agent_consult перед використанням глибших інструментів.",
|
||||
toolPolicy: "safe-read-only",
|
||||
providers: {
|
||||
google: {
|
||||
@ -266,7 +266,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
}
|
||||
```
|
||||
|
||||
Використання OpenAI замість цього:
|
||||
Замість цього використовуйте OpenAI:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -293,9 +293,9 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
Див. [Google provider](/uk/providers/google) і [OpenAI provider](/uk/providers/openai)
|
||||
для параметрів голосу в реальному часі, специфічних для провайдера.
|
||||
|
||||
## Потокова транскрипція
|
||||
## Транскрипція streaming
|
||||
|
||||
`streaming` вибирає провайдера транскрипції в реальному часі для живого аудіо дзвінка.
|
||||
`streaming` вибирає провайдера транскрипції в реальному часі для аудіо живих дзвінків.
|
||||
|
||||
Поточна поведінка runtime:
|
||||
|
||||
@ -303,20 +303,20 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
зареєстрованого провайдера транскрипції в реальному часі.
|
||||
- Вбудовані провайдери транскрипції в реальному часі включають Deepgram (`deepgram`),
|
||||
ElevenLabs (`elevenlabs`), Mistral (`mistral`), OpenAI (`openai`) і xAI
|
||||
(`xai`), які реєструються їхніми provider Plugin.
|
||||
- Сира конфігурація, якою володіє провайдер, розміщується в `streaming.providers.<providerId>`.
|
||||
- Якщо `streaming.provider` вказує на незареєстрованого провайдера або якщо взагалі не
|
||||
зареєстровано жодного провайдера транскрипції в реальному часі, Voice Call записує попередження в журнал і
|
||||
пропускає потокову передачу медіа замість зламу всього Plugin.
|
||||
(`xai`), зареєстровані їхніми Plugin провайдерів.
|
||||
- Необроблена конфігурація, якою керує провайдер, міститься в `streaming.providers.<providerId>`.
|
||||
- Якщо `streaming.provider` вказує на незареєстрованого провайдера або якщо взагалі не зареєстровано
|
||||
жодного провайдера транскрипції в реальному часі, Voice Call записує попередження в журнал і
|
||||
пропускає медіапотік замість того, щоб зламати весь Plugin.
|
||||
|
||||
Типові значення потокової транскрипції OpenAI:
|
||||
Типові налаштування транскрипції streaming OpenAI:
|
||||
|
||||
- API key: `streaming.providers.openai.apiKey` або `OPENAI_API_KEY`
|
||||
- model: `gpt-4o-transcribe`
|
||||
- `silenceDurationMs`: `800`
|
||||
- `vadThreshold`: `0.5`
|
||||
|
||||
Типові значення потокової транскрипції xAI:
|
||||
Типові налаштування транскрипції streaming xAI:
|
||||
|
||||
- API key: `streaming.providers.xai.apiKey` або `XAI_API_KEY`
|
||||
- endpoint: `wss://api.x.ai/v1/stt`
|
||||
@ -339,7 +339,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
streamPath: "/voice/stream",
|
||||
providers: {
|
||||
openai: {
|
||||
apiKey: "sk-...", // optional if OPENAI_API_KEY is set
|
||||
apiKey: "sk-...", // необов’язково, якщо задано OPENAI_API_KEY
|
||||
model: "gpt-4o-transcribe",
|
||||
silenceDurationMs: 800,
|
||||
vadThreshold: 0.5,
|
||||
@ -353,7 +353,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
}
|
||||
```
|
||||
|
||||
Використання xAI замість цього:
|
||||
Замість цього використовуйте xAI:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -367,7 +367,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
streamPath: "/voice/stream",
|
||||
providers: {
|
||||
xai: {
|
||||
apiKey: "${XAI_API_KEY}", // optional if XAI_API_KEY is set
|
||||
apiKey: "${XAI_API_KEY}", // необов’язково, якщо задано XAI_API_KEY
|
||||
endpointingMs: 800,
|
||||
language: "en",
|
||||
},
|
||||
@ -380,7 +380,7 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
}
|
||||
```
|
||||
|
||||
Застарілі ключі все ще автоматично мігруються через `openclaw doctor --fix`:
|
||||
Застарілі ключі все ще автоматично мігруються за допомогою `openclaw doctor --fix`:
|
||||
|
||||
- `streaming.sttProvider` → `streaming.provider`
|
||||
- `streaming.openaiApiKey` → `streaming.providers.openai.apiKey`
|
||||
@ -390,15 +390,15 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
|
||||
## Очищувач застарілих дзвінків
|
||||
|
||||
Використовуйте `staleCallReaperSeconds`, щоб завершувати дзвінки, які ніколи не отримують термінального Webhook
|
||||
Використовуйте `staleCallReaperSeconds`, щоб завершувати дзвінки, які ніколи не отримують термінальний webhook
|
||||
(наприклад, дзвінки в режимі notify, які ніколи не завершуються). Типове значення — `0`
|
||||
(вимкнено).
|
||||
|
||||
Рекомендовані діапазони:
|
||||
|
||||
- **Продакшен:** `120`–`300` секунд для потоків у стилі notify.
|
||||
- **Production:** `120`–`300` секунд для потоків у стилі notify.
|
||||
- Тримайте це значення **вищим за `maxDurationSeconds`**, щоб звичайні дзвінки могли
|
||||
завершитися. Добра стартова точка — `maxDurationSeconds + 30–60` секунд.
|
||||
завершитися. Хороша початкова точка — `maxDurationSeconds + 30–60` секунд.
|
||||
|
||||
Приклад:
|
||||
|
||||
@ -419,29 +419,28 @@ openclaw voicecall smoke --to "+15555550123" --yes
|
||||
|
||||
## Безпека Webhook
|
||||
|
||||
Коли перед Gateway стоїть проксі або тунель, Plugin реконструює
|
||||
Коли перед Gateway розташований проксі або тунель, Plugin відновлює
|
||||
публічний URL для перевірки підпису. Ці параметри керують тим,
|
||||
яким forwarded headers довіряти.
|
||||
яким пересланим заголовкам довіряти.
|
||||
|
||||
`webhookSecurity.allowedHosts` дозволяє лише хости з forwarded headers.
|
||||
`webhookSecurity.allowedHosts` задає список дозволених хостів із пересланих заголовків.
|
||||
|
||||
`webhookSecurity.trustForwardingHeaders` довіряє forwarded headers без allowlist.
|
||||
`webhookSecurity.trustForwardingHeaders` довіряє пересланим заголовкам без списку дозволених.
|
||||
|
||||
`webhookSecurity.trustedProxyIPs` довіряє forwarded headers лише тоді, коли
|
||||
`webhookSecurity.trustedProxyIPs` довіряє пересланим заголовкам, лише якщо
|
||||
віддалена IP-адреса запиту збігається зі списком.
|
||||
|
||||
Захист від повторного відтворення Webhook увімкнено для Twilio і Plivo. Повторно
|
||||
відтворені валідні запити Webhook підтверджуються, але пропускаються для побічних ефектів.
|
||||
Захист від повторного відтворення webhook увімкнено для Twilio і Plivo. Повторно відтворені коректні webhook-запити
|
||||
підтверджуються, але пропускаються щодо побічних ефектів.
|
||||
|
||||
Ходи розмови Twilio включають токен для кожного ходу в зворотних викликах `<Gather>`, тож
|
||||
застарілі/повторно відтворені callback-и розпізнавання мовлення не можуть задовольнити
|
||||
новіший хід очікуваної транскрипції.
|
||||
Повороти розмови Twilio включають токен на кожен поворот у зворотних викликах `<Gather>`, тож
|
||||
застарілі/повторно відтворені callback-и мовлення не можуть задовольнити новіший очікуваний поворот транскрипту.
|
||||
|
||||
Неавтентифіковані запити Webhook відхиляються ще до читання body, якщо
|
||||
Неавтентифіковані webhook-запити відхиляються до читання тіла, якщо
|
||||
відсутні обов’язкові заголовки підпису провайдера.
|
||||
|
||||
Webhook voice-call використовує спільний профіль body до автентифікації (64 КБ / 5 секунд)
|
||||
плюс обмеження одночасних запитів на IP до перевірки підпису.
|
||||
Webhook voice-call використовує спільний профіль тіла pre-auth (64 KB / 5 секунд)
|
||||
плюс обмеження кількості одночасних запитів на IP перед перевіркою підпису.
|
||||
|
||||
Приклад зі стабільним публічним хостом:
|
||||
|
||||
@ -464,9 +463,9 @@ Webhook voice-call використовує спільний профіль body
|
||||
|
||||
## TTS для дзвінків
|
||||
|
||||
Voice Call використовує базову конфігурацію `messages.tts` для
|
||||
потокового мовлення в дзвінках. Ви можете перевизначити її в конфігурації Plugin з
|
||||
**тією самою структурою** — вона глибоко об’єднується з `messages.tts`.
|
||||
Voice Call використовує основну конфігурацію `messages.tts` для
|
||||
потокового мовлення під час дзвінків. Ви можете перевизначити її в конфігурації Plugin із
|
||||
**тією самою структурою** — вона глибоко зливається з `messages.tts`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -484,18 +483,18 @@ Voice Call використовує базову конфігурацію `messa
|
||||
|
||||
Примітки:
|
||||
|
||||
- Застарілі ключі `tts.<provider>` в конфігурації Plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються через `openclaw doctor --fix`; збережена конфігурація має використовувати `tts.providers.<provider>`.
|
||||
- **Microsoft speech ігнорується для голосових дзвінків** (аудіо телефонії потребує PCM; поточний транспорт Microsoft не надає телекомунікаційний вивід PCM).
|
||||
- Базовий TTS використовується, коли увімкнено потокову передачу медіа Twilio; в іншому разі дзвінки резервно використовують рідні голоси провайдера.
|
||||
- Якщо медіапотік Twilio вже активний, Voice Call не переходить резервно на TwiML `<Say>`. Якщо TTS телефонії в цьому стані недоступний, запит на відтворення завершується помилкою замість змішування двох шляхів відтворення.
|
||||
- Коли TTS телефонії резервно переходить на вторинного провайдера, Voice Call записує попередження в журнал із ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження.
|
||||
- Коли barge-in Twilio або завершення потоку очищає чергу очікуваного TTS, запити
|
||||
відтворення в черзі завершуються замість зависання викликачів, які очікують
|
||||
завершення відтворення.
|
||||
- Застарілі ключі `tts.<provider>` у конфігурації Plugin (`openai`, `elevenlabs`, `microsoft`, `edge`) виправляються через `openclaw doctor --fix`; у збереженій конфігурації слід використовувати `tts.providers.<provider>`.
|
||||
- **Microsoft speech ігнорується для голосових дзвінків** (телефонному аудіо потрібен PCM; поточний транспорт Microsoft не надає вихід PCM для телефонії).
|
||||
- Основний TTS використовується, коли увімкнено потокову передачу медіа Twilio; в іншому разі дзвінки повертаються до рідних голосів провайдера.
|
||||
- Якщо медіапотік Twilio вже активний, Voice Call не повертається до TwiML `<Say>`. Якщо TTS телефонії недоступний у такому стані, запит на відтворення завершується помилкою замість змішування двох шляхів відтворення.
|
||||
- Коли TTS телефонії повертається до вторинного провайдера, Voice Call записує попередження з ланцюжком провайдерів (`from`, `to`, `attempts`) для налагодження.
|
||||
- Коли barge-in Twilio або завершення потоку очищає чергу очікування TTS, поставлені в чергу
|
||||
запити відтворення завершуються замість зависання абонентів, які очікують завершення
|
||||
відтворення.
|
||||
|
||||
### Більше прикладів
|
||||
|
||||
Використовувати лише базовий TTS (без перевизначення):
|
||||
Використовувати лише основний TTS (без перевизначення):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -510,7 +509,7 @@ Voice Call використовує базову конфігурацію `messa
|
||||
}
|
||||
```
|
||||
|
||||
Перевизначити на ElevenLabs лише для дзвінків (залишити базове типове значення деінде):
|
||||
Перевизначити на ElevenLabs лише для дзвінків (залишити основне типове значення деінде):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -535,7 +534,7 @@ Voice Call використовує базову конфігурацію `messa
|
||||
}
|
||||
```
|
||||
|
||||
Перевизначити лише модель OpenAI для дзвінків (приклад глибокого об’єднання):
|
||||
Перевизначити лише модель OpenAI для дзвінків (приклад глибокого злиття):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -560,23 +559,23 @@ Voice Call використовує базову конфігурацію `messa
|
||||
|
||||
## Вхідні дзвінки
|
||||
|
||||
Типове значення для політики вхідних дзвінків — `disabled`. Щоб увімкнути вхідні дзвінки, задайте:
|
||||
Типове значення політики вхідних дзвінків — `disabled`. Щоб увімкнути вхідні дзвінки, задайте:
|
||||
|
||||
```json5
|
||||
{
|
||||
inboundPolicy: "allowlist",
|
||||
allowFrom: ["+15550001234"],
|
||||
inboundGreeting: "Hello! How can I help?",
|
||||
inboundGreeting: "Вітаю! Чим я можу допомогти?",
|
||||
}
|
||||
```
|
||||
|
||||
`inboundPolicy: "allowlist"` — це фільтр caller ID з низьким рівнем довіри. Plugin
|
||||
`inboundPolicy: "allowlist"` — це екранування caller ID з низьким рівнем гарантії. Plugin
|
||||
нормалізує надане провайдером значення `From` і порівнює його з `allowFrom`.
|
||||
Перевірка Webhook автентифікує доставку провайдера й цілісність payload, але
|
||||
не доводить право власності на номер PSTN/VoIP. Розглядайте `allowFrom` як
|
||||
фільтрацію caller ID, а не як надійну ідентичність абонента.
|
||||
Перевірка webhook автентифікує доставку провайдера та цілісність навантаження, але
|
||||
не доводить право власності на номер абонента PSTN/VoIP. Сприймайте `allowFrom` як
|
||||
фільтрацію caller ID, а не як сильну ідентичність абонента.
|
||||
|
||||
Автовідповіді використовують систему агентів. Налаштовуйте через:
|
||||
Автовідповіді використовують систему агента. Налаштовуйте за допомогою:
|
||||
|
||||
- `responseModel`
|
||||
- `responseSystemPrompt`
|
||||
@ -584,54 +583,56 @@ Voice Call використовує базову конфігурацію `messa
|
||||
|
||||
### Контракт озвученого виводу
|
||||
|
||||
Для автовідповідей Voice Call додає до system prompt суворий контракт озвученого виводу:
|
||||
Для автовідповідей Voice Call додає до системного prompt суворий контракт озвученого виводу:
|
||||
|
||||
- `{"spoken":"..."}`
|
||||
|
||||
Потім Voice Call захисно витягує текст мовлення:
|
||||
Потім Voice Call обережно витягує текст мовлення:
|
||||
|
||||
- Ігнорує payload, позначені як вміст reasoning/error.
|
||||
- Розбирає прямий JSON, JSON у fenced-блоках або вбудовані ключі `"spoken"`.
|
||||
- Резервно використовує звичайний текст і прибирає ймовірні вступні абзаци з плануванням/метаданими.
|
||||
- Ігнорує навантаження, позначені як вміст міркувань/помилок.
|
||||
- Аналізує прямий JSON, JSON у fenced-блоках або вбудовані ключі `"spoken"`.
|
||||
- Повертається до звичайного тексту й видаляє ймовірні вступні абзаци планування/мета.
|
||||
|
||||
Це зосереджує озвучене відтворення на тексті для абонента й запобігає витоку тексту планування в аудіо.
|
||||
Це допомагає зосередити озвучення на тексті для абонента й уникнути витоку тексту планування в аудіо.
|
||||
|
||||
### Поведінка запуску розмови
|
||||
|
||||
Для вихідних дзвінків у режимі `conversation` обробка першого повідомлення прив’язана до стану живого відтворення:
|
||||
Для вихідних дзвінків `conversation` обробка першого повідомлення пов’язана зі станом відтворення в реальному часі:
|
||||
|
||||
- Очищення черги через barge-in і автовідповідь пригнічуються лише тоді, коли початкове привітання активно відтворюється.
|
||||
- Якщо початкове відтворення не вдається, дзвінок повертається до стану `listening`, а початкове повідомлення залишається в черзі для повторної спроби.
|
||||
- Початкове відтворення для потокової передачі Twilio стартує після підключення потоку без додаткової затримки.
|
||||
- Barge-in перериває активне відтворення й очищає записи TTS Twilio, поставлені в чергу, але ще не відтворені. Очищені записи завершуються як пропущені, тож подальша логіка відповіді може продовжуватися без очікування аудіо, яке ніколи не відтвориться.
|
||||
- Голосові розмови в реальному часі використовують власний початковий хід потоку реального часу. Voice Call не надсилає застаріле оновлення TwiML `<Say>` для цього початкового повідомлення, тому вихідні сесії `<Connect><Stream>` залишаються під’єднаними.
|
||||
- Очищення черги через barge-in й автовідповідь пригнічуються лише тоді, коли початкове привітання активно озвучується.
|
||||
- Якщо початкове відтворення завершується помилкою, дзвінок повертається до `listening`, а початкове повідомлення залишається в черзі для повторної спроби.
|
||||
- Початкове відтворення для потокової передачі Twilio починається після підключення потоку без додаткової затримки.
|
||||
- Barge-in перериває активне відтворення й очищає записи TTS Twilio, що стоять у черзі, але ще не почали відтворюватися.
|
||||
Очищені записи завершуються як пропущені, тож подальша логіка відповіді
|
||||
може продовжитися без очікування аудіо, яке ніколи не буде відтворене.
|
||||
- Голосові розмови в реальному часі використовують власний вступний поворот потоку реального часу. Voice Call не надсилає застаріле оновлення TwiML `<Say>` для цього початкового повідомлення, тож вихідні сеанси `<Connect><Stream>` залишаються підключеними.
|
||||
|
||||
### Grace-період після від’єднання потоку Twilio
|
||||
### Пільговий період від’єднання потоку Twilio
|
||||
|
||||
Коли медіапотік Twilio від’єднується, Voice Call чекає `2000ms` перед автоматичним завершенням дзвінка:
|
||||
Коли медіапотік Twilio від’єднується, Voice Call чекає `2000ms`, перш ніж автоматично завершити дзвінок:
|
||||
|
||||
- Якщо потік повторно підключається протягом цього вікна, авто-завершення скасовується.
|
||||
- Якщо після grace-періоду жоден потік не буде повторно зареєстровано, дзвінок завершується, щоб запобігти зависанню активних дзвінків.
|
||||
- Якщо потік повторно підключається протягом цього вікна, автозавершення скасовується.
|
||||
- Якщо після пільгового періоду потік не зареєстровано знову, дзвінок завершується, щоб запобігти завислим активним дзвінкам.
|
||||
|
||||
## CLI
|
||||
|
||||
```bash
|
||||
openclaw voicecall call --to "+15555550123" --message "Hello from OpenClaw"
|
||||
openclaw voicecall start --to "+15555550123" # alias for call
|
||||
openclaw voicecall start --to "+15555550123" # псевдонім для call
|
||||
openclaw voicecall continue --call-id <id> --message "Any questions?"
|
||||
openclaw voicecall speak --call-id <id> --message "One moment"
|
||||
openclaw voicecall dtmf --call-id <id> --digits "ww123456#"
|
||||
openclaw voicecall end --call-id <id>
|
||||
openclaw voicecall status --call-id <id>
|
||||
openclaw voicecall tail
|
||||
openclaw voicecall latency # summarize turn latency from logs
|
||||
openclaw voicecall latency # узагальнює затримку поворотів із журналів
|
||||
openclaw voicecall expose --mode funnel
|
||||
```
|
||||
|
||||
`latency` читає `calls.jsonl` зі стандартного шляху зберігання voice-call. Використовуйте
|
||||
`latency` читає `calls.jsonl` зі стандартного шляху сховища voice-call. Використовуйте
|
||||
`--file <path>`, щоб указати інший журнал, і `--last <n>`, щоб обмежити аналіз
|
||||
останніми N записами (типово 200). Вивід містить p50/p90/p99 для
|
||||
затримки ходу та часу очікування в режимі listen.
|
||||
останніми N записами (типово 200). Вивід включає p50/p90/p99 для затримки
|
||||
поворотів і часу очікування прослуховування.
|
||||
|
||||
## Інструмент агента
|
||||
|
||||
@ -646,9 +647,9 @@ openclaw voicecall expose --mode funnel
|
||||
- `end_call` (callId)
|
||||
- `get_status` (callId)
|
||||
|
||||
Цей репозиторій містить відповідний документ Skills у `skills/voice-call/SKILL.md`.
|
||||
Цей репозиторій містить відповідний документ Skills за адресою `skills/voice-call/SKILL.md`.
|
||||
|
||||
## Gateway RPC
|
||||
## RPC Gateway
|
||||
|
||||
- `voicecall.initiate` (`to?`, `message`, `mode?`)
|
||||
- `voicecall.continue` (`callId`, `message`)
|
||||
@ -657,8 +658,8 @@ openclaw voicecall expose --mode funnel
|
||||
- `voicecall.end` (`callId`)
|
||||
- `voicecall.status` (`callId`)
|
||||
|
||||
## Пов’язано
|
||||
## Пов’язане
|
||||
|
||||
- [Text-to-speech](/uk/tools/tts)
|
||||
- [Talk mode](/uk/nodes/talk)
|
||||
- [Voice wake](/uk/nodes/voicewake)
|
||||
- [Перетворення тексту на мовлення](/uk/tools/tts)
|
||||
- [Режим розмови](/uk/nodes/talk)
|
||||
- [Голосове пробудження](/uk/nodes/voicewake)
|
||||
|
||||
@ -1,31 +1,31 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете використовувати генерацію зображень fal в OpenClaw
|
||||
- Вам потрібен потік автентифікації FAL_KEY
|
||||
- Ви хочете типові значення fal для `image_generate` або `video_generate`
|
||||
summary: Налаштування генерації зображень і відео через fal в OpenClaw
|
||||
- Вам потрібен потік автентифікації `FAL_KEY`
|
||||
- Вам потрібні типові налаштування fal для `image_generate` або `video_generate`
|
||||
summary: Налаштування генерації зображень і відео fal в OpenClaw
|
||||
title: Fal
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T03:48:18Z"
|
||||
generated_at: "2026-04-25T19:29:26Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: d23d2d0d27e5f60f9dacb4a6a7e4c07248cf45ccd80bfabaf6bb99f5f78946b2
|
||||
source_hash: 26f28ff7c99dbe386fd2a42f8f85ae8bc34a1510decd302462ab9c8a4a8428ba
|
||||
source_path: providers/fal.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
OpenClaw постачається з вбудованим провайдером `fal` для хостованої генерації зображень і відео.
|
||||
OpenClaw постачається з вбудованим провайдером `fal` для хостингової генерації зображень і відео.
|
||||
|
||||
| Властивість | Значення |
|
||||
| ----------- | ------------------------------------------------------------- |
|
||||
| Провайдер | `fal` |
|
||||
| Auth | `FAL_KEY` (канонічний; `FAL_API_KEY` також працює як fallback) |
|
||||
| API | endpoint моделей fal |
|
||||
| Властивість | Значення |
|
||||
| ----------- | ------------------------------------------------------------ |
|
||||
| Провайдер | `fal` |
|
||||
| Автентифікація | `FAL_KEY` (канонічний; `FAL_API_KEY` також працює як запасний варіант) |
|
||||
| API | кінцеві точки моделей fal |
|
||||
|
||||
## Початок роботи
|
||||
|
||||
<Steps>
|
||||
<Step title="Установіть API key">
|
||||
<Step title="Установіть API-ключ">
|
||||
```bash
|
||||
openclaw onboard --auth-choice fal-api-key
|
||||
```
|
||||
@ -47,21 +47,25 @@ OpenClaw постачається з вбудованим провайдером
|
||||
|
||||
## Генерація зображень
|
||||
|
||||
Вбудований провайдер генерації зображень `fal` типово використовує
|
||||
Вбудований провайдер генерації зображень `fal` за замовчуванням використовує
|
||||
`fal/fal-ai/flux/dev`.
|
||||
|
||||
| Можливість | Значення |
|
||||
| --------------- | -------------------------- |
|
||||
| Можливість | Значення |
|
||||
| ------------- | -------------------------- |
|
||||
| Макс. зображень | 4 на запит |
|
||||
| Режим редагування | Увімкнено, 1 еталонне зображення |
|
||||
| Перевизначення size | Підтримується |
|
||||
| Співвідношення сторін | Підтримується |
|
||||
| Resolution | Підтримується |
|
||||
| Перевизначення розміру | Підтримуються |
|
||||
| Співвідношення сторін | Підтримується |
|
||||
| Роздільна здатність | Підтримується |
|
||||
| Формат виводу | `png` або `jpeg` |
|
||||
|
||||
<Warning>
|
||||
Endpoint редагування зображень fal **не** підтримує перевизначення `aspectRatio`.
|
||||
Кінцева точка редагування зображень fal **не** підтримує перевизначення `aspectRatio`.
|
||||
</Warning>
|
||||
|
||||
Використовуйте `outputFormat: "png"`, коли вам потрібен вихід у форматі PNG. fal не оголошує в OpenClaw явний елемент керування прозорим фоном, тому `background:
|
||||
"transparent"` позначається як проігнороване перевизначення для моделей fal.
|
||||
|
||||
Щоб використовувати fal як типовий провайдер зображень:
|
||||
|
||||
```json5
|
||||
@ -78,13 +82,13 @@ Endpoint редагування зображень fal **не** підтриму
|
||||
|
||||
## Генерація відео
|
||||
|
||||
Вбудований провайдер генерації відео `fal` типово використовує
|
||||
Вбудований провайдер генерації відео `fal` за замовчуванням використовує
|
||||
`fal/fal-ai/minimax/video-01-live`.
|
||||
|
||||
| Можливість | Значення |
|
||||
| ---------- | --------------------------------------------------------------- |
|
||||
| Режими | Text-to-video, еталон одного зображення |
|
||||
| Runtime | Потік submit/status/result на основі черги для довготривалих завдань |
|
||||
| Можливість | Значення |
|
||||
| ---------- | ----------------------------------------------------------- |
|
||||
| Режими | Текст у відео, одне еталонне зображення |
|
||||
| Виконання | Потік submit/status/result на основі черги для довготривалих завдань |
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Доступні моделі відео">
|
||||
@ -131,7 +135,7 @@ Endpoint редагування зображень fal **не** підтриму
|
||||
</AccordionGroup>
|
||||
|
||||
<Tip>
|
||||
Використовуйте `openclaw models list --provider fal`, щоб побачити повний список доступних моделей fal, включно з нещодавно доданими записами.
|
||||
Використовуйте `openclaw models list --provider fal`, щоб переглянути повний список доступних моделей fal, включно з нещодавно доданими записами.
|
||||
</Tip>
|
||||
|
||||
## Пов’язане
|
||||
@ -143,7 +147,7 @@ Endpoint редагування зображень fal **не** підтриму
|
||||
<Card title="Генерація відео" href="/uk/tools/video-generation" icon="video">
|
||||
Спільні параметри інструмента відео і вибір провайдера.
|
||||
</Card>
|
||||
<Card title="Довідка з конфігурації" href="/uk/gateway/config-agents#agent-defaults" icon="gear">
|
||||
<Card title="Довідник із конфігурації" href="/uk/gateway/config-agents#agent-defaults" icon="gear">
|
||||
Типові значення агента, включно з вибором моделей зображень і відео.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,71 +1,71 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете використовувати моделі OpenAI в OpenClaw
|
||||
- Ви хочете використовувати автентифікацію за підпискою Codex замість API-ключів
|
||||
- Вам потрібна суворіша поведінка виконання агента GPT-5
|
||||
- Ви хочете використовувати автентифікацію через підписку Codex замість API-ключів
|
||||
- Вам потрібні суворіші правила виконання агента GPT-5
|
||||
summary: Використовуйте OpenAI через API-ключі або підписку Codex в OpenClaw
|
||||
title: OpenAI
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T19:09:05Z"
|
||||
generated_at: "2026-04-25T19:29:28Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 640db14eaeec4197a44b8447df545ea34fba18cafede35fd12a3a3f78fff669e
|
||||
source_hash: ce19da678fa54080277e30d9adebfee8936f05b4ca94aa8d17e2c674eefba970
|
||||
source_path: providers/openai.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
OpenAI надає API для розробників для моделей GPT. OpenClaw підтримує три маршрути сімейства OpenAI. Префікс моделі визначає маршрут:
|
||||
OpenAI надає API для розробників для моделей GPT. OpenClaw підтримує три маршрути сімейства OpenAI. Префікс моделі вибирає маршрут:
|
||||
|
||||
- **API key** — прямий доступ до OpenAI Platform з оплатою за використання (моделі `openai/*`)
|
||||
- **Підписка Codex через PI** — вхід через ChatGPT/Codex з доступом за підпискою (моделі `openai-codex/*`)
|
||||
- **Codex app-server harness** — нативне виконання через Codex app-server (`openai/*` моделі плюс `agents.defaults.embeddedHarness.runtime: "codex"`)
|
||||
- **Обв’язка Codex app-server** — нативне виконання через Codex app-server (моделі `openai/*` плюс `agents.defaults.embeddedHarness.runtime: "codex"`)
|
||||
|
||||
OpenAI прямо підтримує використання OAuth за підпискою у зовнішніх інструментах і робочих процесах, таких як OpenClaw.
|
||||
OpenAI явно підтримує використання OAuth за підпискою у зовнішніх інструментах і робочих процесах, таких як OpenClaw.
|
||||
|
||||
Провайдер, модель, runtime і канал — це окремі шари. Якщо ці позначення
|
||||
плутаються між собою, прочитайте [Середовища виконання агентів](/uk/concepts/agent-runtimes) перед
|
||||
зміною конфігурації.
|
||||
Провайдер, модель, середовище виконання та канал — це окремі рівні. Якщо ці позначення
|
||||
плутаються між собою, прочитайте [Середовища виконання агента](/uk/concepts/agent-runtimes), перш ніж
|
||||
змінювати конфігурацію.
|
||||
|
||||
## Швидкий вибір
|
||||
|
||||
| Ціль | Використовуйте | Примітки |
|
||||
| --------------------------------------------- | ------------------------------------------------------ | ----------------------------------------------------------------------------- |
|
||||
| Пряме тарифікування за API-ключем | `openai/gpt-5.5` | Установіть `OPENAI_API_KEY` або виконайте онбординг API-ключа OpenAI. |
|
||||
| GPT-5.5 з автентифікацією за підпискою ChatGPT/Codex | `openai-codex/gpt-5.5` | Типовий маршрут PI для Codex OAuth. Найкращий перший вибір для конфігурацій із підпискою. |
|
||||
| GPT-5.5 з нативною поведінкою Codex app-server | `openai/gpt-5.5` плюс `embeddedHarness.runtime: "codex"` | Примусово вмикає Codex app-server harness для цього посилання на модель. |
|
||||
| Генерація або редагування зображень | `openai/gpt-image-2` | Працює як з `OPENAI_API_KEY`, так і з OpenAI Codex OAuth. |
|
||||
| Зображення з прозорим фоном | `openai/gpt-image-1.5` | Використовуйте `outputFormat=png` або `webp` і `openai.background=transparent`. |
|
||||
| Ціль | Використовуйте | Примітки |
|
||||
| --------------------------------------------- | -------------------------------------------------------- | ----------------------------------------------------------------------------- |
|
||||
| Пряма оплата через API key | `openai/gpt-5.5` | Установіть `OPENAI_API_KEY` або запустіть онбординг OpenAI API-key. |
|
||||
| GPT-5.5 з автентифікацією через підписку ChatGPT/Codex | `openai-codex/gpt-5.5` | Маршрут PI за замовчуванням для Codex OAuth. Найкращий перший вибір для конфігурацій із підпискою. |
|
||||
| GPT-5.5 з нативною поведінкою Codex app-server | `openai/gpt-5.5` plus `embeddedHarness.runtime: "codex"` | Примусово використовує обв’язку Codex app-server для цього посилання на модель. |
|
||||
| Генерація або редагування зображень | `openai/gpt-image-2` | Працює як з `OPENAI_API_KEY`, так і з OpenAI Codex OAuth. |
|
||||
| Зображення з прозорим фоном | `openai/gpt-image-1.5` | Використовуйте `outputFormat=png` або `webp` і `openai.background=transparent`. |
|
||||
|
||||
<Note>
|
||||
GPT-5.5 доступна як через прямий доступ до OpenAI Platform API за API-ключем,
|
||||
так і через маршрути підписки/OAuth. Використовуйте `openai/gpt-5.5` для
|
||||
прямого трафіку через `OPENAI_API_KEY`, `openai-codex/gpt-5.5` для Codex OAuth через PI, або
|
||||
`openai/gpt-5.5` з `embeddedHarness.runtime: "codex"` для нативного
|
||||
Codex app-server harness.
|
||||
GPT-5.5 доступна як через прямий доступ до OpenAI Platform за API key, так і
|
||||
через маршрути підписки/OAuth. Використовуйте `openai/gpt-5.5` для прямого трафіку
|
||||
через `OPENAI_API_KEY`, `openai-codex/gpt-5.5` для Codex OAuth через PI або
|
||||
`openai/gpt-5.5` з `embeddedHarness.runtime: "codex"` для нативної обв’язки
|
||||
Codex app-server.
|
||||
</Note>
|
||||
|
||||
<Note>
|
||||
Увімкнення Plugin OpenAI або вибір моделі `openai-codex/*` не
|
||||
вмикає вбудований Plugin Codex app-server. OpenClaw вмикає цей Plugin лише
|
||||
коли ви явно вибираєте нативний Codex harness за допомогою
|
||||
коли ви явно вибираєте нативну обв’язку Codex через
|
||||
`embeddedHarness.runtime: "codex"` або використовуєте застаріле посилання на модель `codex/*`.
|
||||
</Note>
|
||||
|
||||
## Покриття можливостей OpenClaw
|
||||
## Покриття функцій OpenClaw
|
||||
|
||||
| Можливість OpenAI | Поверхня OpenClaw | Статус |
|
||||
| ------------------------- | ---------------------------------------------------------- | ------------------------------------------------------ |
|
||||
| Chat / Responses | провайдер моделей `openai/<model>` | Так |
|
||||
| Моделі підписки Codex | `openai-codex/<model>` з OAuth `openai-codex` | Так |
|
||||
| Codex app-server harness | `openai/<model>` з `embeddedHarness.runtime: codex` | Так |
|
||||
| Server-side web search | нативний інструмент OpenAI Responses | Так, коли увімкнено web search і не зафіксовано провайдера |
|
||||
| Зображення | `image_generate` | Так |
|
||||
| Відео | `video_generate` | Так |
|
||||
| Text-to-speech | `messages.tts.provider: "openai"` / `tts` | Так |
|
||||
| Пакетне speech-to-text | `tools.media.audio` / розуміння медіа | Так |
|
||||
| Потокове speech-to-text | Voice Call `streaming.provider: "openai"` | Так |
|
||||
| Голос у реальному часі | Voice Call `realtime.provider: "openai"` / Talk у Control UI | Так |
|
||||
| Embeddings | провайдер embedding для пам’яті | Так |
|
||||
| Можливість OpenAI | Поверхня OpenClaw | Статус |
|
||||
| -------------------------- | --------------------------------------------------------- | ------------------------------------------------------ |
|
||||
| Chat / Responses | провайдер моделі `openai/<model>` | Так |
|
||||
| Моделі підписки Codex | `openai-codex/<model>` з OAuth `openai-codex` | Так |
|
||||
| Обв’язка Codex app-server | `openai/<model>` з `embeddedHarness.runtime: codex` | Так |
|
||||
| Пошук у вебі на стороні сервера | нативний інструмент OpenAI Responses | Так, коли вебпошук увімкнено і провайдера не закріплено |
|
||||
| Зображення | `image_generate` | Так |
|
||||
| Відео | `video_generate` | Так |
|
||||
| Перетворення тексту на мовлення | `messages.tts.provider: "openai"` / `tts` | Так |
|
||||
| Пакетне перетворення мовлення на текст | `tools.media.audio` / розуміння медіа | Так |
|
||||
| Потокове перетворення мовлення на текст | Voice Call `streaming.provider: "openai"` | Так |
|
||||
| Голос у реальному часі | Voice Call `realtime.provider: "openai"` / Control UI Talk | Так |
|
||||
| Embeddings | провайдер вбудовувань пам’яті | Так |
|
||||
|
||||
## Початок роботи
|
||||
|
||||
@ -73,10 +73,10 @@ Codex app-server harness.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="API key (OpenAI Platform)">
|
||||
**Найкраще для:** прямого доступу до API та тарифікації за використання.
|
||||
**Найкраще для:** прямого доступу до API та оплати за використання.
|
||||
|
||||
<Steps>
|
||||
<Step title="Отримайте API key">
|
||||
<Step title="Отримайте свій API key">
|
||||
Створіть або скопіюйте API key з [панелі OpenAI Platform](https://platform.openai.com/api-keys).
|
||||
</Step>
|
||||
<Step title="Запустіть онбординг">
|
||||
@ -97,17 +97,17 @@ Codex app-server harness.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### Зведення маршрутів
|
||||
### Підсумок маршруту
|
||||
|
||||
| Model ref | Маршрут | Автентифікація |
|
||||
|-----------|-------|------|
|
||||
|-----------|---------|----------------|
|
||||
| `openai/gpt-5.5` | Прямий API OpenAI Platform | `OPENAI_API_KEY` |
|
||||
| `openai/gpt-5.4-mini` | Прямий API OpenAI Platform | `OPENAI_API_KEY` |
|
||||
|
||||
<Note>
|
||||
`openai/*` — це прямий маршрут OpenAI API-key, якщо ви явно не примусите
|
||||
Codex app-server harness. Використовуйте `openai-codex/*` для Codex OAuth через
|
||||
типовий виконавець PI, або використовуйте `openai/gpt-5.5` з
|
||||
`openai/*` — це прямий маршрут OpenAI за API key, якщо ви явно не примусите
|
||||
обв’язку Codex app-server. Використовуйте `openai-codex/*` для Codex OAuth через
|
||||
стандартний виконавець PI або використовуйте `openai/gpt-5.5` з
|
||||
`embeddedHarness.runtime: "codex"` для нативного виконання через Codex app-server.
|
||||
</Note>
|
||||
|
||||
@ -127,7 +127,7 @@ Codex app-server harness.
|
||||
</Tab>
|
||||
|
||||
<Tab title="Підписка Codex">
|
||||
**Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого API key. Хмарний Codex потребує входу через ChatGPT.
|
||||
**Найкраще для:** використання вашої підписки ChatGPT/Codex замість окремого API key. Хмарний Codex вимагає входу в ChatGPT.
|
||||
|
||||
<Steps>
|
||||
<Step title="Запустіть Codex OAuth">
|
||||
@ -141,7 +141,7 @@ Codex app-server harness.
|
||||
openclaw models auth login --provider openai-codex
|
||||
```
|
||||
|
||||
Для headless або несумісних із callback конфігурацій додайте `--device-code`, щоб увійти через потік коду пристрою ChatGPT замість callback браузера на localhost:
|
||||
Для headless-середовищ або конфігурацій, де зворотний виклик незручний, додайте `--device-code`, щоб увійти через потік device-code ChatGPT замість локального зворотного виклику в браузері:
|
||||
|
||||
```bash
|
||||
openclaw models auth login --provider openai-codex --device-code
|
||||
@ -159,17 +159,17 @@ Codex app-server harness.
|
||||
</Step>
|
||||
</Steps>
|
||||
|
||||
### Зведення маршрутів
|
||||
### Підсумок маршруту
|
||||
|
||||
| Model ref | Маршрут | Автентифікація |
|
||||
|-----------|-------|------|
|
||||
| `openai-codex/gpt-5.5` | ChatGPT/Codex OAuth через PI | вхід Codex |
|
||||
| `openai/gpt-5.5` + `embeddedHarness.runtime: "codex"` | Codex app-server harness | автентифікація Codex app-server |
|
||||
|-----------|---------|----------------|
|
||||
| `openai-codex/gpt-5.5` | ChatGPT/Codex OAuth через PI | Вхід у Codex |
|
||||
| `openai/gpt-5.5` + `embeddedHarness.runtime: "codex"` | Обв’язка Codex app-server | Автентифікація Codex app-server |
|
||||
|
||||
<Note>
|
||||
Продовжуйте використовувати ідентифікатор провайдера `openai-codex` для команд
|
||||
автентифікації/профілю. Префікс моделі `openai-codex/*` також є явним PI-маршрутом для Codex OAuth.
|
||||
Він не вибирає і не вмикає автоматично вбудований Codex app-server harness.
|
||||
Продовжуйте використовувати ідентифікатор провайдера `openai-codex` для команд автентифікації/профілю. Префікс моделі
|
||||
`openai-codex/*` також є явним маршрутом PI для Codex OAuth.
|
||||
Він не вибирає і не вмикає автоматично вбудовану обв’язку Codex app-server.
|
||||
</Note>
|
||||
|
||||
### Приклад конфігурації
|
||||
@ -181,28 +181,28 @@ Codex app-server harness.
|
||||
```
|
||||
|
||||
<Note>
|
||||
Онбординг більше не імпортує матеріали OAuth з `~/.codex`. Увійдіть через OAuth у браузері (типово) або через наведений вище потік коду пристрою — OpenClaw зберігає отримані облікові дані у власному сховищі автентифікації агента.
|
||||
Онбординг більше не імпортує матеріали OAuth з `~/.codex`. Увійдіть через OAuth у браузері (типово) або через потік device-code вище — OpenClaw керує отриманими обліковими даними у власному сховищі автентифікації агента.
|
||||
</Note>
|
||||
|
||||
### Індикатор статусу
|
||||
### Індикатор стану
|
||||
|
||||
Chat `/status` показує, яке runtime моделі активне для поточної сесії.
|
||||
Типовий PI harness відображається як `Runtime: OpenClaw Pi Default`. Коли
|
||||
вибрано вбудований Codex app-server harness, `/status` показує
|
||||
`Runtime: OpenAI Codex`. Існуючі сесії зберігають записаний для них ідентифікатор harness, тому використайте
|
||||
Чат `/status` показує, яке середовище виконання моделі активне для поточного сеансу.
|
||||
Стандартна обв’язка PI відображається як `Runtime: OpenClaw Pi Default`. Коли
|
||||
вибрано вбудовану обв’язку Codex app-server, `/status` показує
|
||||
`Runtime: OpenAI Codex`. Існуючі сеанси зберігають записаний для них ідентифікатор обв’язки, тож використайте
|
||||
`/new` або `/reset` після зміни `embeddedHarness`, якщо хочете, щоб `/status`
|
||||
відображав новий вибір PI/Codex.
|
||||
|
||||
### Обмеження вікна контексту
|
||||
|
||||
OpenClaw розглядає метадані моделі та обмеження контексту runtime як окремі значення.
|
||||
OpenClaw розглядає метадані моделі та обмеження контексту середовища виконання як окремі значення.
|
||||
|
||||
Для `openai-codex/gpt-5.5` через Codex OAuth:
|
||||
|
||||
- Нативне `contextWindow`: `1000000`
|
||||
- Типове обмеження runtime `contextTokens`: `272000`
|
||||
- Нативний `contextWindow`: `1000000`
|
||||
- Стандартне обмеження `contextTokens` у середовищі виконання: `272000`
|
||||
|
||||
Менше типове обмеження на практиці забезпечує кращі характеристики затримки та якості. Перевизначте його через `contextTokens`:
|
||||
Менше стандартне обмеження на практиці дає кращі характеристики затримки та якості. Перевизначте його за допомогою `contextTokens`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -217,15 +217,15 @@ Codex app-server harness.
|
||||
```
|
||||
|
||||
<Note>
|
||||
Використовуйте `contextWindow` для оголошення нативних метаданих моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту runtime.
|
||||
Використовуйте `contextWindow`, щоб оголосити нативні метадані моделі. Використовуйте `contextTokens`, щоб обмежити бюджет контексту середовища виконання.
|
||||
</Note>
|
||||
|
||||
### Відновлення каталогу
|
||||
|
||||
OpenClaw використовує метадані каталогу Codex з upstream для `gpt-5.5`, коли вони
|
||||
доступні. Якщо під час живого виявлення Codex рядок `openai-codex/gpt-5.5`
|
||||
відсутній, але обліковий запис автентифіковано, OpenClaw синтезує цей рядок OAuth-моделі, щоб
|
||||
Cron, субагент і запуски з налаштованою моделлю за замовчуванням не завершувалися помилкою
|
||||
OpenClaw використовує метадані каталогу Codex з апстриму для `gpt-5.5`, коли вони
|
||||
доступні. Якщо живе виявлення Codex пропускає рядок `openai-codex/gpt-5.5`, поки
|
||||
обліковий запис автентифікований, OpenClaw синтезує цей рядок моделі OAuth, щоб
|
||||
запуски Cron, субагентів і налаштованої моделі за замовчуванням не завершувалися помилкою
|
||||
`Unknown model`.
|
||||
|
||||
</Tab>
|
||||
@ -234,18 +234,18 @@ Codex app-server harness.
|
||||
## Генерація зображень
|
||||
|
||||
Вбудований Plugin `openai` реєструє генерацію зображень через інструмент `image_generate`.
|
||||
Він підтримує як генерацію зображень OpenAI за API-ключем, так і генерацію
|
||||
зображень через Codex OAuth за тим самим посиланням на модель `openai/gpt-image-2`.
|
||||
Він підтримує як генерацію зображень OpenAI за API key, так і генерацію зображень
|
||||
через Codex OAuth, використовуючи те саме посилання на модель `openai/gpt-image-2`.
|
||||
|
||||
| Можливість | API key OpenAI | Codex OAuth |
|
||||
| ------------------------- | ---------------------------------- | ------------------------------------ |
|
||||
| Посилання на модель | `openai/gpt-image-2` | `openai/gpt-image-2` |
|
||||
| Автентифікація | `OPENAI_API_KEY` | вхід через OpenAI Codex OAuth |
|
||||
| Транспорт | OpenAI Images API | бекенд Codex Responses |
|
||||
| Макс. зображень на запит | 4 | 4 |
|
||||
| Можливість | OpenAI API key | Codex OAuth |
|
||||
| ------------------------- | ----------------------------------- | ------------------------------------ |
|
||||
| Model ref | `openai/gpt-image-2` | `openai/gpt-image-2` |
|
||||
| Автентифікація | `OPENAI_API_KEY` | Вхід через OpenAI Codex OAuth |
|
||||
| Транспорт | OpenAI Images API | Бекенд Codex Responses |
|
||||
| Макс. кількість зображень на запит | 4 | 4 |
|
||||
| Режим редагування | Увімкнено (до 5 еталонних зображень) | Увімкнено (до 5 еталонних зображень) |
|
||||
| Перевизначення розміру | Підтримується, включно з розмірами 2K/4K | Підтримується, включно з розмірами 2K/4K |
|
||||
| Співвідношення сторін / роздільна здатність | Не передається до OpenAI Images API | Відображається у підтримуваний розмір, коли це безпечно |
|
||||
| Співвідношення сторін / роздільна здатність | Не передається до OpenAI Images API | Відображається на підтримуваний розмір, коли це безпечно |
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -258,46 +258,48 @@ Codex app-server harness.
|
||||
```
|
||||
|
||||
<Note>
|
||||
Див. [Генерація зображень](/uk/tools/image-generation) для спільних параметрів інструмента, вибору провайдера та поведінки failover.
|
||||
Див. [Генерація зображень](/uk/tools/image-generation), щоб дізнатися про спільні параметри інструмента, вибір провайдера та поведінку перемикання при збої.
|
||||
</Note>
|
||||
|
||||
`gpt-image-2` є типовим варіантом як для генерації текст-у-зображення OpenAI, так і для
|
||||
редагування зображень. `gpt-image-1.5`, `gpt-image-1` і `gpt-image-1-mini` залишаються доступними як
|
||||
`gpt-image-2` є типовим для генерації зображень з тексту OpenAI та редагування
|
||||
зображень. `gpt-image-1.5`, `gpt-image-1` і `gpt-image-1-mini` залишаються доступними як
|
||||
явні перевизначення моделі. Використовуйте `openai/gpt-image-1.5` для виводу PNG/WebP
|
||||
з прозорим фоном; поточний API `gpt-image-2` відхиляє
|
||||
із прозорим фоном; поточний API `gpt-image-2` відхиляє
|
||||
`background: "transparent"`.
|
||||
|
||||
Для запиту на прозорий фон агенти повинні викликати `image_generate` з
|
||||
`model: "openai/gpt-image-1.5"`, `outputFormat: "png"` або `"webp"` та
|
||||
`openai.background: "transparent"`. OpenClaw також захищає публічні маршрути OpenAI і
|
||||
Для запиту на прозорий фон агенти мають викликати `image_generate` з
|
||||
`model: "openai/gpt-image-1.5"`, `outputFormat: "png"` або `"webp"` і
|
||||
`background: "transparent"`; старіший параметр провайдера `openai.background`
|
||||
також усе ще підтримується. OpenClaw також захищає публічні маршрути OpenAI та
|
||||
OpenAI Codex OAuth, переписуючи типові прозорі запити `openai/gpt-image-2`
|
||||
на `gpt-image-1.5`; Azure і користувацькі OpenAI-сумісні кінцеві точки
|
||||
зберігають свої налаштовані назви deployment/моделей.
|
||||
на `gpt-image-1.5`; Azure та користувацькі OpenAI-сумісні кінцеві точки
|
||||
зберігають налаштовані імена deployment/model.
|
||||
|
||||
Те саме налаштування доступне для headless запусків CLI:
|
||||
Те саме налаштування доступне для безголових запусків CLI:
|
||||
|
||||
```bash
|
||||
openclaw infer image generate \
|
||||
--model openai/gpt-image-1.5 \
|
||||
--output-format png \
|
||||
--openai-background transparent \
|
||||
--background transparent \
|
||||
--prompt "A simple red circle sticker on a transparent background" \
|
||||
--json
|
||||
```
|
||||
|
||||
Використовуйте ті самі прапорці `--output-format` і `--openai-background` з
|
||||
Використовуйте ті самі прапорці `--output-format` і `--background` з
|
||||
`openclaw infer image edit`, коли починаєте з вхідного файла.
|
||||
`--openai-background` і далі доступний як OpenAI-специфічний псевдонім.
|
||||
|
||||
Для інсталяцій із Codex OAuth зберігайте те саме посилання `openai/gpt-image-2`. Коли
|
||||
налаштовано профіль OAuth `openai-codex`, OpenClaw визначає цей збережений OAuth-токен доступу
|
||||
і надсилає запити на зображення через бекенд Codex Responses. Він
|
||||
не намагається спочатку використати `OPENAI_API_KEY` і не виконує тихий fallback до API-ключа для цього
|
||||
запиту. Налаштуйте `models.providers.openai` явно з API-ключем,
|
||||
користувацькою базовою URL-адресою або кінцевою точкою Azure, якщо ви хочете маршрут
|
||||
через прямий OpenAI Images API.
|
||||
Якщо ця користувацька кінцева точка зображень розміщена в довіреній LAN/приватній адресі, також установіть
|
||||
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; OpenClaw продовжує
|
||||
блокувати приватні/внутрішні OpenAI-сумісні кінцеві точки зображень, якщо немає цієї явної згоди.
|
||||
Для встановлень із Codex OAuth зберігайте те саме посилання `openai/gpt-image-2`. Коли
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw визначає цей збережений токен
|
||||
доступу OAuth і надсилає запити зображень через бекенд Codex Responses. Він
|
||||
не намагається спочатку використати `OPENAI_API_KEY` і не виконує тихого переходу на API key для цього
|
||||
запиту. Явно налаштуйте `models.providers.openai` з API key,
|
||||
користувацьким базовим URL або кінцевою точкою Azure, якщо хочете використовувати прямий маршрут
|
||||
OpenAI Images API.
|
||||
Якщо ця користувацька кінцева точка зображень розташована в довіреній LAN/приватній адресі, також установіть
|
||||
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; OpenClaw і надалі
|
||||
блокує приватні/внутрішні OpenAI-сумісні кінцеві точки зображень, якщо немає цього явного дозволу.
|
||||
|
||||
Згенерувати:
|
||||
|
||||
@ -308,7 +310,7 @@ openclaw infer image generate \
|
||||
Згенерувати прозорий PNG:
|
||||
|
||||
```
|
||||
/tool image_generate model=openai/gpt-image-1.5 prompt="A simple red circle sticker on a transparent background" outputFormat=png openai='{"background":"transparent"}'
|
||||
/tool image_generate model=openai/gpt-image-1.5 prompt="A simple red circle sticker on a transparent background" outputFormat=png background=transparent
|
||||
```
|
||||
|
||||
Редагувати:
|
||||
@ -324,9 +326,9 @@ openclaw infer image generate \
|
||||
| Можливість | Значення |
|
||||
| ---------------- | --------------------------------------------------------------------------------- |
|
||||
| Типова модель | `openai/sora-2` |
|
||||
| Режими | Текст-у-відео, зображення-у-відео, редагування одного відео |
|
||||
| Еталонні входи | 1 зображення або 1 відео |
|
||||
| Перевизначення розміру | Підтримується |
|
||||
| Режими | Текст у відео, зображення у відео, редагування одного відео |
|
||||
| Опорні вхідні дані | 1 зображення або 1 відео |
|
||||
| Перевизначення розміру | Підтримується |
|
||||
| Інші перевизначення | `aspectRatio`, `resolution`, `audio`, `watermark` ігноруються з попередженням інструмента |
|
||||
|
||||
```json5
|
||||
@ -340,22 +342,22 @@ openclaw infer image generate \
|
||||
```
|
||||
|
||||
<Note>
|
||||
Див. [Генерація відео](/uk/tools/video-generation) для спільних параметрів інструмента, вибору провайдера та поведінки failover.
|
||||
Див. [Генерація відео](/uk/tools/video-generation), щоб дізнатися про спільні параметри інструмента, вибір провайдера та поведінку перемикання при збої.
|
||||
</Note>
|
||||
|
||||
## Внесок у промпт GPT-5
|
||||
|
||||
OpenClaw додає спільний внесок у промпт GPT-5 для запусків сімейства GPT-5 у різних провайдерів. Він застосовується за ідентифікатором моделі, тож `openai-codex/gpt-5.5`, `openai/gpt-5.5`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні посилання GPT-5 отримують той самий overlay. Старіші моделі GPT-4.x — ні.
|
||||
OpenClaw додає спільний внесок у промпт GPT-5 для запусків сімейства GPT-5 у різних провайдерів. Він застосовується за ідентифікатором моделі, тому `openai-codex/gpt-5.5`, `openai/gpt-5.5`, `openrouter/openai/gpt-5.5`, `opencode/gpt-5.5` та інші сумісні посилання GPT-5 отримують однаковий оверлей. Старіші моделі GPT-4.x — ні.
|
||||
|
||||
Вбудований нативний Codex harness використовує ту саму поведінку GPT-5 і overlay Heartbeat через інструкції розробника Codex app-server, тому сесії `openai/gpt-5.x`, примусово спрямовані через `embeddedHarness.runtime: "codex"`, зберігають ті самі рекомендації щодо доведення справи до кінця та проактивного Heartbeat, хоча рештою промпта harness володіє Codex.
|
||||
Вбудована нативна обв’язка Codex використовує ту саму поведінку GPT-5 і оверлей Heartbeat через інструкції розробника Codex app-server, тож сеанси `openai/gpt-5.x`, примусово спрямовані через `embeddedHarness.runtime: "codex"`, зберігають ту саму послідовність дій і проактивні вказівки щодо Heartbeat, хоча рештою промпта обв’язки керує Codex.
|
||||
|
||||
Внесок GPT-5 додає тегований контракт поведінки для збереження persona, безпеки виконання, дисципліни інструментів, форми виводу, перевірок завершення та верифікації. Поведінка відповідей і тихих повідомлень, специфічна для каналів, залишається в спільному системному промпті OpenClaw і політиці вихідної доставки. Налаштування GPT-5 завжди ввімкнено для відповідних моделей. Шар дружнього стилю взаємодії є окремим і налаштовуваним.
|
||||
Внесок GPT-5 додає тегований контракт поведінки для збереження персони, безпеки виконання, дисципліни використання інструментів, форми виводу, перевірок завершення та верифікації. Поведінка відповіді для конкретного каналу та поведінка тихих повідомлень залишаються у спільному системному промпті OpenClaw і політиці вихідної доставки. Вказівки GPT-5 завжди ввімкнені для відповідних моделей. Рівень дружнього стилю взаємодії є окремим і налаштовуваним.
|
||||
|
||||
| Значення | Ефект |
|
||||
| --------------------- | ------------------------------------------ |
|
||||
| `"friendly"` (типово) | Увімкнути шар дружнього стилю взаємодії |
|
||||
| `"friendly"` (типово) | Увімкнути рівень дружнього стилю взаємодії |
|
||||
| `"on"` | Псевдонім для `"friendly"` |
|
||||
| `"off"` | Вимкнути лише шар дружнього стилю |
|
||||
| `"off"` | Вимкнути лише рівень дружнього стилю |
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Config">
|
||||
@ -379,11 +381,11 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
</Tabs>
|
||||
|
||||
<Tip>
|
||||
Значення під час виконання не чутливі до регістру, тому і `"Off"`, і `"off"` вимикають шар дружнього стилю.
|
||||
Під час виконання значення не чутливі до регістру, тому і `"Off"`, і `"off"` вимикають рівень дружнього стилю.
|
||||
</Tip>
|
||||
|
||||
<Note>
|
||||
Застаріле `plugins.entries.openai.config.personality` усе ще читається як сумісний fallback, коли спільне налаштування `agents.defaults.promptOverlays.gpt5.personality` не задано.
|
||||
Застарілий параметр `plugins.entries.openai.config.personality` і далі читається як сумісний запасний варіант, коли спільний параметр `agents.defaults.promptOverlays.gpt5.personality` не встановлено.
|
||||
</Note>
|
||||
|
||||
## Голос і мовлення
|
||||
@ -392,14 +394,14 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
<Accordion title="Синтез мовлення (TTS)">
|
||||
Вбудований Plugin `openai` реєструє синтез мовлення для поверхні `messages.tts`.
|
||||
|
||||
| Налаштування | Шлях конфігурації | Типове значення |
|
||||
| Налаштування | Шлях конфігурації | Типово |
|
||||
|---------|------------|---------|
|
||||
| Модель | `messages.tts.providers.openai.model` | `gpt-4o-mini-tts` |
|
||||
| Голос | `messages.tts.providers.openai.voice` | `coral` |
|
||||
| Швидкість | `messages.tts.providers.openai.speed` | (не задано) |
|
||||
| Інструкції | `messages.tts.providers.openai.instructions` | (не задано, лише `gpt-4o-mini-tts`) |
|
||||
| Формат | `messages.tts.providers.openai.responseFormat` | `opus` для голосових повідомлень, `mp3` для файлів |
|
||||
| API key | `messages.tts.providers.openai.apiKey` | Fallback до `OPENAI_API_KEY` |
|
||||
| Швидкість | `messages.tts.providers.openai.speed` | (не встановлено) |
|
||||
| Інструкції | `messages.tts.providers.openai.instructions` | (не встановлено, лише `gpt-4o-mini-tts`) |
|
||||
| Формат | `messages.tts.providers.openai.responseFormat` | `opus` для голосових нотаток, `mp3` для файлів |
|
||||
| API key | `messages.tts.providers.openai.apiKey` | З резервним використанням `OPENAI_API_KEY` |
|
||||
| Base URL | `messages.tts.providers.openai.baseUrl` | `https://api.openai.com/v1` |
|
||||
|
||||
Доступні моделі: `gpt-4o-mini-tts`, `tts-1`, `tts-1-hd`. Доступні голоси: `alloy`, `ash`, `ballad`, `cedar`, `coral`, `echo`, `fable`, `juniper`, `marin`, `onyx`, `nova`, `sage`, `shimmer`, `verse`.
|
||||
@ -417,23 +419,23 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
```
|
||||
|
||||
<Note>
|
||||
Установіть `OPENAI_TTS_BASE_URL`, щоб перевизначити базову URL-адресу TTS без впливу на кінцеву точку chat API.
|
||||
Установіть `OPENAI_TTS_BASE_URL`, щоб перевизначити базовий URL для TTS без впливу на кінцеву точку API чату.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Speech-to-text">
|
||||
Вбудований Plugin `openai` реєструє пакетне speech-to-text через
|
||||
поверхню транскрипції медіарозуміння OpenClaw.
|
||||
<Accordion title="Мовлення в текст">
|
||||
Вбудований Plugin `openai` реєструє пакетне перетворення мовлення в текст через
|
||||
поверхню транскрибування розуміння медіа OpenClaw.
|
||||
|
||||
- Типова модель: `gpt-4o-transcribe`
|
||||
- Кінцева точка: OpenAI REST `/v1/audio/transcriptions`
|
||||
- Шлях введення: multipart-завантаження аудіофайла
|
||||
- Підтримується в OpenClaw всюди, де транскрипція вхідного аудіо використовує
|
||||
- Вхідний шлях: multipart-вивантаження аудіофайла
|
||||
- Підтримується в OpenClaw всюди, де транскрибування вхідного аудіо використовує
|
||||
`tools.media.audio`, включно з сегментами голосових каналів Discord і
|
||||
аудіовкладеннями каналів
|
||||
|
||||
Щоб примусово використовувати OpenAI для транскрипції вхідного аудіо:
|
||||
Щоб примусово використовувати OpenAI для транскрибування вхідного аудіо:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -453,25 +455,25 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
}
|
||||
```
|
||||
|
||||
Підказки мови та промпта передаються до OpenAI, коли їх надає
|
||||
спільна конфігурація аудіомедіа або запит транскрипції для окремого виклику.
|
||||
Підказки мови та промпта пересилаються до OpenAI, коли їх надано через
|
||||
спільну конфігурацію аудіомедіа або запит транскрибування для окремого виклику.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Транскрипція в реальному часі">
|
||||
Вбудований Plugin `openai` реєструє транскрипцію в реальному часі для Plugin Voice Call.
|
||||
<Accordion title="Транскрибування в реальному часі">
|
||||
Вбудований Plugin `openai` реєструє транскрибування в реальному часі для Plugin Voice Call.
|
||||
|
||||
| Налаштування | Шлях конфігурації | Типове значення |
|
||||
| Налаштування | Шлях конфігурації | Типово |
|
||||
|---------|------------|---------|
|
||||
| Модель | `plugins.entries.voice-call.config.streaming.providers.openai.model` | `gpt-4o-transcribe` |
|
||||
| Мова | `...openai.language` | (не задано) |
|
||||
| Промпт | `...openai.prompt` | (не задано) |
|
||||
| Мова | `...openai.language` | (не встановлено) |
|
||||
| Промпт | `...openai.prompt` | (не встановлено) |
|
||||
| Тривалість тиші | `...openai.silenceDurationMs` | `800` |
|
||||
| Поріг VAD | `...openai.vadThreshold` | `0.5` |
|
||||
| API key | `...openai.apiKey` | Fallback до `OPENAI_API_KEY` |
|
||||
| API key | `...openai.apiKey` | З резервним використанням `OPENAI_API_KEY` |
|
||||
|
||||
<Note>
|
||||
Використовує з’єднання WebSocket з `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей потоковий провайдер призначений для шляху транскрипції в реальному часі у Voice Call; голос Discord наразі записує короткі сегменти та натомість використовує шлях пакетної транскрипції `tools.media.audio`.
|
||||
Використовує WebSocket-з’єднання до `wss://api.openai.com/v1/realtime` з аудіо G.711 u-law (`g711_ulaw` / `audio/pcmu`). Цей потоковий провайдер призначений для шляху транскрибування в реальному часі у Voice Call; голос Discord наразі записує короткі сегменти й натомість використовує пакетний шлях транскрибування `tools.media.audio`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
@ -479,17 +481,17 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
<Accordion title="Голос у реальному часі">
|
||||
Вбудований Plugin `openai` реєструє голос у реальному часі для Plugin Voice Call.
|
||||
|
||||
| Налаштування | Шлях конфігурації | Типове значення |
|
||||
| Налаштування | Шлях конфігурації | Типово |
|
||||
|---------|------------|---------|
|
||||
| Модель | `plugins.entries.voice-call.config.realtime.providers.openai.model` | `gpt-realtime-1.5` |
|
||||
| Голос | `...openai.voice` | `alloy` |
|
||||
| Temperature | `...openai.temperature` | `0.8` |
|
||||
| Поріг VAD | `...openai.vadThreshold` | `0.5` |
|
||||
| Тривалість тиші | `...openai.silenceDurationMs` | `500` |
|
||||
| API key | `...openai.apiKey` | Fallback до `OPENAI_API_KEY` |
|
||||
| API key | `...openai.apiKey` | З резервним використанням `OPENAI_API_KEY` |
|
||||
|
||||
<Note>
|
||||
Підтримує Azure OpenAI через ключі конфігурації `azureEndpoint` і `azureDeployment`. Підтримує двобічний виклик інструментів. Використовує аудіоформат G.711 u-law.
|
||||
Підтримує Azure OpenAI через ключі конфігурації `azureEndpoint` і `azureDeployment`. Підтримує двоспрямований виклик інструментів. Використовує аудіоформат G.711 u-law.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
@ -498,27 +500,28 @@ OpenClaw додає спільний внесок у промпт GPT-5 для
|
||||
## Кінцеві точки Azure OpenAI
|
||||
|
||||
Вбудований провайдер `openai` може націлюватися на ресурс Azure OpenAI для
|
||||
генерації зображень через перевизначення базової URL-адреси. На шляху генерації зображень OpenClaw
|
||||
генерації зображень через перевизначення базового URL. На шляху генерації зображень OpenClaw
|
||||
визначає імена хостів Azure у `models.providers.openai.baseUrl` і автоматично перемикається на
|
||||
формат запитів Azure.
|
||||
форму запиту Azure.
|
||||
|
||||
<Note>
|
||||
Голос у реальному часі використовує окремий шлях конфігурації
|
||||
(`plugins.entries.voice-call.config.realtime.providers.openai.azureEndpoint`)
|
||||
і не залежить від `models.providers.openai.baseUrl`. Див. акордеон **Голос у реальному
|
||||
часі** в розділі [Голос і мовлення](#voice-and-speech) для його параметрів Azure.
|
||||
і на нього не впливає `models.providers.openai.baseUrl`. Див. акордеон **Голос
|
||||
у реальному часі** в розділі [Голос і мовлення](#voice-and-speech), щоб дізнатися про його параметри
|
||||
Azure.
|
||||
</Note>
|
||||
|
||||
Використовуйте Azure OpenAI, якщо:
|
||||
Використовуйте Azure OpenAI, коли:
|
||||
|
||||
- У вас уже є підписка Azure OpenAI, квота або корпоративна угода
|
||||
- Вам потрібна регіональна резидентність даних або засоби відповідності, які надає Azure
|
||||
- Ви хочете зберігати трафік у межах наявного tenancy Azure
|
||||
- Вам потрібні регіональне зберігання даних або засоби відповідності вимогам, які надає Azure
|
||||
- Ви хочете зберігати трафік у межах наявного середовища Azure
|
||||
|
||||
### Конфігурація
|
||||
|
||||
Для генерації зображень через Azure за допомогою вбудованого провайдера `openai` вкажіть
|
||||
`models.providers.openai.baseUrl` на ваш ресурс Azure і встановіть `apiKey` у
|
||||
`models.providers.openai.baseUrl` на свій ресурс Azure і встановіть `apiKey` як
|
||||
ключ Azure OpenAI (а не ключ OpenAI Platform):
|
||||
|
||||
```json5
|
||||
@ -543,16 +546,16 @@ OpenClaw розпізнає такі суфікси хостів Azure для м
|
||||
Для запитів генерації зображень на розпізнаному хості Azure OpenClaw:
|
||||
|
||||
- Надсилає заголовок `api-key` замість `Authorization: Bearer`
|
||||
- Використовує шляхи, прив’язані до deployment (`/openai/deployments/{deployment}/...`)
|
||||
- Використовує шляхи з областю deployment (`/openai/deployments/{deployment}/...`)
|
||||
- Додає `?api-version=...` до кожного запиту
|
||||
|
||||
Інші base URL (публічний OpenAI, OpenAI-сумісні проксі) зберігають стандартний
|
||||
формат запиту зображень OpenAI.
|
||||
Інші базові URL (публічний OpenAI, OpenAI-сумісні проксі) зберігають стандартну
|
||||
форму запиту зображень OpenAI.
|
||||
|
||||
<Note>
|
||||
Маршрутизація Azure для шляху генерації зображень провайдера `openai` потребує
|
||||
OpenClaw 2026.4.22 або новішої версії. Попередні версії трактують будь-який користувацький
|
||||
`openai.baseUrl` як публічну кінцеву точку OpenAI і завершуються помилкою при роботі з deployment зображень Azure.
|
||||
Маршрутизація Azure для шляху генерації зображень провайдера `openai` вимагає
|
||||
OpenClaw 2026.4.22 або новішої версії. У попередніх версіях будь-який користувацький
|
||||
`openai.baseUrl` обробляється як публічна кінцева точка OpenAI і не працюватиме з deployment зображень Azure.
|
||||
</Note>
|
||||
|
||||
### Версія API
|
||||
@ -564,22 +567,22 @@ OpenClaw 2026.4.22 або новішої версії. Попередні вер
|
||||
export AZURE_OPENAI_API_VERSION="2024-12-01-preview"
|
||||
```
|
||||
|
||||
Типове значення — `2024-12-01-preview`, якщо змінну не встановлено.
|
||||
Типове значення — `2024-12-01-preview`, коли змінну не встановлено.
|
||||
|
||||
### Назви моделей — це назви deployment
|
||||
### Імена моделей — це імена deployment
|
||||
|
||||
Azure OpenAI прив’язує моделі до deployment. Для запитів генерації зображень Azure,
|
||||
маршрутизованих через вбудований провайдер `openai`, поле `model` в OpenClaw
|
||||
має бути **назвою deployment Azure**, яку ви налаштували в порталі Azure, а не
|
||||
має бути **іменем deployment Azure**, яке ви налаштували в порталі Azure, а не
|
||||
публічним ідентифікатором моделі OpenAI.
|
||||
|
||||
Якщо ви створили deployment з назвою `gpt-image-2-prod`, який обслуговує `gpt-image-2`:
|
||||
Якщо ви створили deployment під назвою `gpt-image-2-prod`, який обслуговує `gpt-image-2`:
|
||||
|
||||
```
|
||||
/tool image_generate model=openai/gpt-image-2-prod prompt="A clean poster" size=1024x1024 count=1
|
||||
```
|
||||
|
||||
Те саме правило щодо назв deployment застосовується до викликів генерації зображень,
|
||||
Те саме правило імені deployment застосовується до викликів генерації зображень,
|
||||
маршрутизованих через вбудований провайдер `openai`.
|
||||
|
||||
### Регіональна доступність
|
||||
@ -587,26 +590,26 @@ Azure OpenAI прив’язує моделі до deployment. Для запит
|
||||
Генерація зображень Azure наразі доступна лише в частині регіонів
|
||||
(наприклад, `eastus2`, `swedencentral`, `polandcentral`, `westus3`,
|
||||
`uaenorth`). Перевірте актуальний список регіонів Microsoft перед створенням
|
||||
deployment, а також підтвердьте, що конкретна модель доступна у вашому регіоні.
|
||||
deployment і підтвердьте, що конкретна модель доступна у вашому регіоні.
|
||||
|
||||
### Відмінності параметрів
|
||||
|
||||
Azure OpenAI і публічний OpenAI не завжди приймають однакові параметри зображень.
|
||||
Azure може відхиляти параметри, які публічний OpenAI дозволяє (наприклад, певні
|
||||
значення `background` для `gpt-image-2`), або надавати їх лише в певних версіях
|
||||
моделі. Ці відмінності походять від Azure та базової моделі, а не від
|
||||
Azure може відхиляти параметри, які дозволяє публічний OpenAI (наприклад, певні
|
||||
значення `background` для `gpt-image-2`), або надавати їх лише для конкретних
|
||||
версій моделей. Ці відмінності походять від Azure та базової моделі, а не від
|
||||
OpenClaw. Якщо запит Azure завершується помилкою валідації, перевірте
|
||||
набір параметрів, який підтримує ваш конкретний deployment і версія API в
|
||||
порталі Azure.
|
||||
|
||||
<Note>
|
||||
Azure OpenAI використовує нативний транспорт і сумісну поведінку, але не отримує
|
||||
приховані заголовки атрибуції OpenClaw — див. акордеон **Нативні маршрути vs OpenAI-compatible
|
||||
маршрути** у розділі [Розширена конфігурація](#advanced-configuration).
|
||||
Azure OpenAI використовує нативну транспортну та сумісну поведінку, але не отримує
|
||||
прихованих заголовків атрибуції OpenClaw — див. акордеон **Нативні маршрути та OpenAI-compatible
|
||||
маршрути** у [Розширена конфігурація](#advanced-configuration).
|
||||
|
||||
Для трафіку chat або Responses в Azure (поза генерацією зображень) використовуйте
|
||||
Для трафіку Chat або Responses в Azure (поза генерацією зображень) використовуйте
|
||||
потік онбордингу або окрему конфігурацію провайдера Azure — одного лише `openai.baseUrl`
|
||||
недостатньо, щоб увімкнути формат API/автентифікації Azure. Існує окремий
|
||||
недостатньо, щоб підібрати форму API/автентифікації Azure. Існує окремий
|
||||
провайдер `azure-openai-responses/*`; див.
|
||||
акордеон Server-side compaction нижче.
|
||||
</Note>
|
||||
@ -615,17 +618,17 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Транспорт (WebSocket vs SSE)">
|
||||
OpenClaw використовує спочатку WebSocket з fallback на SSE (`"auto"`) як для `openai/*`, так і для `openai-codex/*`.
|
||||
OpenClaw використовує спочатку WebSocket з резервним переходом на SSE (`"auto"`) як для `openai/*`, так і для `openai-codex/*`.
|
||||
|
||||
У режимі `"auto"` OpenClaw:
|
||||
- Повторює одну ранню помилку WebSocket перед переходом на SSE
|
||||
- Після помилки позначає WebSocket як деградований приблизно на 60 секунд і використовує SSE протягом періоду охолодження
|
||||
- Додає стабільні заголовки ідентифікації сесії та ходу для повторів і перепідключень
|
||||
- Після помилки позначає WebSocket як деградований приблизно на 60 секунд і використовує SSE під час охолодження
|
||||
- Додає стабільні заголовки ідентичності сеансу та ходу для повторних спроб і повторних підключень
|
||||
- Нормалізує лічильники використання (`input_tokens` / `prompt_tokens`) між варіантами транспорту
|
||||
|
||||
| Значення | Поведінка |
|
||||
|-------|----------|
|
||||
| `"auto"` (типово) | Спочатку WebSocket, fallback на SSE |
|
||||
| `"auto"` (типово) | Спочатку WebSocket, резервно SSE |
|
||||
| `"sse"` | Примусово лише SSE |
|
||||
| `"websocket"` | Примусово лише WebSocket |
|
||||
|
||||
@ -652,11 +655,11 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Прогрів WebSocket">
|
||||
OpenClaw типово вмикає прогрів WebSocket для `openai/*` і `openai-codex/*`, щоб зменшити затримку першого ходу.
|
||||
<Accordion title="Прогрівання WebSocket">
|
||||
OpenClaw типово вмикає прогрівання WebSocket для `openai/*` і `openai-codex/*`, щоб зменшити затримку першого ходу.
|
||||
|
||||
```json5
|
||||
// Вимкнути прогрів
|
||||
// Вимкнути прогрівання
|
||||
{
|
||||
agents: {
|
||||
defaults: {
|
||||
@ -678,7 +681,7 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
- **Chat/UI:** `/fast status|on|off`
|
||||
- **Config:** `agents.defaults.models["<provider>/<model>"].params.fastMode`
|
||||
|
||||
Коли його ввімкнено, OpenClaw відображає швидкий режим у пріоритетну обробку OpenAI (`service_tier = "priority"`). Наявні значення `service_tier` зберігаються, а швидкий режим не переписує `reasoning` або `text.verbosity`.
|
||||
Коли його ввімкнено, OpenClaw зіставляє швидкий режим із пріоритетною обробкою OpenAI (`service_tier = "priority"`). Наявні значення `service_tier` зберігаються, а швидкий режим не переписує `reasoning` або `text.verbosity`.
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -693,13 +696,13 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
```
|
||||
|
||||
<Note>
|
||||
Перевизначення сесії мають пріоритет над конфігурацією. Очищення перевизначення сесії в інтерфейсі Sessions повертає сесію до налаштованого типового значення.
|
||||
Перевизначення сеансу мають вищий пріоритет за конфігурацію. Очищення перевизначення сеансу в UI Sessions повертає сеанс до налаштованого типового значення.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Пріоритетна обробка (service_tier)">
|
||||
API OpenAI надає пріоритетну обробку через `service_tier`. Налаштуйте її для кожної моделі в OpenClaw:
|
||||
API OpenAI надає пріоритетну обробку через `service_tier`. Установіть її для кожної моделі в OpenClaw:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -716,22 +719,22 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
Підтримувані значення: `auto`, `default`, `flex`, `priority`.
|
||||
|
||||
<Warning>
|
||||
`serviceTier` передається лише до нативних кінцевих точок OpenAI (`api.openai.com`) і нативних кінцевих точок Codex (`chatgpt.com/backend-api`). Якщо ви маршрутизуєте будь-якого провайдера через проксі, OpenClaw залишає `service_tier` без змін.
|
||||
`serviceTier` пересилається лише до нативних кінцевих точок OpenAI (`api.openai.com`) і нативних кінцевих точок Codex (`chatgpt.com/backend-api`). Якщо ви маршрутизуєте будь-якого з цих провайдерів через проксі, OpenClaw залишає `service_tier` без змін.
|
||||
</Warning>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Server-side compaction (Responses API)">
|
||||
Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) обгортка потоку Pi-harness Plugin OpenAI автоматично вмикає Server-side compaction:
|
||||
Для прямих моделей OpenAI Responses (`openai/*` на `api.openai.com`) обгортка потоку Pi-harness плагіна OpenAI автоматично вмикає server-side compaction:
|
||||
|
||||
- Примусово встановлює `store: true` (якщо compat моделі не задає `supportsStore: false`)
|
||||
- Примусово встановлює `store: true` (якщо сумісність моделі не встановлює `supportsStore: false`)
|
||||
- Вставляє `context_management: [{ type: "compaction", compact_threshold: ... }]`
|
||||
- Типовий `compact_threshold`: 70% від `contextWindow` (або `80000`, якщо він недоступний)
|
||||
- Типовий `compact_threshold`: 70% від `contextWindow` (або `80000`, коли значення недоступне)
|
||||
|
||||
Це застосовується до вбудованого шляху Pi harness і до хуків провайдера OpenAI, що використовуються в embedded запусках. Нативний Codex app-server harness керує власним контекстом через Codex і налаштовується окремо через `agents.defaults.embeddedHarness.runtime`.
|
||||
Це застосовується до вбудованого шляху Pi harness і до хуків провайдера OpenAI, що використовуються вбудованими запусками. Нативна обв’язка Codex app-server керує власним контекстом через Codex і налаштовується окремо через `agents.defaults.embeddedHarness.runtime`.
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Явне ввімкнення">
|
||||
<Tab title="Увімкнути явно">
|
||||
Корисно для сумісних кінцевих точок, таких як Azure OpenAI Responses:
|
||||
|
||||
```json5
|
||||
@ -784,12 +787,12 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
</Tabs>
|
||||
|
||||
<Note>
|
||||
`responsesServerCompaction` керує лише вставкою `context_management`. Прямі моделі OpenAI Responses усе одно примусово встановлюють `store: true`, якщо compat не задає `supportsStore: false`.
|
||||
`responsesServerCompaction` керує лише вставленням `context_management`. Прямі моделі OpenAI Responses усе одно примусово встановлюють `store: true`, якщо сумісність не задає `supportsStore: false`.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Строгий агентний режим GPT">
|
||||
<Accordion title="Суворий агентний режим GPT">
|
||||
Для запусків сімейства GPT-5 на `openai/*` OpenClaw може використовувати суворіший вбудований контракт виконання:
|
||||
|
||||
```json5
|
||||
@ -802,35 +805,35 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
}
|
||||
```
|
||||
|
||||
З `strict-agentic` OpenClaw:
|
||||
Із `strict-agentic` OpenClaw:
|
||||
- Більше не вважає хід лише з планом успішним прогресом, коли доступна дія через інструмент
|
||||
- Повторює хід із вказівкою діяти негайно
|
||||
- Автоматично вмикає `update_plan` для суттєвої роботи
|
||||
- Показує явний заблокований стан, якщо модель продовжує планувати без дій
|
||||
- Показує явний заблокований стан, якщо модель продовжує планувати без дії
|
||||
|
||||
<Note>
|
||||
Обмежено лише OpenAI і Codex запусками сімейства GPT-5. Інші провайдери та старіші сімейства моделей зберігають типову поведінку.
|
||||
Обмежено лише запусками сімейства OpenAI і Codex GPT-5. Інші провайдери та старіші сімейства моделей зберігають типову поведінку.
|
||||
</Note>
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Нативні маршрути vs OpenAI-compatible маршрути">
|
||||
OpenClaw по-різному обробляє прямі кінцеві точки OpenAI, Codex і Azure OpenAI порівняно з загальними OpenAI-compatible проксі `/v1`:
|
||||
<Accordion title="Нативні маршрути та OpenAI-compatible маршрути">
|
||||
OpenClaw по-різному обробляє прямі кінцеві точки OpenAI, Codex і Azure OpenAI порівняно із загальними OpenAI-compatible проксі `/v1`:
|
||||
|
||||
**Нативні маршрути** (`openai/*`, Azure OpenAI):
|
||||
- Зберігають `reasoning: { effort: "none" }` лише для моделей, які підтримують OpenAI-значення effort `none`
|
||||
- Не додають вимкнений reasoning для моделей або проксі, які відхиляють `reasoning.effort: "none"`
|
||||
- Типово використовують строгий режим для схем інструментів
|
||||
- Зберігають `reasoning: { effort: "none" }` лише для моделей, які підтримують OpenAI `none` effort
|
||||
- Пропускають вимкнене reasoning для моделей або проксі, які відхиляють `reasoning.effort: "none"`
|
||||
- Типово використовують суворий режим для схем інструментів
|
||||
- Додають приховані заголовки атрибуції лише на перевірених нативних хостах
|
||||
- Зберігають форму запиту, специфічну для OpenAI (`service_tier`, `store`, reasoning-compat, підказки prompt cache)
|
||||
- Зберігають формування запиту лише для OpenAI (`service_tier`, `store`, сумісність reasoning, підказки кешу промптів)
|
||||
|
||||
**Proxy/compatible маршрути:**
|
||||
**Маршрути проксі/сумісності:**
|
||||
- Використовують м’якшу сумісну поведінку
|
||||
- Видаляють Completions `store` з ненативних payload `openai-completions`
|
||||
- Приймають передавання JSON `params.extra_body`/`params.extraBody` для OpenAI-compatible проксі Completions
|
||||
- Не примушують строгі схеми інструментів або заголовки лише для нативних маршрутів
|
||||
- Приймають наскрізний JSON `params.extra_body`/`params.extraBody` для розширених OpenAI-compatible проксі Completions
|
||||
- Не примушують суворі схеми інструментів або заголовки лише для нативних маршрутів
|
||||
|
||||
Azure OpenAI використовує нативний транспорт і сумісну поведінку, але не отримує приховані заголовки атрибуції.
|
||||
Azure OpenAI використовує нативну транспортну та сумісну поведінку, але не отримує прихованих заголовків атрибуції.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -839,15 +842,15 @@ Azure OpenAI використовує нативний транспорт і с
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Вибір моделі" href="/uk/concepts/model-providers" icon="layers">
|
||||
Вибір провайдерів, посилань на моделі та поведінки failover.
|
||||
Вибір провайдерів, посилань на моделі та поведінки перемикання при збої.
|
||||
</Card>
|
||||
<Card title="Генерація зображень" href="/uk/tools/image-generation" icon="image">
|
||||
Спільні параметри інструмента зображень і вибір провайдера.
|
||||
</Card>
|
||||
<Card title="Генерація відео" href="/uk/tools/video-generation" icon="video">
|
||||
Спільні параметри інструмента відео і вибір провайдера.
|
||||
Спільні параметри інструмента відео та вибір провайдера.
|
||||
</Card>
|
||||
<Card title="OAuth і автентифікація" href="/uk/gateway/authentication" icon="key">
|
||||
Відомості про автентифікацію та правила повторного використання облікових даних.
|
||||
<Card title="OAuth та автентифікація" href="/uk/gateway/authentication" icon="key">
|
||||
Докладніше про автентифікацію та правила повторного використання облікових даних.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -1,149 +1,154 @@
|
||||
---
|
||||
read_when:
|
||||
- Пояснення використання токенів, вартості або вікон контексту
|
||||
- Пояснення використання токенів, витрат або вікон контексту
|
||||
- Налагодження зростання контексту або поведінки Compaction
|
||||
summary: Як OpenClaw будує контекст prompt і звітує про використання токенів та вартість
|
||||
title: Використання токенів і вартість
|
||||
summary: Як OpenClaw будує контекст промпту та звітує про використання токенів і витрати
|
||||
title: Використання токенів і витрати
|
||||
x-i18n:
|
||||
generated_at: "2026-04-24T03:20:31Z"
|
||||
generated_at: "2026-04-25T19:29:24Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 4a95e7592a06bd750c0bfc9303d8cec2a538756e95f35c3001dc960cfebcadbf
|
||||
source_hash: 828b282103902f55d65ce820c17753c2602169eff068bcea36e629759002f28d
|
||||
source_path: reference/token-use.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Використання токенів і вартість
|
||||
# Використання токенів і витрати
|
||||
|
||||
OpenClaw відстежує **токени**, а не символи. Токени залежать від моделі, але більшість
|
||||
моделей у стилі OpenAI у середньому мають ~4 символи на токен для англійського тексту.
|
||||
|
||||
## Як будується system prompt
|
||||
## Як будується системний промпт
|
||||
|
||||
OpenClaw збирає власний system prompt під час кожного запуску. Він містить:
|
||||
OpenClaw збирає власний системний промпт під час кожного запуску. Він містить:
|
||||
|
||||
- Список інструментів + короткі описи
|
||||
- Список Skills (лише метадані; інструкції завантажуються за запитом через `read`).
|
||||
- Список Skills (лише метадані; інструкції завантажуються за потреби через `read`).
|
||||
Компактний блок Skills обмежується `skills.limits.maxSkillsPromptChars`,
|
||||
із необов’язковим перевизначенням для агента в
|
||||
з необов’язковим перевизначенням для окремого агента в
|
||||
`agents.list[].skillsLimits.maxSkillsPromptChars`.
|
||||
- Інструкції для self-update
|
||||
- Workspace + bootstrap-файли (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` для нових агентів, а також `MEMORY.md`, якщо він є). Кореневий `memory.md` у нижньому регістрі не інжектується; це вхід для legacy repair для `openclaw doctor --fix`, коли він присутній разом із `MEMORY.md`. Великі файли обрізаються за `agents.defaults.bootstrapMaxChars` (типово: 12000), а загальна ін’єкція bootstrap обмежується `agents.defaults.bootstrapTotalMaxChars` (типово: 60000). Щоденні файли `memory/*.md` не є частиною звичайного bootstrap prompt; вони залишаються доступними за запитом через інструменти пам’яті у звичайних turn, але прості `/new` і `/reset` можуть додати одноразовий блок startup-context із недавньою щоденною пам’яттю для першого turn. Ця startup prelude керується через `agents.defaults.startupContext`.
|
||||
- Інструкції для самостійного оновлення
|
||||
- Робочий простір + bootstrap-файли (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` для нових, а також `MEMORY.md`, якщо він є). `memory.md` у нижньому регістрі в корені не інжектується; це застарілий вхід для виправлення через `openclaw doctor --fix`, коли він використовується разом із `MEMORY.md`. Великі файли обрізаються через `agents.defaults.bootstrapMaxChars` (типово: 12000), а загальний обсяг bootstrap-інжекції обмежується `agents.defaults.bootstrapTotalMaxChars` (типово: 60000). Щоденні файли `memory/*.md` не входять до звичайного bootstrap-промпту; вони залишаються доступними за потреби через інструменти пам’яті під час звичайних ходів, але чисті `/new` і `/reset` можуть додавати одноразовий блок стартового контексту з нещодавньою щоденною пам’яттю для першого ходу. Цей стартовий вступ керується через `agents.defaults.startupContext`.
|
||||
- Час (UTC + часовий пояс користувача)
|
||||
- Теги відповіді + поведінка Heartbeat
|
||||
- Метадані runtime (хост/ОС/модель/thinking)
|
||||
- Метадані середовища виконання (host/OS/model/thinking)
|
||||
|
||||
Повний розбір див. у [System Prompt](/uk/concepts/system-prompt).
|
||||
Див. повний розбір у [System Prompt](/uk/concepts/system-prompt).
|
||||
|
||||
## Що враховується у вікні контексту
|
||||
## Що входить до вікна контексту
|
||||
|
||||
Усе, що отримує модель, враховується в межі контексту:
|
||||
Усе, що отримує модель, зараховується до ліміту контексту:
|
||||
|
||||
- System prompt (усі перелічені вище секції)
|
||||
- Історія розмови (повідомлення користувача + асистента)
|
||||
- Системний промпт (усі перелічені вище секції)
|
||||
- Історія розмови (повідомлення користувача й асистента)
|
||||
- Виклики інструментів і результати інструментів
|
||||
- Вкладення/транскрипти (зображення, аудіо, файли)
|
||||
- Підсумки Compaction і артефакти обрізання
|
||||
- Обгортки провайдера або заголовки безпеки (не видимі, але все одно враховуються)
|
||||
|
||||
Деякі важкі поверхні runtime мають власні явні обмеження:
|
||||
Деякі поверхні з великим навантаженням під час виконання мають власні явні обмеження:
|
||||
|
||||
- `agents.defaults.contextLimits.memoryGetMaxChars`
|
||||
- `agents.defaults.contextLimits.memoryGetDefaultLines`
|
||||
- `agents.defaults.contextLimits.toolResultMaxChars`
|
||||
- `agents.defaults.contextLimits.postCompactionMaxChars`
|
||||
|
||||
Перевизначення для агента розташовані в `agents.list[].contextLimits`. Ці параметри
|
||||
призначені для обмежених runtime-уривків та інжектованих блоків, якими володіє runtime. Вони
|
||||
окремі від обмежень bootstrap, startup-context і обмежень prompt для Skills.
|
||||
Перевизначення для окремого агента розташовані в `agents.list[].contextLimits`. Ці параметри
|
||||
призначені для обмежених за розміром фрагментів часу виконання та інжектованих блоків,
|
||||
якими володіє runtime. Вони відокремлені від bootstrap-лімітів, лімітів
|
||||
стартового контексту та лімітів промпту Skills.
|
||||
|
||||
Для зображень OpenClaw зменшує розмір payload зображень із транскриптів/інструментів перед викликами провайдера.
|
||||
Для налаштування використовуйте `agents.defaults.imageMaxDimensionPx` (типово: `1200`):
|
||||
Для зображень OpenClaw зменшує розмір зображень у транскриптах/інструментах перед викликами провайдера.
|
||||
Використовуйте `agents.defaults.imageMaxDimensionPx` (типово: `1200`) для налаштування:
|
||||
|
||||
- Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload.
|
||||
- Вищі значення зберігають більше візуальних деталей для OCR/UI-насичених скриншотів.
|
||||
- Вищі значення зберігають більше візуальних деталей для OCR або скриншотів із насиченим UI.
|
||||
|
||||
Для практичного розбору (по кожному інжектованому файлу, інструментах, Skills і розміру system prompt) використовуйте `/context list` або `/context detail`. Див. [Context](/uk/concepts/context).
|
||||
Для практичного розбору (для кожного інжектованого файла, інструментів, Skills і розміру системного промпту) використовуйте `/context list` або `/context detail`. Див. [Context](/uk/concepts/context).
|
||||
|
||||
## Як побачити поточне використання токенів
|
||||
## Як переглянути поточне використання токенів
|
||||
|
||||
Використовуйте це в чаті:
|
||||
|
||||
- `/status` → **картка стану з emoji** із моделлю сесії, використанням контексту,
|
||||
вхідними/вихідними токенами останньої відповіді та **орієнтовною вартістю** (лише для API-ключа).
|
||||
- `/usage off|tokens|full` → додає **нижній колонтитул використання для кожної відповіді** до кожної відповіді.
|
||||
- Зберігається для сесії (зберігається як `responseUsage`).
|
||||
- Автентифікація OAuth **приховує вартість** (лише токени).
|
||||
- `/status` → **картка статусу з емодзі**, яка показує модель сесії, використання контексту,
|
||||
токени введення/виведення останньої відповіді та **оцінену вартість** (лише для API key).
|
||||
- `/usage off|tokens|full` → додає **підвал використання для кожної відповіді** до кожної відповіді.
|
||||
- Зберігається для сесії (записується як `responseUsage`).
|
||||
- OAuth-автентифікація **приховує вартість** (лише токени).
|
||||
- `/usage cost` → показує локальний підсумок вартості з логів сесії OpenClaw.
|
||||
|
||||
Інші поверхні:
|
||||
|
||||
- **TUI/Web TUI:** підтримуються `/status` + `/usage`.
|
||||
- **TUI/Web TUI:** підтримуються `/status` і `/usage`.
|
||||
- **CLI:** `openclaw status --usage` і `openclaw channels list` показують
|
||||
нормалізовані вікна квот провайдера (`X% left`, а не вартість за відповідь).
|
||||
Поточні провайдери з вікнами використання: Anthropic, GitHub Copilot, Gemini CLI,
|
||||
нормалізовані вікна квот провайдера (`X% left`, а не витрати на кожну відповідь).
|
||||
Поточні провайдери для вікон використання: Anthropic, GitHub Copilot, Gemini CLI,
|
||||
OpenAI Codex, MiniMax, Xiaomi і z.ai.
|
||||
|
||||
Поверхні використання нормалізують поширені нативні псевдоніми полів провайдерів перед показом.
|
||||
Поверхні використання нормалізують поширені псевдоніми нативних полів провайдера перед показом.
|
||||
Для трафіку OpenAI-family Responses це включає і `input_tokens` /
|
||||
`output_tokens`, і `prompt_tokens` / `completion_tokens`, тому специфічні для транспорту
|
||||
назви полів не змінюють `/status`, `/usage` або підсумки сесії.
|
||||
Використання Gemini CLI JSON також нормалізується: текст відповіді береться з `response`, а
|
||||
`stats.cached` зіставляється з `cacheRead`, при цьому використовується `stats.input_tokens - stats.cached`,
|
||||
`output_tokens`, і `prompt_tokens` / `completion_tokens`, тож специфічні
|
||||
для транспорту назви полів не змінюють `/status`, `/usage` або підсумки сесії.
|
||||
Використання JSON у Gemini CLI також нормалізується: текст відповіді береться з `response`, а
|
||||
`stats.cached` мапиться на `cacheRead`, при цьому використовується `stats.input_tokens - stats.cached`,
|
||||
коли CLI не надає явного поля `stats.input`.
|
||||
Для нативного трафіку OpenAI-family Responses псевдоніми використання WebSocket/SSE
|
||||
нормалізуються так само, а підсумки використовують нормалізовані input + output, якщо
|
||||
Для нативного трафіку OpenAI-family Responses псевдоніми використання у WebSocket/SSE
|
||||
нормалізуються так само, а загальні значення повертаються до нормалізованих input + output, коли
|
||||
`total_tokens` відсутній або дорівнює `0`.
|
||||
Коли поточний snapshot сесії є розрідженим, `/status` і `session_status` також можуть
|
||||
відновлювати лічильники токенів/кешу й мітку активної моделі runtime з
|
||||
найновішого логу використання в транскрипті. Наявні ненульові live-значення все ще мають
|
||||
пріоритет над fallback-значеннями з транскрипту, а більші totals із транскрипту,
|
||||
орієнтовані на prompt, можуть перемагати, коли збережені totals відсутні або менші.
|
||||
Автентифікація використання для вікон квот провайдера надходить із hook-ів, специфічних для провайдера, коли вони доступні;
|
||||
інакше OpenClaw використовує fallback до відповідних облікових даних OAuth/API-key
|
||||
з профілів автентифікації, env або config.
|
||||
Коли поточний знімок сесії містить мало даних, `/status` і `session_status` також можуть
|
||||
відновлювати лічильники токенів/кешу та мітку активної runtime-моделі з
|
||||
найновішого логу використання транскрипту. Наявні ненульові live-значення все ще мають
|
||||
пріоритет над fallback-значеннями з транскрипту, а більші загальні значення
|
||||
з транскрипту, орієнтовані на промпт, можуть перемагати, коли збережені загальні значення відсутні або менші.
|
||||
Автентифікація використання для вікон квот провайдера надходить із гачків, специфічних для провайдера, коли це можливо;
|
||||
інакше OpenClaw повертається до зіставлення облікових даних OAuth/API key
|
||||
з auth profiles, змінних середовища або конфігурації.
|
||||
Записи транскрипту асистента зберігають ту саму нормалізовану форму використання, включно з
|
||||
`usage.cost`, коли для активної моделі налаштовано pricing і провайдер повертає метадані використання. Це дає `/usage cost` і статусу сесії на основі транскрипту
|
||||
стабільне джерело навіть після зникнення live-стану runtime.
|
||||
`usage.cost`, коли для активної моделі налаштовано ціни і провайдер повертає метадані використання.
|
||||
Це дає `/usage cost` і статусу сесії на основі транскрипту стабільне джерело навіть після того, як live-стан runtime зникне.
|
||||
|
||||
OpenClaw тримає облік використання провайдера окремо від поточного знімка контексту.
|
||||
`usage.total` провайдера може включати кешоване введення, виведення та кілька викликів моделі
|
||||
в циклі інструментів, тому це корисно для вартості й телеметрії, але може завищувати
|
||||
live-вікно контексту. Відображення контексту та діагностика використовують найновіший знімок
|
||||
промпту (`promptTokens`, або останній виклик моделі, якщо знімок промпту недоступний) для `context.used`.
|
||||
|
||||
## Оцінка вартості (коли показується)
|
||||
|
||||
Вартість оцінюється на основі вашої конфігурації цін моделі:
|
||||
Вартість оцінюється з конфігурації цін вашої моделі:
|
||||
|
||||
```
|
||||
models.providers.<provider>.models[].cost
|
||||
```
|
||||
|
||||
Це **USD за 1M токенів** для `input`, `output`, `cacheRead` і
|
||||
`cacheWrite`. Якщо pricing відсутній, OpenClaw показує лише токени. Токени OAuth
|
||||
`cacheWrite`. Якщо дані про ціну відсутні, OpenClaw показує лише токени. OAuth-токени
|
||||
ніколи не показують вартість у доларах.
|
||||
|
||||
## Вплив TTL кешу й обрізання
|
||||
## Вплив TTL кешу та обрізання
|
||||
|
||||
Кешування prompt провайдера застосовується лише в межах вікна TTL кешу. OpenClaw може
|
||||
необов’язково запускати **cache-ttl pruning**: він обрізає сесію після того, як TTL кешу
|
||||
спливає, а потім скидає вікно кешу, щоб наступні запити могли повторно використовувати
|
||||
свіжокешований контекст замість повторного кешування всієї історії. Це утримує
|
||||
витрати на cache write нижчими, коли сесія простоює довше за TTL.
|
||||
Кешування промптів провайдера застосовується лише в межах вікна TTL кешу. OpenClaw може
|
||||
необов’язково запускати **cache-ttl pruning**: він обрізає сесію після завершення TTL кешу,
|
||||
а потім скидає вікно кешу, щоб наступні запити могли повторно використати
|
||||
щойно кешований контекст замість повторного кешування всієї історії. Це допомагає
|
||||
зменшити витрати на запис у кеш, коли сесія простоює довше за TTL.
|
||||
|
||||
Налаштуйте це в [конфігурації Gateway](/uk/gateway/configuration) і див. деталі
|
||||
Налаштуйте це в [Gateway configuration](/uk/gateway/configuration) і див. деталі
|
||||
поведінки в [Session pruning](/uk/concepts/session-pruning).
|
||||
|
||||
Heartbeat може тримати кеш **теплим** під час періодів простою. Якщо TTL кешу вашої моделі
|
||||
становить `1h`, встановлення інтервалу Heartbeat трохи нижче цього значення (наприклад, `55m`) може уникнути
|
||||
повторного кешування всього prompt, зменшуючи витрати на cache write.
|
||||
Heartbeat може підтримувати кеш **теплим** під час періодів бездіяльності. Якщо TTL кешу
|
||||
вашої моделі дорівнює `1h`, встановлення інтервалу heartbeat трохи меншим за це значення (наприклад, `55m`) може уникнути повторного кешування всього промпту, зменшуючи витрати на запис у кеш.
|
||||
|
||||
У конфігураціях із кількома агентами ви можете зберігати одну спільну конфігурацію моделі й налаштовувати поведінку кешу
|
||||
У конфігураціях із кількома агентами можна тримати одну спільну конфігурацію моделі та налаштовувати поведінку кешу
|
||||
для кожного агента через `agents.list[].params.cacheRetention`.
|
||||
|
||||
Повний покроковий довідник за всіма параметрами див. у [Prompt Caching](/uk/reference/prompt-caching).
|
||||
Для повного покрокового керівництва за всіма параметрами див. [Prompt Caching](/uk/reference/prompt-caching).
|
||||
|
||||
Для цін Anthropic API cache reads значно дешевші за input
|
||||
tokens, тоді як cache writes тарифікуються з вищим множником. Див. ціни Anthropic на
|
||||
prompt caching для актуальних ставок і множників TTL:
|
||||
Для цін Anthropic API читання з кешу значно дешевше за токени введення,
|
||||
тоді як запис у кеш тарифікується за вищим множником. Актуальні ставки та множники TTL див. в документації Anthropic щодо цін на кешування промптів:
|
||||
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
|
||||
|
||||
### Приклад: тримати кеш 1h теплим за допомогою Heartbeat
|
||||
### Приклад: підтримувати кеш 1h теплим за допомогою heartbeat
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -158,7 +163,7 @@ agents:
|
||||
every: "55m"
|
||||
```
|
||||
|
||||
### Приклад: змішаний трафік зі стратегією кешу для кожного агента
|
||||
### Приклад: змішаний трафік зі стратегією кешу для окремих агентів
|
||||
|
||||
```yaml
|
||||
agents:
|
||||
@ -168,24 +173,24 @@ agents:
|
||||
models:
|
||||
"anthropic/claude-opus-4-6":
|
||||
params:
|
||||
cacheRetention: "long" # типова базова лінія для більшості агентів
|
||||
cacheRetention: "long" # типова базова поведінка для більшості агентів
|
||||
list:
|
||||
- id: "research"
|
||||
default: true
|
||||
heartbeat:
|
||||
every: "55m" # тримати довгий кеш теплим для глибоких сесій
|
||||
every: "55m" # підтримувати довгий кеш теплим для глибоких сесій
|
||||
- id: "alerts"
|
||||
params:
|
||||
cacheRetention: "none" # уникати cache writes для сплескових сповіщень
|
||||
cacheRetention: "none" # уникати записів у кеш для імпульсних сповіщень
|
||||
```
|
||||
|
||||
`agents.list[].params` зливається поверх `params` вибраної моделі, тож ви можете
|
||||
перевизначити лише `cacheRetention` і успадкувати інші типові значення моделі без змін.
|
||||
|
||||
### Приклад: увімкнення beta-заголовка Anthropic 1M context
|
||||
### Приклад: увімкнути beta-заголовок Anthropic 1M context
|
||||
|
||||
Вікно контексту Anthropic 1M зараз закрите beta-доступом. OpenClaw може інжектувати
|
||||
потрібне значення `anthropic-beta`, коли ви вмикаєте `context1m` для підтримуваних моделей Opus
|
||||
Вікно контексту Anthropic 1M наразі доступне лише через beta. OpenClaw може інжектувати
|
||||
потрібне значення `anthropic-beta`, коли ви вмикаєте `context1m` на підтримуваних моделях Opus
|
||||
або Sonnet.
|
||||
|
||||
```yaml
|
||||
@ -197,29 +202,29 @@ agents:
|
||||
context1m: true
|
||||
```
|
||||
|
||||
Це зіставляється з beta-заголовком Anthropic `context-1m-2025-08-07`.
|
||||
Це мапиться на beta-заголовок Anthropic `context-1m-2025-08-07`.
|
||||
|
||||
Це застосовується лише тоді, коли для цього запису моделі встановлено `context1m: true`.
|
||||
Це застосовується лише тоді, коли `context1m: true` встановлено для цього запису моделі.
|
||||
|
||||
Вимога: облікові дані мають бути придатними для використання довгого контексту. Інакше
|
||||
Anthropic відповість помилкою rate limit на стороні провайдера для цього запиту.
|
||||
Вимога: облікові дані мають бути придатними для використання довгого контексту. Якщо ні,
|
||||
Anthropic відповідає помилкою обмеження швидкості на боці провайдера для цього запиту.
|
||||
|
||||
Якщо ви автентифікуєте Anthropic через токени OAuth/subscription (`sk-ant-oat-*`),
|
||||
Якщо ви автентифікуєте Anthropic за допомогою OAuth/subscription-токенів (`sk-ant-oat-*`),
|
||||
OpenClaw пропускає beta-заголовок `context-1m-*`, оскільки Anthropic наразі
|
||||
відхиляє таку комбінацію з HTTP 401.
|
||||
|
||||
## Поради щодо зменшення тиску токенів
|
||||
## Поради для зменшення тиску на токени
|
||||
|
||||
- Використовуйте `/compact`, щоб підсумовувати довгі сесії.
|
||||
- Обрізайте великі виводи інструментів у своїх робочих процесах.
|
||||
- Обрізайте великі результати інструментів у своїх робочих процесах.
|
||||
- Зменшуйте `agents.defaults.imageMaxDimensionPx` для сесій із великою кількістю скриншотів.
|
||||
- Тримайте описи Skills короткими (список Skills інжектується в prompt).
|
||||
- Для багатослівної, дослідницької роботи віддавайте перевагу меншим моделям.
|
||||
- Тримайте описи Skills короткими (список Skills інжектується в промпт).
|
||||
- Для багатослівної дослідницької роботи віддавайте перевагу меншим моделям.
|
||||
|
||||
Точну формулу накладних витрат списку Skills див. у [Skills](/uk/tools/skills).
|
||||
Див. [Skills](/uk/tools/skills) для точної формули накладних витрат списку Skills.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Використання API та вартість](/uk/reference/api-usage-costs)
|
||||
- [API usage and costs](/uk/reference/api-usage-costs)
|
||||
- [Prompt caching](/uk/reference/prompt-caching)
|
||||
- [Відстеження використання](/uk/concepts/usage-tracking)
|
||||
- [Usage tracking](/uk/concepts/usage-tracking)
|
||||
|
||||
@ -3,27 +3,27 @@ read_when:
|
||||
- Генерування зображень через агента
|
||||
- Налаштування провайдерів і моделей для генерації зображень
|
||||
- Розуміння параметрів інструмента `image_generate`
|
||||
summary: Створюйте й редагуйте зображення за допомогою налаштованих провайдерів (OpenAI, OpenAI Codex OAuth, Google Gemini, OpenRouter, LiteLLM, fal, MiniMax, ComfyUI, Vydra, xAI)
|
||||
summary: Генеруйте та редагуйте зображення за допомогою налаштованих провайдерів (OpenAI, OpenAI Codex OAuth, Google Gemini, OpenRouter, LiteLLM, fal, MiniMax, ComfyUI, Vydra, xAI)
|
||||
title: Генерація зображень
|
||||
x-i18n:
|
||||
generated_at: "2026-04-25T19:09:32Z"
|
||||
generated_at: "2026-04-25T19:29:27Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: af0afacd9714dbaacfd3b15560ee3badfd6ecea6d2ecf63a12cc9834d916d3e6
|
||||
source_hash: fd7cdb5989dc3d09c87f940e423db669ac95c12a7502b23daa25fc73ba4ff85f
|
||||
source_path: tools/image-generation.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
Інструмент `image_generate` дає агенту змогу створювати й редагувати зображення за допомогою ваших налаштованих провайдерів. Згенеровані зображення автоматично доставляються як медіавкладення у відповіді агента.
|
||||
Інструмент `image_generate` дає агенту змогу створювати й редагувати зображення за допомогою налаштованих провайдерів. Згенеровані зображення автоматично доставляються як медіавкладення у відповіді агента.
|
||||
|
||||
<Note>
|
||||
Інструмент з’являється, лише коли доступний принаймні один провайдер генерації зображень. Якщо ви не бачите `image_generate` серед інструментів агента, налаштуйте `agents.defaults.imageGenerationModel`, задайте API-ключ провайдера або увійдіть через OpenAI Codex OAuth.
|
||||
Інструмент з’являється лише тоді, коли доступний принаймні один провайдер генерації зображень. Якщо ви не бачите `image_generate` серед інструментів вашого агента, налаштуйте `agents.defaults.imageGenerationModel`, задайте API-ключ провайдера або увійдіть через OpenAI Codex OAuth.
|
||||
</Note>
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
1. Задайте API-ключ принаймні для одного провайдера (наприклад, `OPENAI_API_KEY`, `GEMINI_API_KEY` або `OPENROUTER_API_KEY`) або увійдіть через OpenAI Codex OAuth.
|
||||
2. За бажанням задайте бажану модель:
|
||||
2. За потреби задайте бажану модель:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -40,61 +40,64 @@ x-i18n:
|
||||
```
|
||||
|
||||
Codex OAuth використовує те саме посилання на модель `openai/gpt-image-2`. Коли
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw спрямовує запити на
|
||||
зображення через цей самий OAuth-профіль замість того, щоб спочатку пробувати `OPENAI_API_KEY`.
|
||||
Явна користувацька конфігурація зображень `models.providers.openai`, наприклад API-ключ або
|
||||
користувацька/Azure `baseUrl`, знову перемикає на прямий маршрут OpenAI Images API.
|
||||
Для сумісних з OpenAI кінцевих точок у локальній мережі, таких як LocalAI, зберігайте
|
||||
користувацьку `models.providers.openai.baseUrl` і явно вмикайте це через
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw маршрутизує запити на
|
||||
зображення через той самий OAuth-профіль замість того, щоб спочатку
|
||||
використовувати `OPENAI_API_KEY`. Явне користувацьке налаштування зображень у
|
||||
`models.providers.openai`, наприклад API-ключ або користувацький/Azure base URL,
|
||||
повертає використання прямого маршруту OpenAI Images API. Для OpenAI-сумісних
|
||||
LAN-ендпойнтів, таких як LocalAI, збережіть користувацький
|
||||
`models.providers.openai.baseUrl` і явно ввімкніть
|
||||
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork: true`; приватні/внутрішні
|
||||
кінцеві точки зображень за замовчуванням залишаються заблокованими.
|
||||
ендпойнти зображень залишаються заблокованими за замовчуванням.
|
||||
|
||||
3. Попросіть агента: _«Згенеруй зображення дружнього робота-талісмана.»_
|
||||
3. Попросіть агента: _"Згенеруй зображення дружнього робота-маскота."_
|
||||
|
||||
Агент автоматично викликає `image_generate`. Жодного allow-list для інструментів не потрібно — він увімкнений за замовчуванням, коли доступний провайдер.
|
||||
Агент автоматично викликає `image_generate`. Додавання до allow-list інструментів не потрібне — він увімкнений за замовчуванням, коли доступний провайдер.
|
||||
|
||||
## Поширені варіанти
|
||||
## Поширені маршрути
|
||||
|
||||
| Ціль | Посилання на модель | Автентифікація |
|
||||
| ---------------------------------------------------- | ------------------------------------------------- | -------------------------------------- |
|
||||
| Генерація зображень OpenAI з оплатою через API | `openai/gpt-image-2` | `OPENAI_API_KEY` |
|
||||
| Генерація зображень OpenAI з автентифікацією через підписку Codex | `openai/gpt-image-2` | OpenAI Codex OAuth |
|
||||
| OpenAI PNG/WebP із прозорим фоном | `openai/gpt-image-1.5` | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| Генерація зображень OpenRouter | `openrouter/google/gemini-3.1-flash-image-preview` | `OPENROUTER_API_KEY` |
|
||||
| Генерація зображень LiteLLM | `litellm/gpt-image-2` | `LITELLM_API_KEY` |
|
||||
| Генерація зображень Google Gemini | `google/gemini-3.1-flash-image-preview` | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
| Ціль | Посилання на модель | Автентифікація |
|
||||
| ---------------------------------------------------- | ------------------------------------------------ | -------------------------------------- |
|
||||
| Генерація зображень OpenAI з оплатою через API | `openai/gpt-image-2` | `OPENAI_API_KEY` |
|
||||
| Генерація зображень OpenAI з автентифікацією через підписку Codex | `openai/gpt-image-2` | OpenAI Codex OAuth |
|
||||
| OpenAI PNG/WebP із прозорим тлом | `openai/gpt-image-1.5` | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| Генерація зображень через OpenRouter | `openrouter/google/gemini-3.1-flash-image-preview` | `OPENROUTER_API_KEY` |
|
||||
| Генерація зображень через LiteLLM | `litellm/gpt-image-2` | `LITELLM_API_KEY` |
|
||||
| Генерація зображень Google Gemini | `google/gemini-3.1-flash-image-preview` | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
|
||||
Той самий інструмент `image_generate` обробляє як генерацію з тексту в зображення, так і
|
||||
редагування з опорним зображенням. Використовуйте `image` для одного опорного зображення
|
||||
або `images` для кількох опорних зображень.
|
||||
Підказки для виводу, які підтримуються провайдером, як-от `quality`, `outputFormat` і
|
||||
специфічний для OpenAI `background`, передаються далі, коли це можливо, і позначаються як
|
||||
ігноровані, якщо провайдер їх не підтримує.
|
||||
Той самий інструмент `image_generate` обробляє і генерацію з тексту, і
|
||||
редагування за еталонним зображенням. Використовуйте `image` для одного
|
||||
еталона або `images` для кількох еталонів. Підказки для виводу, які
|
||||
підтримуються провайдером, як-от `quality`, `outputFormat` і `background`,
|
||||
передаються далі, коли це можливо, і позначаються як проігноровані, якщо
|
||||
провайдер їх не підтримує. Поточна вбудована підтримка прозорого тла
|
||||
специфічна для OpenAI; інші провайдери все одно можуть зберігати PNG-альфу,
|
||||
якщо їхній бекенд її повертає.
|
||||
|
||||
## Підтримувані провайдери
|
||||
|
||||
| Провайдер | Типова модель | Підтримка редагування | Автентифікація |
|
||||
| --------- | -------------------------------------- | ----------------------------------- | ----------------------------------------------------- |
|
||||
| OpenAI | `gpt-image-2` | Так (до 4 зображень) | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| OpenRouter | `google/gemini-3.1-flash-image-preview` | Так (до 5 вхідних зображень) | `OPENROUTER_API_KEY` |
|
||||
| LiteLLM | `gpt-image-2` | Так (до 5 вхідних зображень) | `LITELLM_API_KEY` |
|
||||
| Google | `gemini-3.1-flash-image-preview` | Так | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
| fal | `fal-ai/flux/dev` | Так | `FAL_KEY` |
|
||||
| MiniMax | `image-01` | Так (опорне зображення об’єкта) | `MINIMAX_API_KEY` або MiniMax OAuth (`minimax-portal`) |
|
||||
| ComfyUI | `workflow` | Так (1 зображення, задається workflow) | `COMFY_API_KEY` або `COMFY_CLOUD_API_KEY` для хмари |
|
||||
| Vydra | `grok-imagine` | Ні | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-image` | Так (до 5 зображень) | `XAI_API_KEY` |
|
||||
| --------- | -------------------------------------- | ---------------------------------- | ----------------------------------------------------- |
|
||||
| OpenAI | `gpt-image-2` | Так (до 4 зображень) | `OPENAI_API_KEY` або OpenAI Codex OAuth |
|
||||
| OpenRouter | `google/gemini-3.1-flash-image-preview` | Так (до 5 вхідних зображень) | `OPENROUTER_API_KEY` |
|
||||
| LiteLLM | `gpt-image-2` | Так (до 5 вхідних зображень) | `LITELLM_API_KEY` |
|
||||
| Google | `gemini-3.1-flash-image-preview` | Так | `GEMINI_API_KEY` або `GOOGLE_API_KEY` |
|
||||
| fal | `fal-ai/flux/dev` | Так | `FAL_KEY` |
|
||||
| MiniMax | `image-01` | Так (еталон суб’єкта) | `MINIMAX_API_KEY` або MiniMax OAuth (`minimax-portal`) |
|
||||
| ComfyUI | `workflow` | Так (1 зображення, налаштоване workflow) | `COMFY_API_KEY` або `COMFY_CLOUD_API_KEY` для хмари |
|
||||
| Vydra | `grok-imagine` | Ні | `VYDRA_API_KEY` |
|
||||
| xAI | `grok-imagine-image` | Так (до 5 зображень) | `XAI_API_KEY` |
|
||||
|
||||
Використовуйте `action: "list"`, щоб переглянути доступні провайдери й моделі під час виконання:
|
||||
|
||||
```text
|
||||
```
|
||||
/tool image_generate action=list
|
||||
```
|
||||
|
||||
## Параметри інструмента
|
||||
|
||||
<ParamField path="prompt" type="string" required>
|
||||
Промпт для генерації зображення. Обов’язковий для `action: "generate"`.
|
||||
Підказка для генерації зображення. Обов’язкова для `action: "generate"`.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="action" type="'generate' | 'list'" default="generate">
|
||||
@ -103,15 +106,15 @@ Codex OAuth використовує те саме посилання на мо
|
||||
|
||||
<ParamField path="model" type="string">
|
||||
Перевизначення провайдера/моделі, наприклад `openai/gpt-image-2`; використовуйте
|
||||
`openai/gpt-image-1.5` для прозорого фону в OpenAI.
|
||||
`openai/gpt-image-1.5` для прозорого тла OpenAI.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="image" type="string">
|
||||
Шлях або URL одного опорного зображення для режиму редагування.
|
||||
Шлях або URL одного еталонного зображення для режиму редагування.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="images" type="string[]">
|
||||
Кілька опорних зображень для режиму редагування (до 5).
|
||||
Кілька еталонних зображень для режиму редагування (до 5).
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="size" type="string">
|
||||
@ -134,6 +137,11 @@ Codex OAuth використовує те саме посилання на мо
|
||||
Підказка щодо формату виводу, якщо провайдер її підтримує.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="background" type="'transparent' | 'opaque' | 'auto'">
|
||||
Підказка щодо тла, якщо провайдер її підтримує. Використовуйте `transparent` з
|
||||
`outputFormat: "png"` або `"webp"` для провайдерів, що підтримують прозорість.
|
||||
</ParamField>
|
||||
|
||||
<ParamField path="count" type="number">
|
||||
Кількість зображень для генерації (1–4).
|
||||
</ParamField>
|
||||
@ -150,16 +158,18 @@ Codex OAuth використовує те саме посилання на мо
|
||||
Підказки лише для OpenAI: `background`, `moderation`, `outputCompression` і `user`.
|
||||
</ParamField>
|
||||
|
||||
Не всі провайдери підтримують усі параметри. Коли резервний провайдер підтримує
|
||||
близький варіант геометрії замість точно запитаного, OpenClaw перед відправленням
|
||||
перемаповує на найближчий підтримуваний `size`, `aspectRatio` або `resolution`.
|
||||
Непідтримувані підказки виводу, такі як `quality` або `outputFormat`, відкидаються
|
||||
для провайдерів, які не заявляють про їх підтримку, і відображаються в результаті інструмента.
|
||||
Не всі провайдери підтримують усі параметри. Коли резервний провайдер
|
||||
підтримує близький варіант геометрії замість точно запитаного, OpenClaw
|
||||
перед надсиланням переналаштовує запит до найближчого підтримуваного розміру,
|
||||
співвідношення сторін або роздільної здатності. Непідтримувані підказки
|
||||
виводу, як-от `quality` або `outputFormat`, відкидаються для провайдерів, які
|
||||
не оголошують таку підтримку, і повідомляються в результаті інструмента.
|
||||
|
||||
Результати інструмента показують застосовані параметри. Коли OpenClaw перемаповує
|
||||
геометрію під час резервного переходу до провайдера, повернуті значення `size`,
|
||||
`aspectRatio` і `resolution` відображають те, що було фактично надіслано, а
|
||||
`details.normalization` фіксує перетворення від запитаного до застосованого.
|
||||
Результати інструмента повідомляють про застосовані налаштування. Коли
|
||||
OpenClaw переналаштовує геометрію під час резервного переходу між провайдерами,
|
||||
повернуті значення `size`, `aspectRatio` і `resolution` відображають те, що
|
||||
було фактично надіслано, а `details.normalization` фіксує перетворення від
|
||||
запитаних значень до застосованих.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
@ -188,43 +198,42 @@ Codex OAuth використовує те саме посилання на мо
|
||||
Під час генерації зображення OpenClaw пробує провайдерів у такому порядку:
|
||||
|
||||
1. **Параметр `model`** з виклику інструмента (якщо агент його вказує)
|
||||
2. **`imageGenerationModel.primary`** із конфігурації
|
||||
3. **`imageGenerationModel.fallbacks`** по черзі
|
||||
4. **Автовизначення** — використовуються лише типові значення провайдерів із доступною автентифікацією:
|
||||
2. **`imageGenerationModel.primary`** з конфігурації
|
||||
3. **`imageGenerationModel.fallbacks`** у вказаному порядку
|
||||
4. **Автовиявлення** — використовуються лише типові значення провайдерів, підкріплені автентифікацією:
|
||||
- спочатку поточний типовий провайдер
|
||||
- потім решта зареєстрованих провайдерів генерації зображень у порядку provider-id
|
||||
- далі решта зареєстрованих провайдерів генерації зображень у порядку ідентифікаторів провайдерів
|
||||
|
||||
Якщо провайдер завершується помилкою (помилка автентифікації, ліміт запитів тощо), автоматично пробується наступний налаштований кандидат. Якщо не вдається жоден, помилка містить подробиці кожної спроби.
|
||||
Якщо провайдер завершується помилкою (помилка автентифікації, ліміт запитів тощо), автоматично пробується наступний налаштований кандидат. Якщо всі завершуються помилкою, помилка містить подробиці кожної спроби.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Перевизначення `model` для окремого виклику є точним: OpenClaw пробує лише цю пару провайдер/модель
|
||||
і не переходить далі до налаштованих primary/fallback або автовизначених
|
||||
і не переходить до налаштованих primary/fallback або автовиявлених
|
||||
провайдерів.
|
||||
- Автовизначення враховує автентифікацію. Типовий провайдер потрапляє до списку кандидатів
|
||||
лише тоді, коли OpenClaw справді може автентифікуватися в цьому провайдері.
|
||||
- Автовизначення увімкнене за замовчуванням. Встановіть
|
||||
- Автовиявлення враховує автентифікацію. Типове значення провайдера додається до списку кандидатів
|
||||
лише тоді, коли OpenClaw справді може автентифікувати цей провайдер.
|
||||
- Автовиявлення увімкнене за замовчуванням. Задайте
|
||||
`agents.defaults.mediaGenerationAutoProviderFallback: false`, якщо хочете, щоб генерація зображень
|
||||
використовувала лише явні записи `model`, `primary` і `fallbacks`.
|
||||
- Встановіть `agents.defaults.imageGenerationModel.timeoutMs` для повільних бекендів зображень.
|
||||
Параметр інструмента `timeoutMs` для окремого виклику перевизначає значення з конфігурації.
|
||||
- Задайте `agents.defaults.imageGenerationModel.timeoutMs` для повільних бекендів зображень.
|
||||
Параметр інструмента `timeoutMs` для окремого виклику перевизначає налаштоване типове значення.
|
||||
- Використовуйте `action: "list"`, щоб переглянути поточно зареєстрованих провайдерів, їхні
|
||||
типові моделі та підказки щодо env vars для автентифікації.
|
||||
|
||||
### Редагування зображень
|
||||
|
||||
OpenAI, OpenRouter, Google, fal, MiniMax, ComfyUI і xAI підтримують редагування
|
||||
опорних зображень. Передайте шлях або URL опорного зображення:
|
||||
OpenAI, OpenRouter, Google, fal, MiniMax, ComfyUI і xAI підтримують редагування еталонних зображень. Передайте шлях або URL еталонного зображення:
|
||||
|
||||
```text
|
||||
"Створи акварельну версію цього фото" + image: "/path/to/photo.jpg"
|
||||
```
|
||||
"Згенеруй акварельну версію цього фото" + image: "/path/to/photo.jpg"
|
||||
```
|
||||
|
||||
OpenAI, OpenRouter, Google і xAI підтримують до 5 опорних зображень через параметр `images`. fal, MiniMax і ComfyUI підтримують 1.
|
||||
OpenAI, OpenRouter, Google і xAI підтримують до 5 еталонних зображень через параметр `images`. fal, MiniMax і ComfyUI підтримують 1.
|
||||
|
||||
### Моделі зображень OpenRouter
|
||||
|
||||
Генерація зображень OpenRouter використовує той самий `OPENROUTER_API_KEY` і працює через OpenRouter chat completions image API. Вибирайте моделі зображень OpenRouter з префіксом `openrouter/`:
|
||||
Генерація зображень через OpenRouter використовує той самий `OPENROUTER_API_KEY` і маршрутизується через image API chat completions OpenRouter. Вибирайте моделі зображень OpenRouter з префіксом `openrouter/`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -238,31 +247,35 @@ OpenAI, OpenRouter, Google і xAI підтримують до 5 опорних
|
||||
}
|
||||
```
|
||||
|
||||
OpenClaw передає в OpenRouter `prompt`, `count`, опорні зображення та сумісні з Gemini підказки `aspectRatio` / `resolution`. Поточні вбудовані скорочення для моделей зображень OpenRouter включають `google/gemini-3.1-flash-image-preview`, `google/gemini-3-pro-image-preview` і `openai/gpt-5.4-image-2`; використовуйте `action: "list"`, щоб побачити, що надає ваш налаштований Plugin.
|
||||
OpenClaw передає до OpenRouter `prompt`, `count`, еталонні зображення та
|
||||
Gemini-сумісні підказки `aspectRatio` / `resolution`. Поточні вбудовані
|
||||
скорочення для моделей зображень OpenRouter включають `google/gemini-3.1-flash-image-preview`,
|
||||
`google/gemini-3-pro-image-preview` і `openai/gpt-5.4-image-2`; використовуйте
|
||||
`action: "list"`, щоб побачити, що надає ваш налаштований Plugin.
|
||||
|
||||
### OpenAI `gpt-image-2`
|
||||
|
||||
Генерація зображень OpenAI за замовчуванням використовує `openai/gpt-image-2`. Якщо
|
||||
За замовчуванням генерація зображень OpenAI використовує `openai/gpt-image-2`. Якщо
|
||||
налаштовано OAuth-профіль `openai-codex`, OpenClaw повторно використовує той самий OAuth-профіль,
|
||||
який Codex використовує для чат-моделей із підпискою, і надсилає запит на зображення
|
||||
через бекенд Codex Responses. Застарілі базові URL Codex, такі як
|
||||
який застосовується моделями чату Codex за підпискою, і надсилає запит на зображення
|
||||
через бекенд Codex Responses. Застарілі base URL Codex, такі як
|
||||
`https://chatgpt.com/backend-api`, канонікалізуються до
|
||||
`https://chatgpt.com/backend-api/codex` для запитів на зображення. Для такого запиту
|
||||
не виконується безшумний перехід на `OPENAI_API_KEY`. Щоб примусово використовувати прямий маршрут
|
||||
OpenAI Images API, явно налаштуйте `models.providers.openai` з API-ключем,
|
||||
користувацьким base URL або кінцевою точкою Azure. Моделі `openai/gpt-image-1.5`,
|
||||
`openai/gpt-image-1` і `openai/gpt-image-1-mini` усе ще можна явно вибрати.
|
||||
Використовуйте `gpt-image-1.5` для PNG/WebP із прозорим фоном; поточний API `gpt-image-2`
|
||||
відхиляє `background: "transparent"`.
|
||||
`https://chatgpt.com/backend-api/codex` для запитів на зображення. Він не
|
||||
виконує тихого резервного переходу до `OPENAI_API_KEY` для цього запиту. Щоб примусово використати прямий маршрут
|
||||
OpenAI Images API, явно налаштуйте `models.providers.openai` за допомогою API-ключа,
|
||||
користувацького base URL або Azure-ендпойнта. Моделі `openai/gpt-image-1.5`,
|
||||
`openai/gpt-image-1` і `openai/gpt-image-1-mini` усе ще можна
|
||||
вибирати явно. Використовуйте `gpt-image-1.5` для виводу PNG/WebP із прозорим тлом;
|
||||
поточний API `gpt-image-2` відхиляє `background: "transparent"`.
|
||||
|
||||
`gpt-image-2` підтримує і генерацію зображень із тексту, і редагування
|
||||
опорних зображень через той самий інструмент `image_generate`. OpenClaw передає в OpenAI
|
||||
`prompt`, `count`, `size`, `quality`, `outputFormat` і опорні зображення.
|
||||
OpenAI не отримує `aspectRatio` або `resolution` безпосередньо; коли можливо,
|
||||
OpenClaw відображає їх у підтримуваний `size`, інакше інструмент повідомляє про них як
|
||||
про ігноровані перевизначення.
|
||||
`gpt-image-2` підтримує як генерацію зображень із тексту, так і редагування за
|
||||
еталонним зображенням через той самий інструмент `image_generate`. OpenClaw передає до OpenAI `prompt`,
|
||||
`count`, `size`, `quality`, `outputFormat` і еталонні зображення.
|
||||
OpenAI не отримує `aspectRatio` або `resolution` безпосередньо; коли це можливо,
|
||||
OpenClaw перетворює їх у підтримуваний `size`, інакше інструмент повідомляє про них як про
|
||||
проігноровані перевизначення.
|
||||
|
||||
Параметри, специфічні для OpenAI, задаються в об’єкті `openai`:
|
||||
Опції, специфічні для OpenAI, містяться в об’єкті `openai`:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -277,80 +290,83 @@ OpenClaw відображає їх у підтримуваний `size`, іна
|
||||
}
|
||||
```
|
||||
|
||||
`openai.background` приймає значення `transparent`, `opaque` або `auto`; для
|
||||
прозорих результатів потрібні `outputFormat` `png` або `webp` і модель OpenAI
|
||||
для зображень із підтримкою прозорості. OpenClaw спрямовує типові запити
|
||||
`gpt-image-2` із прозорим фоном до `gpt-image-1.5`. `openai.outputCompression`
|
||||
застосовується до результатів JPEG/WebP.
|
||||
`openai.background` приймає значення `transparent`, `opaque` або `auto`; прозорі
|
||||
вихідні файли потребують `outputFormat` `png` або `webp` і OpenAI-сумісної моделі
|
||||
зображень із підтримкою прозорості. OpenClaw маршрутизує типові запити
|
||||
`gpt-image-2` на прозоре тло до `gpt-image-1.5`. `openai.outputCompression` застосовується до виходів JPEG/WebP.
|
||||
|
||||
Коли ви просите агента створити OpenAI-зображення з прозорим фоном, очікуваний
|
||||
виклик інструмента має вигляд:
|
||||
Підказка `background` верхнього рівня є нейтральною щодо провайдера й наразі зіставляється з тим самим
|
||||
полем запиту OpenAI `background`, коли вибрано провайдера OpenAI.
|
||||
Провайдери, які не оголошують підтримку тла, повертають його в `ignoredOverrides`
|
||||
замість отримання непідтримуваного параметра.
|
||||
|
||||
Коли ви просите агента створити зображення OpenAI з прозорим тлом, очікуваний
|
||||
виклик інструмента має такий вигляд:
|
||||
|
||||
```json
|
||||
{
|
||||
"model": "openai/gpt-image-1.5",
|
||||
"prompt": "A simple red circle sticker on a transparent background",
|
||||
"outputFormat": "png",
|
||||
"openai": {
|
||||
"background": "transparent"
|
||||
}
|
||||
"background": "transparent"
|
||||
}
|
||||
```
|
||||
|
||||
Явно вказана модель `openai/gpt-image-1.5` зберігає переносимість запиту між
|
||||
підсумками інструментів і harness-оточеннями. Якщо агент натомість використовує
|
||||
типову `openai/gpt-image-2` з `openai.background: "transparent"` у публічному
|
||||
маршруті OpenAI або OpenAI Codex OAuth, OpenClaw переписує запит до провайдера на
|
||||
`gpt-image-1.5`. Azure і користувацькі сумісні з OpenAI кінцеві точки зберігають
|
||||
свої налаштовані назви deployment/model.
|
||||
Явна модель `openai/gpt-image-1.5` зберігає портативність запиту між
|
||||
зведеннями інструментів і harnesses. Якщо агент натомість використовує типову
|
||||
`openai/gpt-image-2` з `openai.background: "transparent"` у публічному маршруті
|
||||
OpenAI або OpenAI Codex OAuth, OpenClaw переписує запит провайдера на
|
||||
`gpt-image-1.5`. Azure і користувацькі OpenAI-сумісні ендпойнти зберігають свої
|
||||
налаштовані назви deployment/model.
|
||||
|
||||
Для headless-генерації в CLI використовуйте еквівалентні прапорці `openclaw infer`:
|
||||
Для безголової генерації через CLI використовуйте еквівалентні прапорці `openclaw infer`:
|
||||
|
||||
```bash
|
||||
openclaw infer image generate \
|
||||
--model openai/gpt-image-1.5 \
|
||||
--output-format png \
|
||||
--openai-background transparent \
|
||||
--background transparent \
|
||||
--prompt "A simple red circle sticker on a transparent background" \
|
||||
--json
|
||||
```
|
||||
|
||||
Ті самі прапорці `--output-format` і `--openai-background` доступні в
|
||||
`openclaw infer image edit`. Інші вбудовані провайдери можуть повертати PNG і
|
||||
можуть зберігати alpha-канал, якщо їхній бекенд його видає, але OpenClaw
|
||||
надає явне керування прозорим фоном лише для генерації зображень OpenAI.
|
||||
Ті самі прапорці `--output-format` і `--background` також доступні в
|
||||
`openclaw infer image edit`; `--openai-background` лишається доступним як
|
||||
специфічний для OpenAI псевдонім. Поточні вбудовані провайдери, окрім OpenAI, не
|
||||
оголошують явного керування тлом, тож для них `background: "transparent"` повідомляється
|
||||
як проігнорований.
|
||||
|
||||
Згенерувати одне 4K-зображення в альбомній орієнтації:
|
||||
Згенерувати одне горизонтальне зображення 4K:
|
||||
|
||||
```text
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="A clean editorial poster for OpenClaw image generation" size=3840x2160 count=1
|
||||
```
|
||||
|
||||
Згенерувати прозорий PNG:
|
||||
|
||||
```text
|
||||
/tool image_generate action=generate model=openai/gpt-image-1.5 prompt="A simple red circle sticker on a transparent background" outputFormat=png openai='{"background":"transparent"}'
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-1.5 prompt="A simple red circle sticker on a transparent background" outputFormat=png background=transparent
|
||||
```
|
||||
|
||||
Згенерувати два квадратні зображення:
|
||||
|
||||
```text
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Two visual directions for a calm productivity app icon" size=1024x1024 count=2
|
||||
```
|
||||
|
||||
Відредагувати одне локальне опорне зображення:
|
||||
Відредагувати одне локальне еталонне зображення:
|
||||
|
||||
```text
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Keep the subject, replace the background with a bright studio setup" image=/path/to/reference.png size=1024x1536
|
||||
```
|
||||
|
||||
Редагування з кількома опорними зображеннями:
|
||||
Редагування з кількома еталонами:
|
||||
|
||||
```text
|
||||
```
|
||||
/tool image_generate action=generate model=openai/gpt-image-2 prompt="Combine the character identity from the first image with the color palette from the second" images='["/path/to/character.png","/path/to/palette.jpg"]' size=1536x1024
|
||||
```
|
||||
|
||||
Щоб спрямувати генерацію зображень OpenAI через deployment Azure OpenAI замість
|
||||
Щоб маршрутизувати генерацію зображень OpenAI через deployment Azure OpenAI замість
|
||||
`api.openai.com`, див. [Azure OpenAI endpoints](/uk/providers/openai#azure-openai-endpoints)
|
||||
у документації провайдера OpenAI.
|
||||
|
||||
@ -361,29 +377,29 @@ openclaw infer image generate \
|
||||
|
||||
## Можливості провайдерів
|
||||
|
||||
| Можливість | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra | xAI |
|
||||
| --------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ------- | -------------------- |
|
||||
| Генерація | Так (до 4) | Так (до 4) | Так (до 4) | Так (до 9) | Так (виходи визначаються workflow) | Так (1) | Так (до 4) |
|
||||
| Редагування/опорні зображення | Так (до 5 зображень) | Так (до 5 зображень) | Так (1 зображення) | Так (1 зображення, опорне зображення об’єкта) | Так (1 зображення, задається workflow) | Ні | Так (до 5 зображень) |
|
||||
| Керування розміром | Так (до 4K) | Так | Так | Ні | Ні | Ні | Ні |
|
||||
| Співвідношення сторін | Ні | Так | Так (лише генерація) | Так | Ні | Ні | Так |
|
||||
| Роздільна здатність (1K/2K/4K) | Ні | Так | Так | Ні | Ні | Ні | Так (1K/2K) |
|
||||
| Можливість | OpenAI | Google | fal | MiniMax | ComfyUI | Vydra | xAI |
|
||||
| -------------------- | -------------------- | -------------------- | ------------------- | -------------------------- | ---------------------------------- | ------- | -------------------- |
|
||||
| Генерація | Так (до 4) | Так (до 4) | Так (до 4) | Так (до 9) | Так (виходи визначаються workflow) | Так (1) | Так (до 4) |
|
||||
| Редагування/еталони | Так (до 5 зображень) | Так (до 5 зображень) | Так (1 зображення) | Так (1 зображення, еталон суб’єкта) | Так (1 зображення, налаштоване workflow) | Ні | Так (до 5 зображень) |
|
||||
| Керування розміром | Так (до 4K) | Так | Так | Ні | Ні | Ні | Ні |
|
||||
| Співвідношення сторін| Ні | Так | Так (лише генерація) | Так | Ні | Ні | Так |
|
||||
| Роздільна здатність (1K/2K/4K) | Ні | Так | Так | Ні | Ні | Ні | Так (1K/2K) |
|
||||
|
||||
### xAI `grok-imagine-image`
|
||||
|
||||
Вбудований провайдер xAI використовує `/v1/images/generations` для запитів лише з промптом
|
||||
і `/v1/images/edits`, коли присутній `image` або `images`.
|
||||
Вбудований провайдер xAI використовує `/v1/images/generations` для запитів лише з підказкою
|
||||
і `/v1/images/edits`, коли присутні `image` або `images`.
|
||||
|
||||
- Моделі: `xai/grok-imagine-image`, `xai/grok-imagine-image-pro`
|
||||
- Кількість: до 4
|
||||
- Опорні зображення: один `image` або до п’яти `images`
|
||||
- Еталони: одне `image` або до п’яти `images`
|
||||
- Співвідношення сторін: `1:1`, `16:9`, `9:16`, `4:3`, `3:4`, `2:3`, `3:2`
|
||||
- Роздільні здатності: `1K`, `2K`
|
||||
- Результати: повертаються як вкладення зображень, якими керує OpenClaw
|
||||
- Роздільна здатність: `1K`, `2K`
|
||||
- Виходи: повертаються як вкладення зображень, якими керує OpenClaw
|
||||
|
||||
OpenClaw навмисно не надає специфічні для xAI параметри `quality`, `mask`, `user` або
|
||||
додаткові нативні співвідношення сторін, доки ці елементи керування не з’являться
|
||||
в спільному міжпровайдерному контракті `image_generate`.
|
||||
OpenClaw навмисно не надає доступу до властивих xAI параметрів `quality`, `mask`, `user` або
|
||||
додаткових співвідношень сторін, доступних лише нативно, доки ці елементи керування не з’являться в спільному
|
||||
міжпровайдерному контракті `image_generate`.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
@ -394,6 +410,6 @@ OpenClaw навмисно не надає специфічні для xAI пар
|
||||
- [MiniMax](/uk/providers/minimax) — налаштування провайдера зображень MiniMax
|
||||
- [OpenAI](/uk/providers/openai) — налаштування провайдера OpenAI Images
|
||||
- [Vydra](/uk/providers/vydra) — налаштування зображень, відео та мовлення Vydra
|
||||
- [xAI](/uk/providers/xai) — налаштування Grok для зображень, відео, пошуку, виконання коду та TTS
|
||||
- [xAI](/uk/providers/xai) — налаштування Grok для зображень, відео, пошуку, виконання коду й TTS
|
||||
- [Довідник конфігурації](/uk/gateway/config-agents#agent-defaults) — конфігурація `imageGenerationModel`
|
||||
- [Моделі](/uk/concepts/models) — конфігурація моделей і failover
|
||||
- [Моделі](/uk/concepts/models) — конфігурація моделей і резервне перемикання
|
||||
|
||||
Loading…
Reference in New Issue
Block a user