Gateway OpenClaw może udostępniać mały punkt końcowy Chat Completions zgodny z OpenAI. Ten punkt końcowy jest domyślnie wyłączony. Najpierw włącz go w konfiguracji.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- Ten sam port co Gateway (multipleks WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), więc routing/uprawnienia/konfiguracja odpowiadają Twojemu Gateway.
Uwierzytelnianie
Używa konfiguracji uwierzytelniania Gateway. Typowe ścieżki uwierzytelniania HTTP:- uwierzytelnianie współdzielonym sekretem (
gateway.auth.mode="token"albo"password"):Authorization: Bearer <token-or-password> - zaufane uwierzytelnianie HTTP przenoszące tożsamość (
gateway.auth.mode="trusted-proxy"): kieruj przez skonfigurowany proxy świadomy tożsamości i pozwól mu wstrzyknąć wymagane nagłówki tożsamości - otwarte uwierzytelnianie dla prywatnego wejścia (
gateway.auth.mode="none"): nagłówek uwierzytelniania nie jest wymagany
- Gdy
gateway.auth.mode="token", użyjgateway.auth.token(alboOPENCLAW_GATEWAY_TOKEN). - Gdy
gateway.auth.mode="password", użyjgateway.auth.password(alboOPENCLAW_GATEWAY_PASSWORD). - Gdy
gateway.auth.mode="trusted-proxy", żądanie HTTP musi pochodzić ze skonfigurowanego zaufanego źródła proxy; proxy loopback na tym samym hoście wymagają jawnegogateway.auth.trustedProxy.allowLoopback = true. - Jeśli
gateway.auth.rateLimitjest skonfigurowany i wystąpi zbyt wiele nieudanych prób uwierzytelnienia, punkt końcowy zwraca429zRetry-After.
Granica bezpieczeństwa (ważne)
Traktuj ten punkt końcowy jako powierzchnię z pełnym dostępem operatora dla instancji Gateway.- Uwierzytelnianie HTTP bearer tutaj nie jest wąskim modelem zakresu per użytkownik.
- Prawidłowy token/hasło Gateway dla tego punktu końcowego należy traktować jak poświadczenie właściciela/operatora.
- Żądania przechodzą przez tę samą ścieżkę agenta płaszczyzny sterowania co zaufane działania operatora.
- Na tym punkcie końcowym nie ma osobnej granicy narzędzi dla nie-właściciela/per użytkownik; gdy wywołujący przejdzie tutaj uwierzytelnianie Gateway, OpenClaw traktuje go jako zaufanego operatora tego Gateway.
- W trybach uwierzytelniania współdzielonym sekretem (
tokenipassword) punkt końcowy przywraca normalne pełne domyślne uprawnienia operatora, nawet jeśli wywołujący wyśle węższy nagłówekx-openclaw-scopes. - Zaufane tryby HTTP przenoszące tożsamość (na przykład uwierzytelnianie przez zaufany proxy albo
gateway.auth.mode="none") respektująx-openclaw-scopes, gdy jest obecny, a w przeciwnym razie wracają do normalnego domyślnego zestawu zakresów operatora. - Jeśli polityka agenta docelowego dopuszcza narzędzia wrażliwe, ten punkt końcowy może ich używać.
- Utrzymuj ten punkt końcowy wyłącznie na loopback/tailnet/prywatnym wejściu; nie wystawiaj go bezpośrednio do publicznego internetu.
gateway.auth.mode="token"albo"password"+Authorization: Bearer ...- dowodzi posiadania współdzielonego sekretu operatora Gateway
- ignoruje węższe
x-openclaw-scopes - przywraca pełny domyślny zestaw zakresów operatora:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - traktuje tury czatu na tym punkcie końcowym jako tury wysyłane przez właściciela
- zaufane tryby HTTP przenoszące tożsamość (na przykład uwierzytelnianie przez zaufany proxy albo
gateway.auth.mode="none"na prywatnym wejściu)- uwierzytelniają jakąś zewnętrzną zaufaną tożsamość lub granicę wdrożenia
- respektują
x-openclaw-scopes, gdy nagłówek jest obecny - wracają do normalnego domyślnego zestawu zakresów operatora, gdy nagłówka nie ma
- tracą semantykę właściciela tylko wtedy, gdy wywołujący jawnie zawęża zakresy i pomija
operator.admin
Kontrakt modelu z agentem na pierwszym miejscu
OpenClaw traktuje pole OpenAImodel jako cel agenta, a nie surowy identyfikator modelu providera.
model: "openclaw"kieruje do skonfigurowanego domyślnego agenta.model: "openclaw/default"także kieruje do skonfigurowanego domyślnego agenta.model: "openclaw/<agentId>"kieruje do konkretnego agenta.
x-openclaw-model: <provider/model-or-bare-id>nadpisuje model backendu dla wybranego agenta.x-openclaw-agent-id: <agentId>pozostaje obsługiwane jako nadpisanie kompatybilności.x-openclaw-session-key: <sessionKey>w pełni kontroluje routing sesji.x-openclaw-message-channel: <channel>ustawia syntetyczny kontekst kanału wejściowego dla promptów i polityk świadomych kanału.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Włączanie punktu końcowego
Ustawgateway.http.endpoints.chatCompletions.enabled na true:
Wyłączanie punktu końcowego
Ustawgateway.http.endpoints.chatCompletions.enabled na false:
Zachowanie sesji
Domyślnie punkt końcowy jest bezstanowy dla każdego żądania (przy każdym wywołaniu generowany jest nowy klucz sesji). Jeśli żądanie zawiera ciąg OpenAIuser, Gateway wyprowadza z niego stabilny klucz sesji, dzięki czemu powtarzane wywołania mogą współdzielić sesję agenta.
Dlaczego ta powierzchnia ma znaczenie
To zestaw zgodności o najwyższej wartości dla samodzielnie hostowanych frontendów i narzędzi:- Większość konfiguracji Open WebUI, LobeChat i LibreChat oczekuje
/v1/models. - Wiele systemów RAG oczekuje
/v1/embeddings. - Istniejące klienty czatu OpenAI mogą zwykle zacząć od
/v1/chat/completions. - Klienty bardziej natywne dla agentów coraz częściej preferują
/v1/responses.
Lista modeli i routing agentów
What does `/v1/models` return?
What does `/v1/models` return?
Listę celów agentów OpenClaw.Zwrócone identyfikatory to wpisy
openclaw, openclaw/default i openclaw/<agentId>.
Używaj ich bezpośrednio jako wartości OpenAI model.Does `/v1/models` list agents or sub-agents?
Does `/v1/models` list agents or sub-agents?
Wyświetla cele agentów najwyższego poziomu, nie modele backendowych providerów ani podagentów.Podagenci pozostają wewnętrzną topologią wykonania. Nie pojawiają się jako pseudomodele.
Why is `openclaw/default` included?
Why is `openclaw/default` included?
openclaw/default jest stabilnym aliasem dla skonfigurowanego domyślnego agenta.Oznacza to, że klienci mogą nadal używać jednego przewidywalnego identyfikatora, nawet jeśli rzeczywisty identyfikator domyślnego agenta różni się między środowiskami.How do I override the backend model?
How do I override the backend model?
Użyj
x-openclaw-model.Przykłady:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Jeśli go pominiesz, wybrany agent działa ze swoim normalnie skonfigurowanym wyborem modelu.How do embeddings fit this contract?
How do embeddings fit this contract?
/v1/embeddings używa tych samych identyfikatorów model celów agentów.Użyj model: "openclaw/default" albo model: "openclaw/<agentId>".
Gdy potrzebujesz konkretnego modelu embeddingów, wyślij go w x-openclaw-model.
Bez tego nagłówka żądanie przechodzi do normalnej konfiguracji embeddingów wybranego agenta.Streaming (SSE)
Ustawstream: true, aby odbierać Server-Sent Events (SSE):
Content-Type: text/event-stream- Każda linia zdarzenia ma postać
data: <json> - Strumień kończy się
data: [DONE]
Kontrakt narzędzi czatu
/v1/chat/completions obsługuje podzbiór narzędzi funkcyjnych zgodny z popularnymi klientami OpenAI Chat.
Obsługiwane pola żądania
tools: tablica{ "type": "function", "function": { ... } }tool_choice:"auto","none"messages[*].role: "tool"kolejne turymessages[*].tool_call_iddo wiązania wyników narzędzi z wcześniejszym wywołaniem narzędziamax_completion_tokens: liczba; limit na wywołanie dla łącznych tokenów ukończenia (w tym tokenów rozumowania). Obecna nazwa pola OpenAI Chat Completions; preferowana, gdy wysłane są zarównomax_completion_tokens, jak imax_tokens.max_tokens: liczba; starszy alias akceptowany dla zgodności wstecznej. Ignorowany, gdy obecne jest równieżmax_completion_tokens.
max_completion_tokens dla punktów końcowych rodziny OpenAI oraz max_tokens dla providerów, którzy akceptują tylko starszą nazwę (takich jak Mistral i Chutes).
Nieobsługiwane warianty
Punkt końcowy zwraca400 invalid_request_error dla nieobsługiwanych wariantów narzędzi, w tym:
toolsniebędące tablicą- wpisy narzędzi niebędące funkcją
- brakujące
tool.function.name - warianty
tool_choice, takie jakallowed_toolsicustom tool_choice: "required"(nieegzekwowane jeszcze w czasie wykonywania; będzie obsługiwane po wdrożeniu twardego wymuszania)tool_choice: { "type": "function", "function": { "name": "..." } }(to samo uzasadnienie co przyrequired)- wartości
tool_choice.function.name, które nie pasują do podanychtools
Kształt odpowiedzi narzędzi bez streamingu
Gdy agent zdecyduje się wywołać narzędzia, odpowiedź używa:choices[0].finish_reason = "tool_calls"- wpisów
choices[0].message.tool_calls[]z:idtype: "function"function.namefunction.arguments(ciąg JSON)
choices[0].message.content (może być pusty).
Kształt odpowiedzi narzędzi ze streamingiem
Gdystream: true, wywołania narzędzi są emitowane jako przyrostowe fragmenty SSE:
- początkowa delta roli asystenta
- opcjonalne delty komentarza asystenta
- jeden lub więcej fragmentów
delta.tool_callsprzenoszących tożsamość narzędzia i fragmenty argumentów - końcowy fragment z
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, końcowy fragment użycia jest emitowany przed [DONE].
Pętla kontynuacji narzędzi
Po otrzymaniutool_calls klient powinien wykonać żądane funkcje i wysłać żądanie kontynuacji zawierające:
- wcześniejszą wiadomość asystenta z wywołaniem narzędzia
- jedną lub więcej wiadomości
role: "tool"z pasującymtool_call_id
Szybka konfiguracja Open WebUI
Dla podstawowego połączenia Open WebUI:- Bazowy URL:
http://127.0.0.1:18789/v1 - Bazowy URL Dockera na macOS:
http://host.docker.internal:18789/v1 - Klucz API: Twój token bearer Gateway
- Model:
openclaw/default
GET /v1/modelspowinno wyświetlićopenclaw/default- Open WebUI powinien używać
openclaw/defaultjako identyfikatora modelu czatu - Jeśli chcesz określonego providera/modelu backendu dla tego agenta, ustaw normalny domyślny model agenta albo wyślij
x-openclaw-model
openclaw/default, większość konfiguracji Open WebUI może połączyć się z tym samym bazowym URL i tokenem.
Przykłady
Bez streamingu:/v1/modelszwraca cele agentów OpenClaw, a nie surowe katalogi dostawców.openclaw/defaultjest zawsze obecny, więc jeden stabilny identyfikator działa w różnych środowiskach.- Nadpisania dostawcy/modelu backendu należy umieszczać w
x-openclaw-model, a nie w polu OpenAImodel. /v1/embeddingsobsługujeinputjako ciąg znaków lub tablicę ciągów znaków.