Providers

อนุมาน

inferrs สามารถให้บริการโมเดลภายในเครื่องอยู่เบื้องหลัง API /v1 ที่เข้ากันได้กับ OpenAI OpenClaw ทำงานกับ inferrs ผ่านเส้นทาง openai-completions ทั่วไป

คุณสมบัติ ค่า
รหัสผู้ให้บริการ inferrs (กำหนดเอง; กำหนดค่าภายใต้ models.providers.inferrs)
Plugin ไม่มี — inferrs ไม่ใช่ 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/health
    curl 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,
                },
              },
            ],
          },
        },
      },
    }
    

    การกำหนดค่าขั้นสูง

    เหตุใด requiresStringContent จึงสำคัญ

    เส้นทาง Chat Completions บางส่วนของ inferrs ยอมรับเฉพาะ messages[].content ที่เป็นสตริง ไม่ใช่อาร์เรย์ส่วนเนื้อหาแบบมีโครงสร้าง

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw จะแปลงส่วนเนื้อหาข้อความล้วนให้เป็นสตริงธรรมดาก่อนส่ง คำขอ

    ข้อควรระวังเกี่ยวกับ Gemma และ schema เครื่องมือ

    การผสมผสาน inferrs + Gemma บางชุดในปัจจุบันยอมรับคำขอ /v1/chat/completions ขนาดเล็กโดยตรง แต่ยังคงล้มเหลวในเทิร์น runtime ของเอเจนต์ OpenClaw แบบเต็ม

    หากเกิดขึ้น ให้ลองวิธีนี้ก่อน:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    การตั้งค่านี้จะปิดใช้พื้นผิว schema เครื่องมือของ OpenClaw สำหรับโมเดล และสามารถลดแรงกดดันของพรอมป์ ต่อแบ็กเอนด์ภายในเครื่องที่เข้มงวดกว่าได้

    หากคำขอขนาดเล็กโดยตรงยังทำงานได้ แต่เทิร์นเอเจนต์ OpenClaw ปกติยังคง ขัดข้องภายใน inferrs ปัญหาที่เหลือมักเป็นพฤติกรรมของโมเดล/เซิร์ฟเวอร์ ต้นทาง มากกว่าชั้นการขนส่งของ OpenClaw

    การทดสอบ smoke แบบแมนนวล

    เมื่อกำหนดค่าแล้ว ให้ทดสอบทั้งสองชั้น:

    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 จะถูกมองเป็นแบ็กเอนด์ /v1 ที่เข้ากันได้กับ OpenAI แบบพร็อกซี ไม่ใช่ ปลายทาง OpenAI แบบเนทีฟ

    • การปรับรูปแบบคำขอเฉพาะ OpenAI แบบเนทีฟไม่มีผลที่นี่
    • ไม่มี service_tier, ไม่มี Responses store, ไม่มีคำใบ้ prompt-cache และไม่มี การปรับรูปแบบเพย์โหลดสำหรับความเข้ากันได้กับการให้เหตุผลของ OpenAI
    • ส่วนหัวการระบุแหล่งที่มาของ OpenClaw ที่ซ่อนอยู่ (originator, version, User-Agent) จะไม่ถูกแทรกใน URL ฐาน inferrs แบบกำหนดเอง

    การแก้ไขปัญหา

    curl /v1/models ล้มเหลว

    inferrs ไม่ได้ทำงานอยู่ เข้าถึงไม่ได้ หรือไม่ได้ผูกกับ โฮสต์/พอร์ตที่คาดไว้ ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์เริ่มทำงานแล้วและกำลังฟังอยู่ที่ที่อยู่ที่คุณ กำหนดค่าไว้

    messages[].content คาดว่าจะเป็นสตริง

    ตั้งค่า compat.requiresStringContent: true ในรายการโมเดล ดูรายละเอียดในส่วน requiresStringContent ด้านบน

    การเรียก /v1/chat/completions โดยตรงผ่าน แต่ openclaw infer model run ล้มเหลว

    ลองตั้งค่า compat.supportsTools: false เพื่อปิดใช้พื้นผิว schema เครื่องมือ ดูข้อควรระวังเกี่ยวกับ schema เครื่องมือของ Gemma ด้านบน

    inferrs ยังขัดข้องเมื่อเทิร์นเอเจนต์ใหญ่ขึ้น

    หาก OpenClaw ไม่พบข้อผิดพลาด schema แล้ว แต่ inferrs ยังขัดข้องเมื่อเทิร์น เอเจนต์ใหญ่ขึ้น ให้ถือว่าเป็นข้อจำกัดของ inferrs ต้นทางหรือโมเดล ลด แรงกดดันของพรอมป์ หรือเปลี่ยนไปใช้แบ็กเอนด์หรือโมเดลภายในเครื่องอื่น

    ที่เกี่ยวข้อง