Providers
อนุมาน
inferrs ให้บริการโมเดลภายในเครื่องผ่าน API /v1 ที่เข้ากันได้กับ OpenAI โดย OpenClaw สื่อสารกับระบบนี้ผ่านอะแดปเตอร์ทั่วไป openai-completions
| คุณสมบัติ | ค่า |
|---|---|
| รหัสผู้ให้บริการ | inferrs (กำหนดเอง; กำหนดค่าภายใต้ models.providers.inferrs) |
| Plugin | ไม่มี — ไม่ใช่ Plugin ผู้ให้บริการที่รวมมากับ OpenClaw |
| ตัวแปรสภาพแวดล้อมสำหรับการยืนยันตัวตน | ไม่จำเป็น; ใช้ค่าใดก็ได้หากเซิร์ฟเวอร์ inferrs ของคุณไม่มีการยืนยันตัวตน |
| API | เข้ากันได้กับ OpenAI (openai-completions) |
| URL ฐานที่แนะนำ | http://127.0.0.1:8080/v1 (หรือตำแหน่งใดก็ตามที่เซิร์ฟเวอร์ inferrs ของคุณรับฟังอยู่) |
เริ่มต้นใช้งาน
เริ่ม inferrs พร้อมโมเดล
inferrs serve google/gemma-4-E2B-it \ --host 127.0.0.1 \ --port 8080 \ --device metalตรวจสอบว่าสามารถเข้าถึงเซิร์ฟเวอร์ได้
curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/modelsเพิ่มรายการผู้ให้บริการ OpenClaw
เพิ่มรายการผู้ให้บริการอย่างชัดเจนและกำหนดให้โมเดลเริ่มต้นของคุณชี้ไปยังรายการนั้น ดูตัวอย่างการกำหนดค่าด้านล่าง
ตัวอย่างการกำหนดค่าแบบเต็ม
Gemma 4 บนเซิร์ฟเวอร์ inferrs ภายในเครื่อง:
{ agents: { defaults: { model: { primary: "inferrs/google/gemma-4-E2B-it" }, models: { "inferrs/google/gemma-4-E2B-it": { alias: "Gemma 4 (inferrs)", }, }, }, }, models: { mode: "merge", providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}การเริ่มทำงานตามความต้องการ
OpenClaw สามารถเริ่ม inferrs ได้เองเฉพาะเมื่อเลือกโมเดล inferrs/... เท่านั้น เพิ่ม localService ลงในรายการผู้ให้บริการเดียวกัน:
{ models: { providers: { inferrs: { baseUrl: "http://127.0.0.1:8080/v1", apiKey: "inferrs-local", api: "openai-completions", timeoutSeconds: 300, localService: { command: "/opt/homebrew/bin/inferrs", args: [ "serve", "google/gemma-4-E2B-it", "--host", "127.0.0.1", "--port", "8080", "--device", "metal", ], healthUrl: "http://127.0.0.1:8080/v1/models", readyTimeoutMs: 180000, idleStopMs: 0, }, models: [ { id: "google/gemma-4-E2B-it", name: "Gemma 4 E2B (inferrs)", reasoning: false, input: ["text"], cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 }, contextWindow: 131072, maxTokens: 4096, compat: { requiresStringContent: true, }, }, ], }, }, },}command ต้องเป็นพาธแบบสัมบูรณ์ เรียกใช้ which inferrs บนโฮสต์ Gateway แล้วใช้พาธนั้น สำหรับรายละเอียดฟิลด์ทั้งหมด โปรดดู บริการโมเดลภายในเครื่อง
การกำหนดค่าขั้นสูง
เหตุผลที่ requiresStringContent มีความสำคัญ
เส้นทาง Chat Completions บางรายการของ inferrs ยอมรับเฉพาะ messages[].content ที่เป็นสตริงเท่านั้น ไม่ยอมรับอาร์เรย์ส่วนเนื้อหาแบบมีโครงสร้าง
ข้อควรระวังเกี่ยวกับ Gemma และสคีมาเครื่องมือ
การใช้งาน inferrs ร่วมกับ Gemma บางรูปแบบยอมรับคำขอโดยตรงขนาดเล็กไปยัง /v1/chat/completions แต่ล้มเหลวเมื่อประมวลผลรอบการทำงานเต็มรูปแบบของรันไทม์เอเจนต์ OpenClaw ให้ลองปิดพื้นผิวสคีมาเครื่องมือก่อน:
compat: { requiresStringContent: true, supportsTools: false}วิธีนี้ช่วยลดภาระพรอมต์บนแบ็กเอนด์ภายในเครื่องที่เข้มงวดกว่า หากคำขอโดยตรงขนาดเล็กยังทำงานได้ แต่รอบการทำงานปกติของเอเจนต์ OpenClaw ยังคงทำให้ inferrs ขัดข้อง ให้ถือว่าเป็นข้อจำกัดของโมเดลหรือเซิร์ฟเวอร์ต้นทาง ไม่ใช่ปัญหาด้านการรับส่งข้อมูลของ OpenClaw
การทดสอบเบื้องต้นด้วยตนเอง
ทดสอบทั้งสองชั้นหลังจากกำหนดค่าแล้ว:
curl http://127.0.0.1:8080/v1/chat/completions \ -H 'content-type: application/json' \ -d '{"model":"google/gemma-4-E2B-it","messages":[{"role":"user","content":"What is 2 + 2?"}],"stream":false}'openclaw infer model run \ --model inferrs/google/gemma-4-E2B-it \ --prompt "What is 2 + 2? Reply with one short sentence." \ --jsonหากคำสั่งแรกทำงานได้แต่คำสั่งที่สองล้มเหลว โปรดดูการแก้ไขปัญหาด้านล่าง
ลักษณะการทำงานแบบพร็อกซี
เนื่องจาก inferrs ใช้อะแดปเตอร์ทั่วไป openai-completions (ไม่ใช่ openai-responses) จึงไม่มีการปรับรูปแบบคำขอที่ใช้เฉพาะ OpenAI แบบเนทีฟ: ระบบจะไม่ส่ง service_tier, store ของ Responses, คำแนะนำแคชพรอมต์ หรือการปรับรูปแบบเพย์โหลดเพื่อความเข้ากันได้กับการให้เหตุผลของ OpenAI
การแก้ไขปัญหา
curl /v1/models ล้มเหลว
inferrs ไม่ได้ทำงาน ไม่สามารถเข้าถึงได้ หรือไม่ได้ผูกกับโฮสต์/พอร์ตที่คุณกำหนดค่าไว้ ตรวจสอบว่าเซิร์ฟเวอร์เริ่มทำงานแล้วและกำลังรับฟังบนที่อยู่นั้น
messages[].content ต้องเป็นสตริง
ตั้งค่า compat.requiresStringContent: true ในรายการโมเดล (ดูด้านบน)
การเรียก /v1/chat/completions โดยตรงสำเร็จ แต่ openclaw infer model run ล้มเหลว
ตั้งค่า compat.supportsTools: false เพื่อปิดพื้นผิวสคีมาเครื่องมือ (ดูข้อควรระวังเกี่ยวกับ Gemma ด้านบน)
inferrs ยังคงขัดข้องในรอบการทำงานขนาดใหญ่ของเอเจนต์
หากข้อผิดพลาดของสคีมาหายไปแล้ว แต่ inferrs ยังคงขัดข้องในรอบการทำงานขนาดใหญ่ของเอเจนต์ ให้ถือว่าเป็นข้อจำกัดของ inferrs หรือโมเดลต้นทาง ลดภาระพรอมต์หรือเปลี่ยนแบ็กเอนด์/โมเดล
เนื้อหาที่เกี่ยวข้อง
การใช้งาน OpenClaw กับเซิร์ฟเวอร์โมเดลภายในเครื่อง
การเริ่มเซิร์ฟเวอร์โมเดลภายในเครื่องตามความต้องการสำหรับผู้ให้บริการที่กำหนดค่าไว้
การแก้ไขข้อบกพร่องของแบ็กเอนด์ภายในเครื่องที่เข้ากันได้กับ OpenAI ซึ่งผ่านการตรวจสอบแต่ล้มเหลวเมื่อเรียกใช้เอเจนต์
ภาพรวมของผู้ให้บริการทั้งหมด การอ้างอิงโมเดล และลักษณะการทำงานเมื่อสลับไปใช้ระบบสำรอง