Перейти к основному содержанию

OpenAI Chat Completions (HTTP)

Gateway (шлюз) OpenClaw может предоставлять небольшой OpenAI‑совместимый endpoint Chat Completions. Этот endpoint по умолчанию отключён. Сначала включите его в конфигурации.
  • POST /v1/chat/completions
  • Тот же порт, что и у Gateway (шлюза) (мультиплекс WS + HTTP): http://<gateway-host>:<port>/v1/chat/completions
Внутри запросы выполняются как обычный запуск агента Gateway (шлюза) (тот же кодовый путь, что и openclaw agent), поэтому маршрутизация/права доступа/конфигурация соответствуют вашему Gateway (шлюзу).

Аутентификация

Использует конфигурацию аутентификации Gateway (шлюза). Отправьте bearer‑токен:
  • Authorization: Bearer <token>
Примечания:
  • Когда gateway.auth.mode="token", используйте gateway.auth.token (или OPENCLAW_GATEWAY_TOKEN).
  • Когда gateway.auth.mode="password", используйте gateway.auth.password (или OPENCLAW_GATEWAY_PASSWORD).
  • Если настроен gateway.auth.rateLimit и происходит слишком много неудачных попыток аутентификации, эндпоинт возвращает 429 с Retry-After.

Выбор агента

Пользовательские заголовки не требуются: закодируйте идентификатор агента в поле OpenAI model:
  • model: "openclaw:<agentId>" (пример: "openclaw:main", "openclaw:beta")
  • model: "agent:<agentId>" (псевдоним)
Или нацельтесь на конкретного агента OpenClaw с помощью заголовка:
  • x-openclaw-agent-id: <agentId> (по умолчанию: main)
Дополнительно:
  • x-openclaw-session-key: <sessionKey> для полного контроля маршрутизации сеансов.

Включение endpoint

Установите gateway.http.endpoints.chatCompletions.enabled в true:
{
  gateway: {
    http: {
      endpoints: {
        chatCompletions: { enabled: true },
      },
    },
  },
}

Отключение endpoint

Установите gateway.http.endpoints.chatCompletions.enabled в false:
{
  gateway: {
    http: {
      endpoints: {
        chatCompletions: { enabled: false },
      },
    },
  },
}

Поведение сеансов

По умолчанию endpoint не сохраняет состояние между запросами (для каждого вызова генерируется новый ключ сеанса). Если запрос включает строку OpenAI user, Gateway (шлюз) выводит из неё стабильный ключ сеанса, так что повторные вызовы могут совместно использовать сеанс агента.

Потоковая передача (SSE)

Установите stream: true, чтобы получать Server‑Sent Events (SSE):
  • Content-Type: text/event-stream
  • Каждая строка события — data: <json>
  • Поток завершается data: [DONE]

Примеры

Без потоковой передачи:
curl -sS http://127.0.0.1:18789/v1/chat/completions \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'x-openclaw-agent-id: main' \
  -d '{
    "model": "openclaw",
    "messages": [{"role":"user","content":"hi"}]
  }'
Стриминг:
curl -N http://127.0.0.1:18789/v1/chat/completions \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'x-openclaw-agent-id: main' \
  -d '{
    "model": "openclaw",
    "stream": true,
    "messages": [{"role":"user","content":"hi"}]
  }'