Gateway
OpenResponses API'si
Gateway, OpenResponses uyumlu bir POST /v1/responses uç noktası sunabilir. Bu uç nokta varsayılan olarak devre dışıdır ve portunu Gateway ile paylaşır (WS + HTTP çoklama): http://<gateway-host>:<port>/v1/responses.
İstekler normal bir Gateway ajan çalıştırması olarak yürütülür (openclaw agent ile aynı kod yolu); dolayısıyla yönlendirme, izinler ve yapılandırma Gateway'inizle aynıdır.
gateway.http.endpoints.responses.enabled ile etkinleştirin veya devre dışı bırakın. Etkinleştirildiğinde aynı uyumluluk yüzeyi ayrıca GET /v1/models, GET /v1/models/{id}, POST /v1/embeddings ve POST /v1/chat/completions uç noktalarını sunar.
Kimlik doğrulama, güvenlik ve yönlendirme
İşletim davranışı OpenAI Chat Completions ile aynıdır:
- Kimlik doğrulama yolu
gateway.auth.modeile aynıdır: paylaşılan gizli anahtar (token/password)Authorization: Bearer <token-or-password>kullanır; güvenilen proxy, kimlik algılayan proxy üstbilgilerini kullanır (aynı ana makinedeki geri döngü proxy'lerigateway.auth.trustedProxy.allowLoopback = truegerektirir;Forwarded/X-Forwarded-*/X-Real-IPüstbilgilerinden hiçbiri mevcut değilsegateway.auth.password/OPENCLAW_GATEWAY_PASSWORDaracılığıyla aynı ana makinede doğrudan geri dönüş sağlanır); özel giriştekinonekimlik doğrulama üstbilgisi gerektirmez. Bkz. Güvenilen proxy kimlik doğrulaması. - Uç noktayı Gateway örneğine tam operatör erişimi olarak değerlendirin.
- Paylaşılan gizli anahtar kimlik doğrulama modları, bearer tarafından bildirilen daha dar kapsamlı bir
x-openclaw-scopesdeğerini yok sayar ve tam varsayılan operatör kapsamı kümesini geri yükler:operator.admin,operator.approvals,operator.pairing,operator.read,operator.talk.secrets,operator.write. Bu uç noktadaki sohbet turları, sahibi gönderen turlar olarak değerlendirilir. - Güvenilen, kimlik taşıyan HTTP modları (güvenilen proxy veya
gateway.auth.mode="none"), mevcut olduğundax-openclaw-scopesdeğerini dikkate alır; aksi takdirde varsayılan operatör kapsamı kümesine geri döner. Sahip semantiği yalnızca çağıran taraf kapsamları açıkça daralttığında veoperator.admindeğerini dışarıda bıraktığında kaybolur. - Ajanları
model: "openclaw","openclaw/default","openclaw/<agentId>"veyax-openclaw-agent-idüstbilgisiyle seçin. - Seçilen ajanın arka uç modelini geçersiz kılmak için
x-openclaw-modelkullanın (kimlik taşıyan kimlik doğrulama yollarındaoperator.admingerektirir). - Açık oturum yönlendirmesi için
x-openclaw-session-keykullanın (ayrılmış bir ad alanı kullanıyorsa400 invalid_request_errorile reddedilir:subagent:,cron:,acp:). - Varsayılan olmayan sentetik giriş kanalı bağlamı için
x-openclaw-message-channelkullanın.
Ajan hedefli modeller, openclaw/default, gömme geçişi ve arka uç modeli geçersiz kılmalarına ilişkin kurallı açıklama için OpenAI Chat Completions sayfasına bakın.
Bkz. Operatör kapsamları ve Güvenlik.
Oturum davranışı
Uç nokta varsayılan olarak her istek için durumsuzdur (her çağrıda yeni bir oturum anahtarı oluşturulur).
İstek bir OpenResponses user dizesi içeriyorsa Gateway, yinelenen çağrıların aynı ajan oturumunu paylaşabilmesi için bu dizeden kararlı bir oturum anahtarı türetir.
İstek aynı ajan/kullanıcı/istenen oturum kapsamında kaldığında (kimlik doğrulama konusu, ajan kimliği ve x-openclaw-session-key ile eşleştirilir) previous_response_id önceki yanıtın oturumunu yeniden kullanır.
İstek biçimi
| Alan | Destek |
|---|---|
input |
Dize veya öğe nesneleri dizisi. |
instructions |
Sistem istemiyle birleştirilir. |
tools |
İstemci araç tanımları (işlev araçları). |
tool_choice |
İstemci araçlarını filtrelemek veya zorunlu kılmak için "auto", "none", "required" veya { "type": "function", "name": "..." }. |
stream |
SSE akışını etkinleştirir. |
max_output_tokens |
En iyi çabayla uygulanan çıktı sınırı (sağlayıcıya bağlıdır). |
temperature |
En iyi çabayla uygulanan örnekleme sıcaklığı. Sabit sunucu tarafı örneklemesi kullanan ChatGPT tabanlı Codex Responses arka ucu tarafından yok sayılır. |
top_p |
En iyi çabayla uygulanan çekirdek örneklemesi. temperature ile aynı Codex Responses kısıtlaması geçerlidir. |
user |
Kararlı oturum yönlendirmesi. |
previous_response_id |
Oturum sürekliliği (yukarıya bakın). |
max_tool_calls, reasoning, metadata, store, truncation |
Kabul edilir ancak şu anda yok sayılır. |
Öğeler (girdi)
message
Roller: system, developer, user, assistant.
systemvedevelopersistem istemine eklenir.- En son
userveyafunction_call_outputöğesi "geçerli ileti" olur. - Önceki kullanıcı/asistan iletileri bağlam amacıyla geçmişe dahil edilir.
function_call_output (tur tabanlı araçlar)
Araç sonuçlarını modele geri gönderin:
{ "type": "function_call_output", "call_id": "call_123", "output": "{\"temperature\": \"72F\"}"}reasoning ve item_reference
Şema uyumluluğu için kabul edilir ancak istem oluşturulurken yok sayılır.
Araçlar (istemci tarafı işlev araçları)
Araçları tools: [{ type: "function", name, description?, parameters? }] ile sağlayın.
Ajan bir aracı çağırırsa yanıt bir function_call çıktı öğesi döndürür. Turu sürdürmek için function_call_output içeren bir takip isteği gönderin.
tool_choice: "required" ve işleve sabitlenmiş tool_choice için uç nokta, sunulan istemci işlev araçları kümesini daraltır, çalışma zamanına yanıt vermeden önce bir istemci aracını çağırması talimatını verir ve tur eşleşen yapılandırılmış bir istemci aracı çağrısı içermiyorsa /v1/chat/completions sözleşmesine uygun olarak turu reddeder. Akışsız istekler bir api_error ile 502 döndürür; akışlı istekler bir response.failed olayı yayınlar.
Görüntüler (input_image)
Base64 veya URL kaynaklarını destekler:
{ "type": "input_image", "source": { "type": "url", "url": "https://example.com/image.png" }}İzin verilen MIME türleri (varsayılan): image/jpeg, image/png, image/gif, image/webp, image/heic, image/heif. Azami boyut (varsayılan): 10MB.
Dosyalar (input_file)
Base64 veya URL kaynaklarını destekler:
{ "type": "input_file", "source": { "type": "base64", "media_type": "text/plain", "data": "SGVsbG8gV29ybGQh", "filename": "hello.txt" }}İzin verilen MIME türleri (varsayılan): text/plain, text/markdown, text/html, text/csv, application/json, application/pdf. Azami boyut (varsayılan): 5MB.
Geçerli davranış:
- Dosya içeriğinin kodu çözülür ve kullanıcı iletisine değil sistem istemine eklenir; böylece geçici kalır (oturum geçmişinde kalıcılaştırılmaz).
- Kodu çözülmüş dosya metni eklenmeden önce güvenilmeyen harici içerik olarak sarmalanır; böylece dosya baytları güvenilen talimatlar olarak değil, veri olarak değerlendirilir. Eklenen blok açık sınır işaretçileri (
<<<EXTERNAL_UNTRUSTED_CONTENT id="...">>>/<<<END_EXTERNAL_UNTRUSTED_CONTENT id="...">>>) ve birSource: Externalmeta veri satırı kullanır. İstem bütçesini korumak için uzunSECURITY NOTICE:başlığını kasıtlı olarak dışarıda bırakır; sınır işaretçileri ve meta veriler yine de geçerlidir. - PDF'ler önce metin için ayrıştırılır. Az miktarda metin bulunursa ilk sayfalar görüntülere dönüştürülüp modele iletilir ve eklenen dosya bloğunda
[PDF content rendered to images]yer tutucusu kullanılır.
PDF ayrıştırması; metin çıkarma ve sayfa oluşturma için clawpdf ile paketlenmiş PDFium WebAssembly çalışma zamanını kullanan, paketle birlikte sunulan document-extract plugin'i tarafından sağlanır.
URL getirme varsayılanları:
files.allowUrl:trueimages.allowUrl:truemaxUrlParts:8(istek başına toplam URL tabanlıinput_file+input_imagebölümü)- İstekler koruma altındadır (DNS çözümlemesi, özel IP engelleme, yönlendirme sınırları, zaman aşımları).
- Her girdi türü için isteğe bağlı ana makine adı izin listeleri desteklenir (
files.urlAllowlist,images.urlAllowlist): tam ana makine ("cdn.example.com") veya joker karakterli alt etki alanları ("*.assets.example.com", kök etki alanıyla eşleşmez). Boş veya belirtilmemiş izin listeleri, ana makine adı izin listesi kısıtlaması olmadığı anlamına gelir. - URL tabanlı getirmeleri tamamen devre dışı bırakmak için
files.allowUrl: falseve/veyaimages.allowUrl: falseayarlayın.
Dosya ve görüntü sınırları
Uç nokta yerleşik bir 20 MB istek gövdesi sınırı kullanır. Dosya ve görüntü kaynağı
ilkesi gateway.http.endpoints.responses altında yapılandırılabilir durumda kalır:
{ gateway: { http: { endpoints: { responses: { enabled: true, maxUrlParts: 8, files: { allowUrl: true, urlAllowlist: ["cdn.example.com", "*.assets.example.com"], allowedMimes: [ "text/plain", "text/markdown", "text/html", "text/csv", "application/json", "application/pdf", ], maxBytes: 5242880, maxChars: 60000, maxRedirects: 3, timeoutMs: 10000, pdf: { maxPages: 4, maxPixels: 4000000, minTextChars: 200, }, }, images: { allowUrl: true, urlAllowlist: ["images.example.com"], allowedMimes: [ "image/jpeg", "image/png", "image/gif", "image/webp", "image/heic", "image/heif", ], maxBytes: 10485760, maxRedirects: 3, timeoutMs: 10000, }, }, }, }, },}Belirtilmediğindeki varsayılanlar:
| Anahtar | Varsayılan |
|---|---|
maxUrlParts |
8 |
files.maxBytes |
5MB |
files.maxChars |
60k |
files.maxRedirects |
3 |
files.timeoutMs |
10s |
files.pdf.maxPages |
4 |
files.pdf.maxPixels |
4,000,000 |
files.pdf.minTextChars |
200 |
images.maxBytes |
10MB |
images.maxRedirects |
3 |
images.timeoutMs |
10s |
HEIC/HEIF input_image kaynakları, paylaşılan OpenClaw görüntü işlemcisi (Rastermill) üzerinden sağlayıcıya iletilmeden önce JPEG biçimine normalleştirilir; işlemci, harici codec desteği gerektiren biçimler için bir sistem dönüştürücüsüne (sips, ImageMagick, GraphicsMagick veya ffmpeg) geri döner.
Güvenlik notu: URL izin listeleri, getirme işleminden önce ve yönlendirme adımlarında uygulanır. Bir ana bilgisayar adını izin listesine eklemek, özel/dahili IP engellemesini atlamaz. İnternete açık Gateway'ler için uygulama düzeyindeki korumalara ek olarak ağ çıkış denetimleri uygulayın. Bkz. Güvenlik.
Akış (SSE)
Server-Sent Events almak için stream: true olarak ayarlayın:
Content-Type: text/event-stream- Her olay satırı
event: <type>vedata: <json> - Akış
data: [DONE]ile sona erer
Şu anda yayımlanan olay türleri: response.created, response.in_progress, response.output_item.added, response.content_part.added, response.output_text.delta, response.output_text.done, response.content_part.done, response.output_item.done, response.completed, response.failed (hata durumunda).
Kullanım
Temel sağlayıcı token sayılarını bildirdiğinde usage doldurulur. OpenClaw, bu sayaçlar aşağı akış durum/oturum yüzeylerine ulaşmadan önce input_tokens / output_tokens ve prompt_tokens / completion_tokens dâhil olmak üzere yaygın OpenAI tarzı diğer adları normalleştirir.
Hatalar
Hatalar aşağıdakine benzer bir JSON nesnesi kullanır:
{ "error": { "message": "...", "type": "invalid_request_error" } }Yaygın durumlar: 400 geçersiz istek gövdesi, 401 eksik/geçersiz kimlik doğrulama, 403 eksik operatör kapsamı, 405 yanlış yöntem, 429 çok fazla başarısız kimlik doğrulama denemesi (Retry-After ile).
Örnekler
Akışsız:
curl -sS http://127.0.0.1:18789/v1/responses \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' \ -H 'x-openclaw-agent-id: main' \ -d '{ "model": "openclaw", "input": "hi" }'Akışlı:
curl -N http://127.0.0.1:18789/v1/responses \ -H 'Authorization: Bearer YOUR_TOKEN' \ -H 'Content-Type: application/json' \ -H 'x-openclaw-agent-id: main' \ -d '{ "model": "openclaw", "stream": true, "input": "hi" }'