Chuyển đến nội dung chính
Gateway có thể cung cấp một bề mặt Chat Completions nhỏ tương thích với OpenAI. Bề mặt này bị tắt theo mặc định. Sau khi được bật, Gateway cung cấp tất cả các mục sau trên cùng cổng với Gateway (ghép kênh WS + HTTP): Các yêu cầu chạy như một lượt chạy agent Gateway thông thường (cùng đường dẫn mã với openclaw agent), vì vậy việc định tuyến, quyền và cấu hình khớp với Gateway của bạn.

Bật endpoint

Đặt enabled: false (hoặc bỏ qua) để tắt.

Ranh giới bảo mật (quan trọng)

Hãy coi endpoint này là quyền truy cập đầy đủ của người vận hành vào phiên bản gateway:
  • Token/mật khẩu Gateway hợp lệ cho endpoint này tương đương với thông tin xác thực của chủ sở hữu/người vận hành, không phải phạm vi hẹp theo từng người dùng.
  • Các yêu cầu chạy qua cùng đường dẫn agent của mặt phẳng điều khiển như các hành động đáng tin cậy của người vận hành, vì vậy nếu chính sách của agent đích cho phép các 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/đầu vào riêng tư. Không để endpoint này lộ ra internet công cộng.
Ma trận xác thực: Xem Phạm vi của người vận hành, Bảo mậtTruy cập từ xa.

Xác thực

Sử dụng cấu hình xác thực của Gateway (xem Xác thực proxy đáng tin cậy để biết chi tiết về chế độ đó): Lưu ý:
  • Các bên gọi trên cùng máy chủ bỏ qua proxy trên gateway trusted-proxy có thể dự phòng trực tiếp sang gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD. Mọi bằng chứng từ header Forwarded, X-Forwarded-* hoặc X-Real-IP đều giữ yêu cầu trên đường dẫn trusted-proxy.
  • Nếu gateway.auth.rateLimit được cấu hình và có quá nhiều lần xác thực thất bại, endpoint trả về 429 cùng header Retry-After.

Khi nào nên sử dụng endpoint này

  • Ưu tiên endpoint này thay vì thêm một kênh tích hợp sẵn mới khi tích hợp của bạn chỉ là một bề mặt người vận hành/máy khách khác cho cùng gateway.
  • Đối với các máy khách di động gốc kết nối trực tiếp tới gateway từ xa, hãy ưu tiên WebChat hoặc Giao thức Gateway với luồng khởi tạo thiết bị ghép đôi/token thiết bị, để thiết bị không cần token/mật khẩu HTTP dùng chung.
  • Thay vào đó, hãy xây dựng một plugin kênh khi tích hợp mạng nhắn tin bên ngoài có người dùng, phòng, phương thức phân phối webhook hoặc cơ chế truyền gửi đi riêng. Xem Xây dựng plugin.

Hợp đồng mô hình ưu tiên agent

OpenClaw xử lý trường model của OpenAI như một đích agent, không phải id mô hình thô của nhà cung cấp. Các header yêu cầu tùy chọn: /v1/models liệt kê các đích agent cấp cao nhất (openclaw, openclaw/default, openclaw/<agentId>), không phải các mô hình nhà cung cấp backend và cũng không phải các agent con; agent con vẫn là cấu trúc thực thi nội bộ. Nếu bỏ qua x-openclaw-model, agent đã chọn sẽ chạy với mô hình được cấu hình thông thường của nó. /v1/embeddings sử dụng cùng các id model của đích agent. Gửi x-openclaw-model (từ bên gọi dùng bí mật chung hoặc bên gọi có mang danh tính với operator.admin) để chọn một mô hình embedding cụ thể; nếu không, yêu cầu sẽ sử dụng thiết lập embedding thông thường của agent đã chọn.

Hành vi phiên

Theo mặc định, endpoint không lưu trạng thái cho 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 chứa chuỗi user của OpenAI, Gateway sẽ suy ra một khóa phiên ổn định từ chuỗi đó để các lần gọi lặp lại có thể dùng chung một phiên agent. Đối với ứng dụng tùy chỉnh, hãy sử dụng lại cùng giá trị user cho mỗi luồng hội thoại; tránh các mã định danh cấp tài khoản trừ khi bạn muốn nhiều cuộc hội thoại/thiết bị dùng chung một phiên OpenClaw. Chỉ sử dụng x-openclaw-session-key khi cần kiểm soát định tuyến rõ ràng trên nhiều máy khách/luồng, với các khóa do ứng dụng sở hữu và tránh các không gian tên dành riêng nêu trên.

Giới hạn yêu cầu

Endpoint sử dụng các giới hạn tích hợp sẵn gồm 20 MB cho mỗi nội dung yêu cầu, 8 phần image_url từ tin nhắn mới nhất của người dùng và tổng cộng 20 MB dữ liệu hình ảnh đã giải mã. Chính sách nguồn hình ảnh vẫn có thể được cấu hình trong gateway.http.endpoints.chatCompletions.images:
Cài đặt hình ảnh mặc định là: Các nguồn image_url HEIC/HEIF được chấp nhận và chuẩn hóa thành JPEG trước khi gửi tới nhà cung cấp thông qua bộ xử lý hình ảnh dùng chung của OpenClaw (Rastermill); bộ xử lý này dự phòng sang trình chuyển đổi hệ thống (sips, ImageMagick, GraphicsMagick hoặc ffmpeg) đối với các định dạng cần hỗ trợ codec bên ngoài. Lưu ý bảo mật: việc đưa tên máy chủ vào danh sách cho phép không bỏ qua cơ chế chặn IP riêng tư/nội bộ. Đối với các gateway tiếp xúc với internet, hãy áp dụng biện pháp kiểm soát lưu lượng mạng đi ra bên cạnh các biện pháp bảo vệ ở cấp ứng dụng. Xem Bảo mật.

