Providers

Suy luận

inferrs có thể phục vụ các mô hình cục bộ phía sau API /v1 tương thích với OpenAI. OpenClaw hoạt động với inferrs thông qua đường dẫn openai-completions chung.

Thuộc tính Giá trị
ID nhà cung cấp inferrs (tùy chỉnh; cấu hình trong models.providers.inferrs)
Plugin không có — inferrs không phải là Plugin nhà cung cấp được đóng gói kèm OpenClaw
Biến môi trường xác thực Tùy chọn. Bất kỳ giá trị nào cũng hoạt động nếu máy chủ inferrs của bạn không có xác thực
API Tương thích với OpenAI (openai-completions)
URL cơ sở đề xuất http://127.0.0.1:8080/v1 (hoặc nơi máy chủ inferrs của bạn đang chạy)

Bắt đầu

  • Khởi động inferrs với một mô hình

    inferrs serve google/gemma-4-E2B-it \
      --host 127.0.0.1 \
      --port 8080 \
      --device metal
    
  • Xác minh máy chủ có thể truy cập được

    curl http://127.0.0.1:8080/health
    curl http://127.0.0.1:8080/v1/models
    
  • Thêm một mục nhà cung cấp OpenClaw

    Thêm một mục nhà cung cấp rõ ràng và trỏ mô hình mặc định của bạn tới mục đó. Xem ví dụ cấu hình đầy đủ bên dưới.

  • Ví dụ cấu hình đầy đủ

    Ví dụ này sử dụng Gemma 4 trên một máy chủ inferrs cục bộ.

    {
      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,
                },
              },
            ],
          },
        },
      },
    }
    

    Cấu hình nâng cao

    Vì sao requiresStringContent quan trọng

    Một số tuyến Chat Completions của inferrs chỉ chấp nhận messages[].content dạng chuỗi, không chấp nhận mảng phần nội dung có cấu trúc.

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw sẽ làm phẳng các phần nội dung chỉ gồm văn bản thành chuỗi thuần trước khi gửi yêu cầu.

    Lưu ý về Gemma và schema công cụ

    Một số tổ hợp inferrs + Gemma hiện tại chấp nhận các yêu cầu /v1/chat/completions trực tiếp nhỏ nhưng vẫn thất bại trên các lượt đầy đủ của agent-runtime OpenClaw.

    Nếu điều đó xảy ra, hãy thử cách này trước:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    Cách này tắt bề mặt schema công cụ của OpenClaw cho mô hình và có thể giảm áp lực prompt lên các hậu tuyến cục bộ nghiêm ngặt hơn.

    Nếu các yêu cầu trực tiếp rất nhỏ vẫn hoạt động nhưng các lượt agent OpenClaw bình thường tiếp tục gặp sự cố bên trong inferrs, vấn đề còn lại thường là hành vi của mô hình/máy chủ thượng nguồn chứ không phải tầng vận chuyển của OpenClaw.

    Kiểm thử khói thủ công

    Sau khi cấu hình, hãy kiểm thử cả hai tầng:

    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
    

    Nếu lệnh đầu tiên hoạt động nhưng lệnh thứ hai thất bại, hãy xem phần khắc phục sự cố bên dưới.

    Hành vi kiểu proxy

    inferrs được xem là một hậu tuyến /v1 kiểu proxy tương thích với OpenAI, không phải một điểm cuối OpenAI nguyên bản.

    • Định hình yêu cầu chỉ dành riêng cho OpenAI nguyên bản không áp dụng ở đây
    • Không có service_tier, không có Responses store, không có gợi ý bộ nhớ đệm prompt và không có định hình payload tương thích reasoning của OpenAI
    • Các header ghi nhận nguồn ẩn của OpenClaw (originator, version, User-Agent) không được chèn vào các URL cơ sở inferrs tùy chỉnh

    Khắc phục sự cố

    curl /v1/models thất bại

    inferrs chưa chạy, không thể truy cập được hoặc không được bind tới host/port mong đợi. Hãy bảo đảm máy chủ đã được khởi động và đang lắng nghe trên địa chỉ bạn đã cấu hình.

    messages[].content mong đợi một chuỗi

    Đặt compat.requiresStringContent: true trong mục mô hình. Xem phần requiresStringContent ở trên để biết chi tiết.

    Các lệnh gọi trực tiếp /v1/chat/completions thành công nhưng openclaw infer model run thất bại

    Hãy thử đặt compat.supportsTools: false để tắt bề mặt schema công cụ. Xem lưu ý về schema công cụ Gemma ở trên.

    inferrs vẫn gặp sự cố trên các lượt agent lớn hơn

    Nếu OpenClaw không còn nhận lỗi schema nhưng inferrs vẫn gặp sự cố trên các lượt agent lớn hơn, hãy xem đó là một hạn chế thượng nguồn của inferrs hoặc mô hình. Giảm áp lực prompt hoặc chuyển sang một hậu tuyến hay mô hình cục bộ khác.

    Liên quan