Gateway của OpenClaw có thể phục vụ một endpoint Chat Completions nhỏ tương thích với OpenAI. Endpoint này bị tắt theo mặc định. Hãy bật trong cấu hình trước.Documentation Index
Fetch the complete documentation index at: https://docs2.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
POST /v1/chat/completions- Cùng cổng với Gateway (ghép kênh WS + HTTP):
http://<gateway-host>:<port>/v1/chat/completions
GET /v1/modelsGET /v1/models/{id}POST /v1/embeddingsPOST /v1/responses
openclaw agent), vì vậy định tuyến/quyền/cấu hình khớp với Gateway của bạn.
Xác thực
Sử dụng cấu hình xác thực của Gateway. Các đường dẫn xác thực HTTP phổ biến:- xác thực bằng bí mật dùng chung (
gateway.auth.mode="token"hoặc"password"):Authorization: Bearer <token-or-password> - xác thực HTTP mang danh tính tin cậy (
gateway.auth.mode="trusted-proxy"): định tuyến qua proxy nhận biết danh tính đã cấu hình và để proxy đó chèn các header danh tính bắt buộc - xác thực mở cho private-ingress (
gateway.auth.mode="none"): không cần header xác thực
- Khi
gateway.auth.mode="token", hãy dùnggateway.auth.token(hoặcOPENCLAW_GATEWAY_TOKEN). - Khi
gateway.auth.mode="password", hãy dùnggateway.auth.password(hoặcOPENCLAW_GATEWAY_PASSWORD). - Khi
gateway.auth.mode="trusted-proxy", yêu cầu HTTP phải đến từ một nguồn proxy tin cậy đã cấu hình; proxy loopback cùng máy chủ yêu cầu đặt rõgateway.auth.trustedProxy.allowLoopback = true. - Nếu
gateway.auth.rateLimitđược cấu hình và xảy ra quá nhiều lỗi xác thực, endpoint trả về429kèmRetry-After.
Ranh giới bảo mật (quan trọng)
Hãy xem endpoint này là một bề mặt có toàn quyền truy cập của operator cho phiên bản gateway.- Xác thực bearer HTTP ở đây không phải là mô hình phạm vi hẹp theo từng người dùng.
- Token/mật khẩu Gateway hợp lệ cho endpoint này nên được xem như thông tin xác thực của chủ sở hữu/operator.
- Các yêu cầu chạy qua cùng đường tác nhân control-plane như các hành động operator tin cậy.
- Không có ranh giới công cụ riêng cho non-owner/theo từng người dùng trên endpoint này; một khi caller vượt qua xác thực Gateway tại đây, OpenClaw coi caller đó là operator tin cậy cho gateway này.
- Với các chế độ xác thực bằng bí mật dùng chung (
tokenvàpassword), endpoint khôi phục các mặc định operator đầy đủ thông thường ngay cả khi caller gửi headerx-openclaw-scopeshẹp hơn. - Các chế độ HTTP mang danh tính tin cậy (ví dụ xác thực proxy tin cậy hoặc
gateway.auth.mode="none") tôn trọngx-openclaw-scopeskhi có mặt và nếu không thì quay về tập phạm vi mặc định operator thông thường. - Nếu chính sách của tác nhân mục tiêu cho phép công cụ nhạy cảm, endpoint này có thể sử dụng chúng.
- Chỉ giữ endpoint này trên loopback/tailnet/private ingress; không phơi trực tiếp ra Internet công cộng.
gateway.auth.mode="token"hoặc"password"+Authorization: Bearer ...- chứng minh việc sở hữu bí mật operator gateway dùng chung
- bỏ qua
x-openclaw-scopeshẹp hơn - khôi phục tập phạm vi operator mặc định đầy đủ:
operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write - coi các lượt chat trên endpoint này là lượt gửi của chủ sở hữu
- các chế độ HTTP mang danh tính tin cậy (ví dụ xác thực proxy tin cậy, hoặc
gateway.auth.mode="none"trên private ingress)- xác thực một danh tính tin cậy bên ngoài hoặc ranh giới triển khai nào đó
- tôn trọng
x-openclaw-scopeskhi header này có mặt - quay về tập phạm vi mặc định operator thông thường khi header vắng mặt
- chỉ mất ngữ nghĩa chủ sở hữu khi caller thu hẹp phạm vi một cách rõ ràng và bỏ qua
operator.admin
Hợp đồng mô hình ưu tiên tác nhân
OpenClaw coi trườngmodel của OpenAI là mục tiêu tác nhân, không phải id mô hình nhà cung cấp thô.
model: "openclaw"định tuyến đến tác nhân mặc định đã cấu hình.model: "openclaw/default"cũng định tuyến đến tác nhân mặc định đã cấu hình.model: "openclaw/<agentId>"định tuyến đến một tác nhân cụ thể.
x-openclaw-model: <provider/model-or-bare-id>ghi đè mô hình backend cho tác nhân đã chọn.x-openclaw-agent-id: <agentId>vẫn được hỗ trợ như một ghi đè tương thích.x-openclaw-session-key: <sessionKey>kiểm soát hoàn toàn việc định tuyến phiên.x-openclaw-message-channel: <channel>đặt ngữ cảnh kênh ingress tổng hợp cho prompt và chính sách nhận biết kênh.
model: "openclaw:<agentId>"model: "agent:<agentId>"
Bật endpoint
Đặtgateway.http.endpoints.chatCompletions.enabled thành true:
Tắt endpoint
Đặtgateway.http.endpoints.chatCompletions.enabled thành false:
Hành vi phiên
Theo mặc định, endpoint này không trạng thái theo từng yêu cầu (mỗi lần gọi tạo một khóa phiên mới). Nếu yêu cầu bao gồm chuỗiuser của OpenAI, Gateway suy ra một khóa phiên ổn định từ đó, để các lần gọi lặp lại có thể chia sẻ một phiên tác nhân.
Vì sao bề mặt này quan trọng
Đây là tập tương thích có đòn bẩy cao nhất cho frontend và công cụ tự lưu trữ:- Hầu hết các thiết lập Open WebUI, LobeChat và LibreChat mong đợi
/v1/models. - Nhiều hệ thống RAG mong đợi
/v1/embeddings. - Các client chat OpenAI hiện có thường có thể bắt đầu với
/v1/chat/completions. - Ngày càng nhiều client thiên về tác nhân hơn ưu tiên
/v1/responses.
Danh sách mô hình và định tuyến tác nhân
What does `/v1/models` return?
What does `/v1/models` return?
Một danh sách mục tiêu tác nhân OpenClaw.Các id được trả về là
openclaw, openclaw/default và các mục openclaw/<agentId>.
Hãy dùng chúng trực tiếp làm giá trị model của OpenAI.Does `/v1/models` list agents or sub-agents?
Does `/v1/models` list agents or sub-agents?
Endpoint này liệt kê các mục tiêu tác nhân cấp cao nhất, không phải mô hình nhà cung cấp backend và không phải tác nhân con.Tác nhân con vẫn là cấu trúc thực thi nội bộ. Chúng không xuất hiện dưới dạng mô hình giả.
Why is `openclaw/default` included?
Why is `openclaw/default` included?
openclaw/default là bí danh ổn định cho tác nhân mặc định đã cấu hình.Điều đó nghĩa là client có thể tiếp tục dùng một id dự đoán được ngay cả khi id tác nhân mặc định thật thay đổi giữa các môi trường.How do I override the backend model?
How do I override the backend model?
Dùng
x-openclaw-model.Ví dụ:
x-openclaw-model: openai/gpt-5.4
x-openclaw-model: gpt-5.5Nếu bạn bỏ qua nó, tác nhân đã chọn chạy với lựa chọn mô hình được cấu hình thông thường của nó.How do embeddings fit this contract?
How do embeddings fit this contract?
/v1/embeddings dùng cùng các id model mục tiêu tác nhân.Dùng model: "openclaw/default" hoặc model: "openclaw/<agentId>".
Khi cần một mô hình embedding cụ thể, hãy gửi nó trong x-openclaw-model.
Nếu không có header đó, yêu cầu được chuyển tiếp đến thiết lập embedding thông thường của tác nhân đã chọn.Streaming (SSE)
Đặtstream: true để nhận Server-Sent Events (SSE):
Content-Type: text/event-stream- Mỗi dòng sự kiện là
data: <json> - Luồng kết thúc bằng
data: [DONE]
Hợp đồng công cụ chat
/v1/chat/completions hỗ trợ một tập con công cụ hàm tương thích với các client OpenAI Chat phổ biến.
Các trường yêu cầu được hỗ trợ
tools: mảng gồm{ "type": "function", "function": { ... } }tool_choice:"auto","none"- các lượt tiếp theo
messages[*].role: "tool" messages[*].tool_call_idđể gắn kết quả công cụ trở lại lời gọi công cụ trước đómax_completion_tokens: số; giới hạn theo từng lần gọi cho tổng số token hoàn tất (bao gồm token suy luận). Tên trường OpenAI Chat Completions hiện tại; được ưu tiên khi cảmax_completion_tokensvàmax_tokensđều được gửi.max_tokens: số; bí danh cũ được chấp nhận để tương thích ngược. Bị bỏ qua khimax_completion_tokenscũng có mặt.
max_completion_tokens cho các endpoint họ OpenAI, và max_tokens cho các nhà cung cấp chỉ chấp nhận tên cũ (chẳng hạn như Mistral và Chutes).
Các biến thể không được hỗ trợ
Endpoint trả về400 invalid_request_error cho các biến thể công cụ không được hỗ trợ, bao gồm:
toolskhông phải mảng- mục công cụ không phải hàm
- thiếu
tool.function.name - các biến thể
tool_choicenhưallowed_toolsvàcustom tool_choice: "required"(chưa được cưỡng chế tại runtime; sẽ được hỗ trợ sau khi triển khai cưỡng chế cứng)tool_choice: { "type": "function", "function": { "name": "..." } }(cùng lý do nhưrequired)- các giá trị
tool_choice.function.namekhông khớp vớitoolsđã cung cấp
Dạng phản hồi công cụ không streaming
Khi tác nhân quyết định gọi công cụ, phản hồi dùng:choices[0].finish_reason = "tool_calls"- các mục
choices[0].message.tool_calls[]với:idtype: "function"function.namefunction.arguments(chuỗi JSON)
choices[0].message.content (có thể trống).
Dạng phản hồi công cụ streaming
Khistream: true, các lời gọi công cụ được phát ra dưới dạng các chunk SSE tăng dần:
- delta vai trò assistant ban đầu
- các delta bình luận assistant tùy chọn
- một hoặc nhiều chunk
delta.tool_callsmang danh tính công cụ và các mảnh đối số - chunk cuối với
finish_reason: "tool_calls" data: [DONE]
stream_options.include_usage=true, một chunk usage ở cuối được phát ra trước [DONE].
Vòng lặp tiếp nối công cụ
Sau khi nhậntool_calls, client nên thực thi các hàm được yêu cầu và gửi một yêu cầu tiếp nối bao gồm:
- thông điệp lời gọi công cụ của assistant trước đó
- một hoặc nhiều thông điệp
role: "tool"vớitool_call_idkhớp
Thiết lập nhanh Open WebUI
Cho kết nối Open WebUI cơ bản:- Base URL:
http://127.0.0.1:18789/v1 - Base URL Docker trên macOS:
http://host.docker.internal:18789/v1 - Khóa API: token bearer Gateway của bạn
- Mô hình:
openclaw/default
GET /v1/modelsnên liệt kêopenclaw/default- Open WebUI nên dùng
openclaw/defaultlàm id mô hình chat - Nếu bạn muốn một nhà cung cấp/mô hình backend cụ thể cho tác nhân đó, hãy đặt mô hình mặc định thông thường của tác nhân hoặc gửi
x-openclaw-model
openclaw/default, hầu hết các thiết lập Open WebUI có thể kết nối với cùng Base URL và token.
Ví dụ
Không streaming:/v1/modelstrả về các đích agent OpenClaw, không phải danh mục nhà cung cấp thô.openclaw/defaultluôn hiện diện để một id ổn định hoạt động trên nhiều môi trường.- Ghi đè nhà cung cấp/mô hình backend thuộc về
x-openclaw-model, không phải trườngmodelcủa OpenAI. /v1/embeddingshỗ trợinputdưới dạng một chuỗi hoặc mảng chuỗi.