Hợp đồng công cụ trò chuyện

/v1/chat/completions hỗ trợ một tập con công cụ hàm tương thích với các máy khách OpenAI Chat phổ biến.

Các trường yêu cầu được hỗ trợ

Tất cả các trường lấy mẫu và giới hạn token đều đi qua cùng một kênh tham số luồng của agent và được chuyển tiếp theo khả năng tốt nhất:
  • Giới hạn token: tên trường trên giao thức được lựa chọn theo phương thức truyền tải của nhà cung cấp: max_completion_tokens cho các endpoint thuộc họ OpenAI, max_tokens cho các nhà cung cấp chỉ chấp nhận tên cũ (Mistral, Chutes).
  • stop ánh xạ tới trường dừng của phương thức truyền tải: stop cho các backend Chat Completions, stop_sequences cho Anthropic. API OpenAI Responses không có tham số dừng, vì vậy stop không được áp dụng cho các mô hình dùng backend Responses.
  • Backend Codex Responses dựa trên ChatGPT sử dụng cơ chế lấy mẫu cố định phía máy chủ và loại bỏ temperature/top_p (cùng với max_output_tokens, metadata, prompt_cache_retention, service_tier) trước khi yêu cầu đến backend đó.

Các biến thể không được hỗ trợ

Trả về 400 invalid_request_error đối với:
  • tools không phải mảng, mục công cụ không phải hàm hoặc thiếu tool.function.name
  • các biến thể tool_choice như allowed_toolscustom
  • các giá trị tool_choice.function.name không khớp với công cụ được cung cấp
Đối với tool_choice: "required"tool_choice được ghim vào hàm, endpoint thu hẹp tập công cụ hàm phía máy khách được công khai, yêu cầu runtime gọi một công cụ máy khách trước khi phản hồi và báo lỗi nếu phản hồi của agent không có lệnh gọi công cụ máy khách có cấu trúc tương ứng. Điều này áp dụng cho danh sách HTTP tools do bên gọi cung cấp, không phải mọi công cụ nội bộ của agent OpenClaw.

Cấu trúc phản hồi công cụ không phát trực tiếp

Khi agent gọi công cụ, phản hồi sử dụng:
  • choices[0].finish_reason = "tool_calls"
  • các mục choices[0].message.tool_calls[] với id, type: "function", function.name, function.arguments (chuỗi JSON)
  • Phần diễn giải của trợ lý trước lệnh gọi công cụ, trong choices[0].message.content (có thể rỗng)

Cấu trúc phản hồi công cụ phát trực tiếp

Khi stream: true, các lệnh gọi công cụ đến dưới dạng các đoạn SSE tăng dần: một delta vai trò trợ lý ban đầu, các delta diễn giải tùy chọn của trợ lý, một hoặc nhiều đoạn delta.tool_calls mang định danh công cụ và các phần đối số, sau đó là đoạn cuối cùng với finish_reason: "tool_calls"data: [DONE]. Nếu stream_options.include_usage=true, một đoạn thông tin sử dụng ở cuối được phát ra trước [DONE].

Vòng lặp tiếp nối công cụ

Sau khi nhận tool_calls, hãy thực thi (các) hàm được yêu cầu và gửi một yêu cầu tiếp theo bao gồm thông báo gọi công cụ trước đó của trợ lý cùng một hoặc nhiều thông báo role: "tool"tool_call_id tương ứng. Thao tác này tiếp tục cùng một vòng lặp suy luận của agent để tạo ra câu trả lời cuối cùng.

Phát trực tiếp (SSE)

Đặt stream: true để nhận Server-Sent Events:
  • 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]

Thiết lập nhanh Open WebUI

  • URL cơ sở: http://127.0.0.1:18789/v1
  • URL cơ sở của Docker trên macOS: http://host.docker.internal:18789/v1
  • Khóa API: bearer token của Gateway
  • Mô hình: openclaw/default
Hành vi dự kiến: GET /v1/models liệt kê openclaw/default và Open WebUI sử dụng giá trị đó làm mã định danh mô hình trò chuyện. Đối với một nhà cung cấp/mô hình backend cụ thể, hãy đặt mô hình mặc định thông thường của agent hoặc gửi x-openclaw-model (bên gọi dùng bí mật dùng chung hoặc bên gọi mang danh tính có operator.admin). Kiểm thử nhanh:
Nếu lệnh đó trả về openclaw/default, hầu hết cấu hình Open WebUI có thể kết nối bằng cùng URL cơ sở và token.

Ví dụ

Phiên ổn định cho một cuộc hội thoại của ứng dụng:
Sử dụng lại cùng giá trị user trong các lệnh gọi sau cho cuộc hội thoại đó để tiếp tục cùng một phiên agent. Không phát trực tiếp:
Phát trực tiếp:
Liệt kê các mô hình:
Lấy một mô hình:
Tạo embedding:
/v1/embeddings hỗ trợ input dưới dạng chuỗi hoặc mảng chuỗi.

Liên quan