Providers
OpenRouter
OpenRouter มี API แบบรวมศูนย์ ที่กำหนดเส้นทางคำขอไปยังโมเดลจำนวนมากผ่าน จุดปลายทางและคีย์ API เดียว รองรับการทำงานแบบเดียวกับ OpenAI ดังนั้น SDK ของ OpenAI ส่วนใหญ่จึงใช้งานได้โดยเปลี่ยน URL ฐาน
เริ่มต้นใช้งาน
OAuth
เรียกใช้การเริ่มต้นใช้งาน OAuth
openclaw onboard --auth-choice openrouter-oauthOpenClaw เปิดโฟลว์ลงชื่อเข้าใช้ OpenRouter ในเบราว์เซอร์ แลกเปลี่ยนโค้ด PKCE เป็นคีย์ API ของ OpenRouter และจัดเก็บคีย์นั้นไว้ในโปรไฟล์การยืนยันตัวตน OpenRouter เริ่มต้น สำหรับโฮสต์ระยะไกลหรือโฮสต์ที่ไม่มีหน้าจอ OpenClaw จะพิมพ์ URL สำหรับลงชื่อเข้าใช้และขอให้คุณวาง URL เปลี่ยนเส้นทางหลังจากลงชื่อเข้าใช้แล้ว
(ไม่บังคับ) สลับไปใช้โมเดลเฉพาะ
การเริ่มต้นใช้งานใช้ค่าเริ่มต้นเป็น openrouter/auto เลือกโมเดลที่แน่นอนได้ภายหลัง:
openclaw models set openrouter/<provider>/<model>คีย์ API
รับคีย์ API ของคุณ
สร้างคีย์ API ที่ openrouter.ai/keys
เรียกใช้การเริ่มต้นใช้งานด้วยคีย์ API
openclaw onboard --auth-choice openrouter-api-key(ไม่บังคับ) สลับไปใช้โมเดลเฉพาะ
การเริ่มต้นใช้งานใช้ค่าเริ่มต้นเป็น openrouter/auto เลือกโมเดลที่แน่นอนได้ภายหลัง:
openclaw models set openrouter/<provider>/<model>ตัวอย่างการกำหนดค่า
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { model: { primary: "openrouter/auto" }, }, },}การอ้างอิงโมเดล
ตัวอย่างทางเลือกสำรองที่รวมมาให้:
| การอ้างอิงโมเดล | หมายเหตุ |
|---|---|
openrouter/auto |
การกำหนดเส้นทางอัตโนมัติของ OpenRouter |
openrouter/openrouter/fusion |
เราเตอร์ OpenRouter Fusion |
openrouter/moonshotai/kimi-k2.6 |
Kimi K2.6 ผ่าน MoonshotAI |
openrouter/moonshotai/kimi-k2.5 |
Kimi K2.5 ผ่าน MoonshotAI |
การสร้างรูปภาพ
OpenRouter สามารถรองรับเครื่องมือ image_generate ได้ด้วย ใช้โมเดลรูปภาพของ OpenRouter ภายใต้ agents.defaults.imageGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { imageGenerationModel: { primary: "openrouter/google/gemini-3.1-flash-image-preview", timeoutMs: 180_000, }, }, },}OpenClaw ส่งคำขอรูปภาพไปยัง API รูปภาพของ chat completions ของ OpenRouter ด้วย modalities: ["image", "text"] โมเดลรูปภาพ Gemini จะได้รับคำใบ้ aspectRatio และ resolution ที่รองรับผ่าน image_config ของ OpenRouter ใช้ agents.defaults.imageGenerationModel.timeoutMs สำหรับโมเดลรูปภาพของ OpenRouter ที่ทำงานช้ากว่า โดยพารามิเตอร์ timeoutMs ต่อการเรียกของเครื่องมือ image_generate ยังคงมีลำดับความสำคัญสูงกว่า
การสร้างวิดีโอ
OpenRouter สามารถรองรับเครื่องมือ video_generate ผ่าน API /videos แบบอะซิงโครนัสได้ด้วย ใช้โมเดลวิดีโอของ OpenRouter ภายใต้ agents.defaults.videoGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { videoGenerationModel: { primary: "openrouter/google/veo-3.1-fast", }, }, },}OpenClaw ส่งงานแปลงข้อความเป็นวิดีโอและรูปภาพเป็นวิดีโอไปยัง OpenRouter สำรวจสถานะ
polling_url ที่ส่งกลับมา และดาวน์โหลดวิดีโอที่เสร็จสมบูรณ์จาก
unsigned_urls ของ OpenRouter หรือจุดปลายทางเนื้อหางานที่ระบุไว้ในเอกสาร
โดยค่าเริ่มต้น รูปภาพอ้างอิงจะถูกส่งเป็นรูปภาพเฟรมแรก/สุดท้าย ส่วนรูปภาพ
ที่ติดแท็กด้วย reference_image จะถูกส่งเป็นข้อมูลอ้างอิงขาเข้าของ OpenRouter ค่าเริ่มต้น
google/veo-3.1-fast ที่รวมมาให้ประกาศระยะเวลา 4/6/8 วินาทีที่รองรับในปัจจุบัน
ความละเอียด 720P/1080P และอัตราส่วนภาพ 16:9/9:16
ไม่ได้ลงทะเบียนวิดีโอเป็นวิดีโอสำหรับ OpenRouter เพราะ API การสร้างวิดีโอต้นทาง
ในปัจจุบันรับข้อความและรูปภาพอ้างอิง
การสร้างเพลง
OpenRouter สามารถรองรับเครื่องมือ music_generate ผ่านเอาต์พุตเสียงของ
chat completions ได้ด้วย ใช้โมเดลเสียงของ OpenRouter ภายใต้
agents.defaults.musicGenerationModel:
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { musicGenerationModel: { primary: "openrouter/google/lyria-3-pro-preview", timeoutMs: 180_000, }, }, },}ผู้ให้บริการเพลง OpenRouter ที่รวมมาให้ใช้ค่าเริ่มต้นเป็น
google/lyria-3-pro-preview และยังเปิดเผย
google/lyria-3-clip-preview ด้วย OpenClaw ส่ง modalities: ["text", "audio"] เปิดใช้การสตรีม รวบรวมชิ้นส่วนเสียงที่สตรีมมา และบันทึก
ผลลัพธ์เป็นสื่อที่สร้างขึ้นสำหรับส่งผ่านช่องทาง ระบบรับรูปภาพอ้างอิง
สำหรับโมเดล Lyria ผ่านพารามิเตอร์ music_generate image=... ที่ใช้ร่วมกัน
ข้อความเป็นเสียง
OpenRouter ยังสามารถใช้เป็นผู้ให้บริการ TTS ผ่านจุดปลายทาง
/audio/speech ที่รองรับการทำงานแบบเดียวกับ OpenAI ได้
{ messages: { tts: { auto: "always", provider: "openrouter", providers: { openrouter: { model: "hexgrad/kokoro-82m", speakerVoice: "af_alloy", responseFormat: "mp3", }, }, }, },}หากละเว้น messages.tts.providers.openrouter.apiKey ไว้ TTS จะใช้
models.providers.openrouter.apiKey ซ้ำก่อน แล้วจึงใช้ OPENROUTER_API_KEY
เสียงเป็นข้อความ (เสียงขาเข้า)
OpenRouter สามารถถอดเสียงไฟล์แนบเสียงพูด/เสียงขาเข้าผ่านเส้นทาง
tools.media.audio ที่ใช้ร่วมกัน โดยใช้จุดปลายทาง STT (/audio/transcriptions)
ซึ่งใช้กับ Plugin ช่องทางใดก็ตามที่ส่งต่อเสียงพูด/เสียงขาเข้าเข้าสู่
การตรวจสอบล่วงหน้าสำหรับการเข้าใจสื่อ
{ tools: { media: { audio: { enabled: true, models: [{ provider: "openrouter", model: "openai/whisper-large-v3-turbo" }], }, }, },}OpenClaw ส่งคำขอ STT ของ OpenRouter เป็น JSON พร้อมเสียง base64 ภายใต้
input_audio (สัญญา STT ของ OpenRouter) ไม่ใช่การอัปโหลดแบบฟอร์ม OpenAI multipart
เราเตอร์ Fusion
ใช้ OpenRouter Fusion เมื่อคุณต้องการให้การอ้างอิงโมเดล OpenClaw หนึ่งรายการถาม
โมเดล OpenRouter หลายโมเดลพร้อมกัน ให้ OpenRouter ตัดสินคำตอบเหล่านั้น และส่งคืน
คำตอบสุดท้ายรายการเดียวผ่านจุดปลายทางผู้ให้บริการ OpenRouter ตามปกติ เนื่องจาก
slug โมเดลต้นทางคือ openrouter/fusion การอ้างอิงโมเดล OpenClaw จึงรวม
ทั้งคำนำหน้าผู้ให้บริการ OpenClaw และเนมสเปซ OpenRouter ต้นทาง:
openclaw models set openrouter/openrouter/fusionกำหนดค่าแผงและผู้ตัดสินของ Fusion ผ่าน params.extraBody ของโมเดล ฟิลด์เหล่านั้น
จะถูกส่งต่อเข้าไปในเนื้อความคำขอ chat-completions ของ OpenRouter Fusion
ใช้งานได้กับทั้งการเริ่มต้นใช้งาน OpenRouter OAuth หรือการเริ่มต้นใช้งานด้วยคีย์ API หากคุณใช้
OAuth ให้ละเว้นบรรทัด env.OPENROUTER_API_KEY จากตัวอย่างด้านล่าง
{ env: { OPENROUTER_API_KEY: "sk-or-..." }, agents: { defaults: { model: { primary: "openrouter/openrouter/fusion" }, models: { "openrouter/openrouter/fusion": { params: { extraBody: { plugins: [ { id: "fusion", analysis_models: [ "google/gemini-3.5-flash", "moonshotai/kimi-k2.6", "deepseek/deepseek-v4-pro", ], model: "google/gemini-3.5-flash", }, ], }, }, }, }, }, },}รายการ analysis_models คือแผงแบบขนาน และ model ภายในการกำหนดค่า Plugin
Fusion คือโมเดลผู้ตัดสิน อย่าตั้งค่า tool_choice ระดับบนสุดเป็น
"required" ในรอบเอเจนต์/แชต OpenClaw ปกติเพื่อพยายามบังคับใช้ Fusion
รอบของ OpenClaw อาจรวมคำจำกัดความเครื่องมือ OpenClaw และการเลือกเครื่องมือแบบบังคับ
ระดับบนสุดอาจบังคับให้ใช้เครื่องมือหนึ่งในนั้นแทนเราเตอร์ Fusion เมื่อมี
การกำหนดค่า Plugin Fusion นี้ OpenClaw จะเพิ่มบันทึกพรอมป์ระบบที่ผ่านการทำให้ปลอดภัย
พร้อมโมเดลวิเคราะห์และโมเดลผู้ตัดสินที่กำหนดค่าไว้ด้วย เพื่อให้เอเจนต์
ตอบคำถามเกี่ยวกับแผง Fusion ปัจจุบันของตนได้ ฟิลด์ extraBody อื่น
จะไม่ถูกคัดลอกเข้าไปในพรอมป์
Fusion ช้ากว่าตามการออกแบบ OpenRouter อาจส่งพรอมป์ OpenClaw เดียวกันไปยัง โมเดลวิเคราะห์หลายโมเดล แล้วจึงเรียกใช้ขั้นตอนผู้ตัดสิน/สังเคราะห์สุดท้าย ดังนั้นเวลาแฝง มักสูงกว่าคำขอโมเดลเดียวโดยตรง ใช้ Fusion สำหรับคำตอบที่รอบคอบ คุณภาพสูง หรือเส้นทางยกระดับ ไม่ใช่เป็นค่าเริ่มต้นสำหรับ แชตที่ไวต่อเวลาแฝง หากต้องการคำตอบที่เร็วขึ้น ให้แผงมีขนาดเล็กและเลือก โมเดลวิเคราะห์และผู้ตัดสินที่เร็วกว่า
ทดสอบการอ้างอิงที่กำหนดค่าด้วยการเรียกโมเดลภายในเครื่องแบบครั้งเดียว:
openclaw infer model run --local \ --model openrouter/openrouter/fusion \ --prompt "Reply with exactly: FUSION_OK" \ --jsonการยืนยันตัวตนและส่วนหัว
OpenRouter ใช้โทเค็น Bearer กับคีย์ API ของคุณเบื้องหลัง OpenRouter
OAuth เป็นโฟลว์เข้าสู่ระบบ PKCE ที่ออกคีย์ API ของ OpenRouter ดังนั้น OpenClaw จึงจัดเก็บ
ผลลัพธ์เป็นโปรไฟล์การยืนยันตัวตนคีย์ API openrouter:default เดียวกันที่ใช้โดย
เส้นทางการตั้งค่าคีย์ API ด้วยตนเอง
สำหรับการติดตั้งที่มีอยู่แล้ว ให้ลงชื่อเข้าใช้หรือหมุนเวียนคีย์ OpenRouter ที่จัดเก็บไว้โดยไม่ต้อง เรียกใช้การเริ่มต้นใช้งานเต็มรูปแบบใหม่:
openclaw models auth login --provider openrouter --method oauthใช้ openclaw models auth login --provider openrouter --method api-key เมื่อ
คุณต้องการวางคีย์ที่คุณสร้างด้วยตนเองที่ OpenRouter
สำหรับคำขอ OpenRouter จริง (https://openrouter.ai/api/v1) OpenClaw ยังเพิ่ม
ส่วนหัวระบุแอปตามเอกสารของ OpenRouter ด้วย:
| ส่วนหัว | ค่า |
|---|---|
HTTP-Referer |
https://openclaw.ai |
X-OpenRouter-Title |
OpenClaw |
X-OpenRouter-Categories |
cli-agent,cloud-agent,programming-app,creative-writing,writing-assistant,general-chat,personal-agent |
การกำหนดค่าขั้นสูง
การแคชคำตอบ
การแคชคำตอบของ OpenRouter เป็นแบบเลือกเปิดใช้ เปิดใช้ต่อโมเดล OpenRouter ด้วย พารามิเตอร์โมเดล:
{ agents: { defaults: { models: { "openrouter/auto": { params: { responseCache: true, responseCacheTtlSeconds: 300, }, }, }, }, },}OpenClaw ส่ง X-OpenRouter-Cache: true และเมื่อกำหนดค่าไว้
X-OpenRouter-Cache-TTL responseCacheClear: true จะบังคับรีเฟรชสำหรับ
คำขอปัจจุบันและจัดเก็บคำตอบทดแทน ระบบยอมรับชื่อแฝงแบบ snake_case
(response_cache, response_cache_ttl_seconds และ
response_cache_clear) ด้วย
สิ่งนี้แยกจากการแคชพรอมป์ของผู้ให้บริการและจากเครื่องหมาย
Anthropic cache_control ของ OpenRouter โดยจะใช้เฉพาะกับเส้นทาง
openrouter.ai ที่ตรวจสอบแล้วเท่านั้น ไม่ใช่ URL ฐานของพร็อกซีแบบกำหนดเอง
เครื่องหมายแคชของ Anthropic
บนเส้นทาง OpenRouter ที่ตรวจสอบแล้ว การอ้างอิงโมเดล Anthropic จะคง
เครื่องหมาย Anthropic cache_control เฉพาะของ OpenRouter ที่ OpenClaw ใช้เพื่อ
นำ prompt cache กลับมาใช้ซ้ำได้ดีขึ้นในบล็อกพรอมป์ระบบ/นักพัฒนา
การเติมล่วงหน้า reasoning ของ Anthropic
บนเส้นทาง OpenRouter ที่ตรวจสอบแล้ว การอ้างอิงโมเดล Anthropic ที่เปิดใช้ reasoning จะตัดเทิร์นเติมล่วงหน้าของ assistant ที่อยู่ท้ายสุดออกก่อนที่คำขอจะไปถึง OpenRouter ให้ตรงกับข้อกำหนดของ Anthropic ที่ให้บทสนทนา reasoning จบด้วยเทิร์นของผู้ใช้
การฉีด Thinking / reasoning
บนเส้นทางที่รองรับและไม่ใช่ auto OpenClaw จะจับคู่ระดับ thinking ที่เลือกไว้กับ
เพย์โหลด reasoning ของพร็อกซี OpenRouter คำใบ้โมเดลที่ไม่รองรับและ
openrouter/auto จะข้ามการฉีด reasoning นั้น Hunter Alpha ยังข้าม
proxy reasoning สำหรับการอ้างอิงโมเดลที่กำหนดค่าไว้แต่ล้าสมัยด้วย เพราะ OpenRouter อาจ
คืนข้อความคำตอบสุดท้ายในฟิลด์ reasoning สำหรับเส้นทางที่เลิกใช้แล้วนั้น
การเล่นซ้ำ reasoning ของ DeepSeek V4
บนเส้นทาง OpenRouter ที่ตรวจสอบแล้ว openrouter/deepseek/deepseek-v4-flash และ
openrouter/deepseek/deepseek-v4-pro จะเติม reasoning_content ที่ขาดหายไปใน
เทิร์น assistant ที่เล่นซ้ำ เพื่อให้บทสนทนา thinking/tool คงรูปแบบการติดตามผลที่
DeepSeek V4 ต้องการ OpenClaw ส่งค่า reasoning_effort ที่ OpenRouter รองรับ
สำหรับเส้นทางเหล่านี้; xhigh คือระดับสูงสุดที่ประกาศไว้ และการแทนที่ max
ที่ล้าสมัยจะถูกแมปเป็น xhigh
การจัดรูปคำขอเฉพาะ OpenAI
OpenRouter ยังคงทำงานผ่านเส้นทางแบบพร็อกซีที่เข้ากันได้กับ OpenAI ดังนั้น
การจัดรูปคำขอเฉพาะ OpenAI แบบเนทีฟ เช่น serviceTier, Responses store,
เพย์โหลดที่เข้ากันได้กับ reasoning ของ OpenAI และคำใบ้ prompt-cache จะไม่ถูกส่งต่อ
เส้นทางที่รองรับด้วย Gemini
การอ้างอิง OpenRouter ที่รองรับด้วย Gemini จะยังอยู่บนเส้นทาง proxy-Gemini: OpenClaw คง การทำความสะอาดลายเซ็นความคิดของ Gemini ไว้ที่นั่น แต่จะไม่เปิดใช้การตรวจสอบการเล่นซ้ำ Gemini แบบเนทีฟหรือการเขียน bootstrap ใหม่
เมทาดาทาการกำหนดเส้นทางผู้ให้บริการ
OpenRouter รองรับอ็อบเจกต์คำขอ provider สำหรับการกำหนดเส้นทางของผู้ให้บริการเบื้องหลัง
กำหนดค่านโยบายเริ่มต้นสำหรับคำขอโมเดลข้อความ OpenRouter ทั้งหมด
ด้วย models.providers.openrouter.params.provider:
{ models: { providers: { openrouter: { params: { provider: { sort: "latency", require_parameters: true, data_collection: "deny", }, }, }, }, },}OpenClaw ส่งต่ออ็อบเจกต์นั้นไปยัง OpenRouter เป็นเพย์โหลดคำขอ provider
ใช้ฟิลด์ snake_case ตามที่ OpenRouter จัดทำเอกสารไว้ รวมถึง sort,
only, ignore, order, allow_fallbacks, require_parameters,
data_collection, quantizations, max_price, preferred_max_latency,
preferred_min_throughput, zdr และ enforce_distillable_text
พารามิเตอร์รายโมเดลยังคงแทนที่อ็อบเจกต์การกำหนดเส้นทางระดับผู้ให้บริการ:
{ agents: { defaults: { models: { "openrouter/anthropic/claude-sonnet-4-6": { params: { provider: { order: ["anthropic"], allow_fallbacks: false, }, }, }, }, }, },}ข้อนี้มีผลเฉพาะบนเส้นทาง chat-completions ของ OpenRouter เท่านั้น เส้นทาง Anthropic, Google, OpenAI หรือผู้ให้บริการแบบกำหนดเองโดยตรงจะไม่สนใจพารามิเตอร์การกำหนดเส้นทาง OpenRouter