OpenClaw Gateway може обслуговувати невелику OpenAI-сумісну кінцеву точку Chat Completions. Ця кінцева точка вимкнена за замовчуванням. Спочатку ввімкніть її в конфігурації.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/chat/completions- Той самий порт, що й у Gateway (мультиплексування WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), тому маршрутизація/дозволи/конфігурація відповідають вашому Gateway.
Автентифікація
Використовує конфігурацію автентифікації Gateway. Поширені шляхи HTTP-автентифікації:- автентифікація за спільним секретом (
gateway.auth.mode="token"або"password"):Authorization: Bearer <token-or-password> - довірена HTTP-автентифікація з ідентичністю (
gateway.auth.mode="trusted-proxy"): маршрутизуйте через налаштований проксі, що враховує ідентичність, і дозвольте йому вставити потрібні заголовки ідентичності - відкрита автентифікація для приватного вхідного доступу (
gateway.auth.mode="none"): заголовок автентифікації не потрібен
- Коли
gateway.auth.mode="token", використовуйтеgateway.auth.token(абоOPENCLAW_GATEWAY_TOKEN). - Коли
gateway.auth.mode="password", використовуйтеgateway.auth.password(абоOPENCLAW_GATEWAY_PASSWORD). - Коли
gateway.auth.mode="trusted-proxy", HTTP-запит має надходити з налаштованого довіреного джерела проксі; loopback-проксі на тому самому хості потребують явногоgateway.auth.trustedProxy.allowLoopback = true. - Якщо
gateway.auth.rateLimitналаштовано й сталося забагато помилок автентифікації, кінцева точка повертає429зRetry-After.
Межа безпеки (важливо)
Розглядайте цю кінцеву точку як поверхню з повним операторським доступом до екземпляра Gateway.- HTTP bearer-автентифікація тут не є вузькою моделлю області дії для окремого користувача.
- Дійсний токен/пароль Gateway для цієї кінцевої точки слід розглядати як облікові дані власника/оператора.
- Запити проходять через той самий шлях агента площини керування, що й довірені операторські дії.
- Для цієї кінцевої точки немає окремої межі інструментів для невласника/окремого користувача; щойно виклик проходить автентифікацію Gateway тут, OpenClaw розглядає цього викликача як довіреного оператора для цього Gateway.
- Для режимів автентифікації зі спільним секретом (
tokenіpassword) кінцева точка відновлює звичайні повні операторські налаштування за замовчуванням, навіть якщо викликач надсилає вужчий заголовокx-openclaw-scopes. - Довірені HTTP-режими з ідентичністю (наприклад, автентифікація через довірений проксі або
gateway.auth.mode="none") враховуютьx-openclaw-scopes, коли він присутній, а інакше повертаються до звичайного операторського набору областей дії за замовчуванням. - Якщо політика цільового агента дозволяє чутливі інструменти, ця кінцева точка може їх використовувати.
- Тримайте цю кінцеву точку лише на loopback/tailnet/приватному вхідному доступі; не виставляйте її напряму в публічний інтернет.
gateway.auth.mode="token"або"password"+Authorization: Bearer ...- доводить володіння спільним операторським секретом gateway
- ігнорує вужчий
x-openclaw-scopes - відновлює повний операторський набір областей дії за замовчуванням:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - розглядає ходи чату на цій кінцевій точці як ходи відправника-власника
- довірені HTTP-режими з ідентичністю (наприклад, автентифікація через довірений проксі або
gateway.auth.mode="none"на приватному вхідному доступі)- автентифікують певну зовнішню довірену ідентичність або межу розгортання
- враховують
x-openclaw-scopes, коли заголовок присутній - повертаються до звичайного операторського набору областей дії за замовчуванням, коли заголовок відсутній
- втрачають семантику власника лише тоді, коли викликач явно звужує області дії та пропускає
operator.admin
Контракт моделі з пріоритетом агента
OpenClaw трактує поле OpenAImodel як ціль агента, а не сирий ідентифікатор моделі провайдера.
model: "openclaw"маршрутизує до налаштованого агента за замовчуванням.model: "openclaw/default"також маршрутизує до налаштованого агента за замовчуванням.model: "openclaw/<agentId>"маршрутизує до конкретного агента.
x-openclaw-model: <provider/model-or-bare-id>перевизначає бекенд-модель для вибраного агента.x-openclaw-agent-id: <agentId>і далі підтримується як перевизначення для сумісності.x-openclaw-session-key: <sessionKey>повністю керує маршрутизацією сесії.x-openclaw-message-channel: <channel>задає синтетичний контекст вхідного каналу для підказок і політик, що враховують канал.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Увімкнення кінцевої точки
Установітьgateway.http.endpoints.chatCompletions.enabled у true:
Вимкнення кінцевої точки
Установітьgateway.http.endpoints.chatCompletions.enabled у false:
Поведінка сесії
За замовчуванням кінцева точка є безстанною для кожного запиту (для кожного виклику генерується новий ключ сесії). Якщо запит містить рядок OpenAIuser, Gateway виводить із нього стабільний ключ сесії, тож повторні виклики можуть спільно використовувати сесію агента.
Чому ця поверхня важлива
Це найефективніший набір сумісності для самостійно розгорнутих фронтендів та інструментів:- Більшість налаштувань Open WebUI, LobeChat і LibreChat очікують
/v1/models. - Багато RAG-систем очікують
/v1/embeddings. - Наявні чат-клієнти OpenAI зазвичай можуть почати з
/v1/chat/completions. - Клієнти, більш орієнтовані на агентів, дедалі частіше віддають перевагу
/v1/responses.
Список моделей і маршрутизація агентів
Що повертає `/v1/models`?
Що повертає `/v1/models`?
Список цілей агентів OpenClaw.Повернуті ідентифікатори — це записи
openclaw, openclaw/default і openclaw/<agentId>.
Використовуйте їх безпосередньо як значення OpenAI model.Чи `/v1/models` перелічує агентів або підагентів?
Чи `/v1/models` перелічує агентів або підагентів?
Він перелічує цілі агентів верхнього рівня, а не бекенд-моделі провайдерів і не підагентів.Підагенті залишаються внутрішньою топологією виконання. Вони не з’являються як псевдомоделі.
Чому включено `openclaw/default`?
Чому включено `openclaw/default`?
openclaw/default — це стабільний псевдонім для налаштованого агента за замовчуванням.Це означає, що клієнти можуть продовжувати використовувати один передбачуваний ідентифікатор, навіть якщо справжній ідентифікатор агента за замовчуванням змінюється між середовищами.Як перевизначити бекенд-модель?
Як перевизначити бекенд-модель?
Використовуйте
x-openclaw-model.Приклади:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Якщо його опустити, вибраний агент працюватиме зі своїм звичайним налаштованим вибором моделі.Як embeddings вписуються в цей контракт?
Як embeddings вписуються в цей контракт?
/v1/embeddings використовує ті самі agent-target ідентифікатори model.Використовуйте model: "openclaw/default" або model: "openclaw/<agentId>".
Коли потрібна конкретна модель embeddings, надішліть її в x-openclaw-model.
Без цього заголовка запит передається до звичайного налаштування embeddings вибраного агента.Streaming (SSE)
Установітьstream: true, щоб отримувати Server-Sent Events (SSE):
Content-Type: text/event-stream- Кожен рядок події має формат
data: <json> - Stream завершується
data: [DONE]
Контракт інструментів чату
/v1/chat/completions підтримує підмножину function-tool, сумісну з поширеними клієнтами OpenAI Chat.
Підтримувані поля запиту
tools: масив{ "type": "function", "function": { ... } }tool_choice:"auto","none"messages[*].role: "tool"подальші ходиmessages[*].tool_call_idдля прив’язування результатів інструмента назад до попереднього виклику інструментаmax_completion_tokens: число; обмеження на один виклик для загальної кількості completion tokens (включно з reasoning tokens). Поточна назва поля OpenAI Chat Completions; має перевагу, коли надіслано іmax_completion_tokens, іmax_tokens.max_tokens: число; застарілий псевдонім, приймається для зворотної сумісності. Ігнорується, коли також наявнеmax_completion_tokens.
max_completion_tokens для endpoint-ів родини OpenAI і max_tokens для провайдерів, які приймають лише застарілу назву (наприклад, Mistral і Chutes).
Непідтримувані варіанти
Endpoint повертає400 invalid_request_error для непідтримуваних варіантів інструментів, зокрема:
tools, що не є масивом- записи інструментів, що не є function
- відсутній
tool.function.name - варіанти
tool_choice, як-отallowed_toolsіcustom tool_choice: "required"(ще не застосовується під час виконання; буде підтримано після реалізації жорсткого застосування)tool_choice: { "type": "function", "function": { "name": "..." } }(те саме обґрунтування, що й дляrequired)- значення
tool_choice.function.name, які не відповідають наданимtools
Форма відповіді інструментів без streaming
Коли агент вирішує викликати інструменти, відповідь використовує:choices[0].finish_reason = "tool_calls"- записи
choices[0].message.tool_calls[]з:idtype: "function"function.namefunction.arguments(рядок JSON)
choices[0].message.content (можливо, порожній).
Форма відповіді інструментів зі streaming
Колиstream: true, виклики інструментів надсилаються як інкрементальні SSE-фрагменти:
- початкова assistant role delta
- необов’язкові assistant commentary deltas
- один або більше фрагментів
delta.tool_calls, що містять ідентичність інструмента та фрагменти аргументів - фінальний фрагмент із
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, кінцевий usage-фрагмент надсилається перед [DONE].
Цикл подальших викликів інструментів
Після отриманняtool_calls клієнт має виконати запитані функції та надіслати подальший запит, який містить:
- попереднє повідомлення асистента з викликом інструмента
- одне або більше повідомлень
role: "tool"з відповіднимtool_call_id
Швидке налаштування Open WebUI
Для базового підключення Open WebUI:- Base URL:
http://127.0.0.1:18789/v1 - Docker на macOS base URL:
http://host.docker.internal:18789/v1 - API key: ваш bearer token Gateway
- Model:
openclaw/default
GET /v1/modelsмає перелічитиopenclaw/default- Open WebUI має використовувати
openclaw/defaultяк ідентифікатор моделі чату - Якщо вам потрібен конкретний backend provider/model для цього агента, установіть звичайну модель за замовчуванням агента або надішліть
x-openclaw-model
openclaw/default, більшість налаштувань Open WebUI можуть підключитися з тим самим base URL і token.
Приклади
Без streaming:/v1/modelsповертає цілі агентів OpenClaw, а не необроблені каталоги провайдерів.openclaw/defaultзавжди наявний, тож один стабільний ідентифікатор працює в різних середовищах.- Перевизначення бекендного провайдера/моделі мають задаватися в
x-openclaw-model, а не в полі OpenAImodel. /v1/embeddingsпідтримуєinputяк рядок або масив рядків.