Providers
OpenRouter
OpenRouter กำหนดเส้นทางคำขอไปยังโมเดลจำนวนมากผ่าน API และคีย์เดียว โดยเข้ากันได้กับ
OpenAI ดังนั้น OpenClaw จึงสื่อสารกับ OpenRouter ผ่านการรับส่งข้อมูลรูปแบบ
openai-completions แบบเดียวกับที่ใช้กับผู้ให้บริการพร็อกซีรายอื่น
เริ่มต้นใช้งาน
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/moonshotai/kimi-k2.6 |
Kimi K2.6 ผ่าน MoonshotAI |
openrouter/moonshotai/kimi-k2.5 |
Kimi K2.5 ผ่าน MoonshotAI |
การอ้างอิง openrouter/<provider>/<model> อื่นใด รวมถึง
openrouter/openrouter/fusion (ดู เราเตอร์ Fusion) จะได้รับการแก้ไข
แบบไดนามิกโดยเทียบกับแค็ตตาล็อกโมเดลแบบสดของ OpenRouter
การสร้างรูปภาพ
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 สำหรับ
โมเดลที่ทำงานช้ากว่า โดยค่า 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 ส่งงานแปลงข้อความเป็นวิดีโอและรูปภาพเป็นวิดีโอ ตรวจสอบสถานะจาก
polling_url ที่ได้รับกลับมา และดาวน์โหลดวิดีโอที่เสร็จสมบูรณ์จาก
unsigned_urls ของ OpenRouter หรือปลายทางเนื้อหาของงาน รูปภาพอ้างอิงจะใช้เป็น
รูปภาพเฟรมแรก/สุดท้ายโดยค่าเริ่มต้น ส่วนรูปภาพที่ติดแท็ก reference_image
จะถูกส่งเป็นข้อมูลอ้างอิงขาเข้าแทน ค่าเริ่มต้น google/veo-3.1-fast ที่มาพร้อมระบบ
รองรับระยะเวลา 4/6/8 วินาที ความละเอียด 720P/1080P และอัตราส่วนภาพ
16:9/9:16 ไม่รองรับการแปลงวิดีโอเป็นวิดีโอ เนื่องจาก 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=... ที่ใช้ร่วมกัน เสียงแบบสตรีม การเก็บรักษาบทถอดเสียง
และกรอบเหตุการณ์ SSE ที่สร้างขึ้นจะถูกจำกัดด้วย agents.defaults.mediaMaxMb
(ขีดจำกัดเสียงเริ่มต้นคือ 16 MB)
การแปลงข้อความเป็นเสียงพูด
OpenRouter สามารถทำหน้าที่เป็นผู้ให้บริการ TTS ผ่านปลายทางที่เข้ากันได้กับ OpenAI
/audio/speech
{ 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 ใช้งานได้ทั้งกับการเริ่มต้นใช้งานด้วย 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"
ในการทำงานของเอเจนต์/แชตตามปกติเพื่อพยายามบังคับใช้ Fusion เนื่องจากการทำงานของ OpenClaw อาจมี
ข้อกำหนดเครื่องมือของตัวเอง และการบังคับเลือกเครื่องมือในระดับบนสุดอาจเลือกหนึ่งใน
เครื่องมือเหล่านั้นแทนเราเตอร์ Fusion เมื่อมีการกำหนดค่า Plugin Fusion นี้
OpenClaw จะเพิ่มหมายเหตุในพรอมต์ระบบที่ผ่านการปรับให้ปลอดภัย โดยระบุรายการโมเดลวิเคราะห์
และโมเดลตัดสินที่กำหนดค่าไว้ เพื่อให้เอเจนต์สามารถตอบคำถามเกี่ยวกับแผง Fusion
ของตนเองได้ ฟิลด์ extraBody อื่นจะไม่ถูกคัดลอกไปยังพรอมต์
Fusion ช้ากว่าโดยการออกแบบ เนื่องจาก OpenRouter กระจายพรอมต์ไปยัง โมเดลวิเคราะห์หลายโมเดล จากนั้นจึงดำเนินขั้นตอนตัดสิน/สังเคราะห์ ดังนั้นเวลาแฝงจึงสูงกว่า คำขอโดยตรงไปยังโมเดลเดียว ใช้ Fusion สำหรับคำตอบที่ผ่านการพิจารณาอย่างรอบคอบและมีคุณภาพสูง หรือเส้นทางการยกระดับ ไม่ใช่เป็นค่าเริ่มต้นสำหรับงานที่ไวต่อเวลาแฝง ควรใช้แผงโมเดลขนาดเล็กและ เลือกโมเดลวิเคราะห์/ตัดสินที่เร็วกว่าเพื่อให้ได้รับคำตอบรวดเร็วยิ่งขึ้น
ทดสอบการอ้างอิงที่กำหนดค่าด้วยการเรียกภายในเครื่องแบบครั้งเดียว:
openclaw infer model run --local \ --model openrouter/openrouter/fusion \ --prompt "Reply with exactly: FUSION_OK" \ --jsonการยืนยันตัวตนและส่วนหัว
OpenRouter ใช้โทเค็น Bearer จากคีย์ API ของคุณ OAuth ของ OpenRouter เป็นขั้นตอน
การเข้าสู่ระบบแบบ PKCE ที่ออกคีย์ API ของ OpenRouter ดังนั้น OpenClaw จึงจัดเก็บผลลัพธ์ไว้ใน
โปรไฟล์การยืนยันตัวตนด้วยคีย์ API openrouter:default เดียวกับที่ใช้ในการตั้งค่า
คีย์ API ด้วยตนเอง
หากต้องการเข้าสู่ระบบหรือหมุนเวียนคีย์ที่จัดเก็บไว้ในการติดตั้งปัจจุบัน โดยไม่ต้องเรียกใช้ ขั้นตอนเริ่มต้นใช้งานทั้งหมดอีกครั้ง:
openclaw models auth login --provider openrouter --method oauthopenclaw models auth login --provider openrouter --method api-keyสำหรับคำขอ 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 เป็นคุณสมบัติที่ต้องเลือกเปิดใช้ เปิดใช้แยกตามแต่ละโมเดล:
{ 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) รวมถึง responseCacheTtl /
response_cache_ttl ที่ไม่มีส่วนต่อท้าย Seconds
คุณสมบัตินี้แยกจากการแคชพรอมต์ของผู้ให้บริการและเครื่องหมาย
cache_control ของ Anthropic ใน OpenRouter โดยมีผลเฉพาะกับเส้นทาง
openrouter.ai ที่ผ่านการตรวจสอบเท่านั้น ไม่รวม URL ฐานของพร็อกซีแบบกำหนดเอง
เครื่องหมายแคชของ Anthropic
บนเส้นทาง OpenRouter ที่ผ่านการตรวจสอบ การอ้างอิงโมเดล Anthropic จะคง
เครื่องหมาย cache_control ของ Anthropic ใน OpenRouter ไว้ เพื่อให้สามารถใช้แคชพรอมต์ซ้ำได้ดีขึ้นกับ
บล็อกพรอมต์ระบบ/นักพัฒนา
การเติมข้อความล่วงหน้าสำหรับการให้เหตุผลของ Anthropic
ในเส้นทาง OpenRouter ที่ตรวจสอบแล้ว การอ้างอิงโมเดล Anthropic ที่เปิดใช้การให้เหตุผล จะตัดเทิร์นการเติมข้อความล่วงหน้าของผู้ช่วยที่อยู่ท้ายสุดออกก่อนที่คำขอจะไปถึง OpenRouter เพื่อให้เป็นไปตามข้อกำหนดของ Anthropic ที่กำหนดให้บทสนทนาการให้เหตุผล ต้องจบด้วยเทิร์นของผู้ใช้
การแทรกการคิด / การให้เหตุผล
ในเส้นทางที่รองรับและไม่ใช่ auto OpenClaw จะแมประดับการคิดที่เลือก
ไปยังเพย์โหลดการให้เหตุผลของพร็อกซี OpenRouter ส่วน openrouter/auto และคำใบ้
โมเดลที่ไม่รองรับจะข้ามการแทรกดังกล่าว การอ้างอิง openrouter/hunter-alpha ที่ล้าสมัย
ก็จะข้ามเช่นกัน เนื่องจาก OpenRouter อาจส่งคืนข้อความคำตอบสุดท้ายในฟิลด์การให้เหตุผล
บนเส้นทางที่เลิกใช้งานแล้วนั้น
การเล่นซ้ำการให้เหตุผลของ DeepSeek V4
ในเส้นทาง OpenRouter ที่ตรวจสอบแล้ว openrouter/deepseek/deepseek-v4-flash และ
openrouter/deepseek/deepseek-v4-pro จะเติม reasoning_content ที่ขาดหายไปใน
เทิร์นของผู้ช่วยที่เล่นซ้ำ เพื่อคงรูปแบบการโต้ตอบติดตามผลที่ DeepSeek
V4 กำหนดสำหรับบทสนทนาการคิดและเครื่องมือ OpenClaw จะส่งค่า
reasoning.effort ที่ OpenRouter รองรับสำหรับเส้นทางเหล่านี้ โดย xhigh/max
จะแมปเป็น xhigh และระดับอื่นทั้งหมดที่ไม่ใช่ปิดจะแมปเป็น high
การปรับรูปแบบคำขอเฉพาะ OpenAI
OpenRouter ทำงานผ่านเส้นทางที่เข้ากันได้กับ OpenAI ในรูปแบบพร็อกซี ดังนั้น
การปรับรูปแบบคำขอที่มีเฉพาะใน OpenAI แบบเนทีฟ เช่น serviceTier, store
ของ Responses, เพย์โหลดความเข้ากันได้สำหรับการให้เหตุผลของ OpenAI
และคำใบ้แคชพรอมต์ จะไม่ถูกส่งต่อ
เส้นทางที่มี Gemini เป็นระบบเบื้องหลัง
การอ้างอิง OpenRouter ที่มี Gemini เป็นระบบเบื้องหลังจะยังคงอยู่บนเส้นทางพร็อกซี Gemini: OpenClaw จะคงการทำความสะอาดลายเซ็นความคิดของ Gemini ไว้ในเส้นทางดังกล่าว แต่จะไม่เปิดใช้การตรวจสอบความถูกต้องของการเล่นซ้ำหรือการเขียนบูตสแตรปใหม่ แบบเนทีฟของ Gemini
เมทาดาทาการกำหนดเส้นทางผู้ให้บริการ
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, }, }, }, }, }, },}การตั้งค่านี้ใช้เฉพาะกับเส้นทางการเติมบทสนทนาของ OpenRouter เท่านั้น เส้นทางโดยตรงของ Anthropic, Google, OpenAI หรือผู้ให้บริการแบบกำหนดเองจะไม่ใช้พารามิเตอร์ การกำหนดเส้นทางของ OpenRouter