Providers

استنباط می‌کند

inferrs مدل‌های محلی را پشت یک API سازگار با OpenAI در مسیر /v1 ارائه می‌کند. OpenClaw از طریق آداپتور عمومی openai-completions با آن ارتباط برقرار می‌کند.

ویژگی مقدار
شناسه ارائه‌دهنده inferrs (سفارشی؛ در models.providers.inferrs پیکربندی کنید)
Plugin ندارد — یک Plugin ارائه‌دهنده همراه OpenClaw نیست
متغیر محیطی احراز هویت لازم نیست؛ اگر سرور inferrs شما احراز هویت نداشته باشد، هر مقداری قابل استفاده است
API سازگار با OpenAI (openai-completions)
نشانی پایه پیشنهادی http://127.0.0.1:8080/v1 (یا هر جایی که سرور inferrs شما گوش می‌دهد)

شروع به کار

  • Start inferrs with a model

    bash
    inferrs serve google/gemma-4-E2B-it \  --host 127.0.0.1 \  --port 8080 \  --device metal
  • Verify the server is reachable

    bash
    curl http://127.0.0.1:8080/healthcurl http://127.0.0.1:8080/v1/models
  • Add an OpenClaw provider entry

    یک ورودی صریح برای ارائه‌دهنده اضافه کنید و مدل پیش‌فرض خود را به آن ارجاع دهید. نمونه پیکربندی زیر را ببینید.

  • نمونه کامل پیکربندی

    Gemma 4 روی یک سرور محلی inferrs:

    json5
    {  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 را به همان ورودی ارائه‌دهنده اضافه کنید:

    json5
    {  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 باید یک مسیر مطلق باشد. روی میزبان Gateway دستور which inferrs را اجرا کنید و از همان مسیر استفاده کنید. مرجع کامل فیلدها: سرویس‌های مدل محلی.

    پیکربندی پیشرفته

    Why requiresStringContent matters

    برخی مسیرهای Chat Completions در inferrs فقط مقدار رشته‌ای برای messages[].content می‌پذیرند، نه آرایه‌های ساختاریافته از بخش‌های محتوا.

    Gemma and tool-schema caveat

    برخی ترکیب‌های inferrs و Gemma درخواست‌های مستقیم کوچک به /v1/chat/completions را می‌پذیرند، اما در نوبت‌های کامل زمان اجرای عامل OpenClaw شکست می‌خورند. ابتدا غیرفعال کردن سطح شِمای ابزار را امتحان کنید:

    json5
    compat: {  requiresStringContent: true,  supportsTools: false}

    این کار فشار پرامپت را روی بک‌اندهای محلی سخت‌گیرتر کاهش می‌دهد. اگر درخواست‌های مستقیم کوچک همچنان کار می‌کنند اما نوبت‌های عادی عامل OpenClaw درون inferrs پیوسته از کار می‌افتند، آن را محدودیت بالادستی مدل یا سرور در نظر بگیرید، نه مشکل انتقال در OpenClaw.

    Manual smoke test

    پس از پیکربندی، هر دو لایه را آزمایش کنید:

    bash
    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}'
    bash
    openclaw infer model run \  --model inferrs/google/gemma-4-E2B-it \  --prompt "What is 2 + 2? Reply with one short sentence." \  --json

    اگر دستور نخست کار می‌کند اما دستور دوم شکست می‌خورد، بخش عیب‌یابی زیر را ببینید.

    Proxy-style behavior

    چون inferrs از آداپتور عمومی openai-completions استفاده می‌کند، نه openai-responses، شکل‌دهی درخواست‌های مختص OpenAI بومی هرگز اعمال نمی‌شود: هیچ service_tier، گزینه store مربوط به Responses، راهنمای کش پرامپت یا شکل‌دهی بار سازگاری استدلال OpenAI ارسال نمی‌شود.

    عیب‌یابی

    curl /v1/models fails

    inferrs در حال اجرا نیست، قابل دسترسی نیست یا به میزبان/درگاهی که پیکربندی کرده‌اید متصل نشده است. تأیید کنید سرور راه‌اندازی شده و روی آن نشانی در حال گوش‌دادن است.

    messages[].content expected a string

    در ورودی مدل، compat.requiresStringContent: true را تنظیم کنید (بخش بالا را ببینید).

    Direct /v1/chat/completions calls pass but openclaw infer model run fails

    برای غیرفعال کردن سطح شِمای ابزار، compat.supportsTools: false را تنظیم کنید (هشدار Gemma در بالا را ببینید).

    inferrs still crashes on larger agent turns

    اگر خطاهای شِما برطرف شده‌اند اما inferrs همچنان در نوبت‌های بزرگ‌تر عامل از کار می‌افتد، آن را محدودیت بالادستی inferrs یا مدل در نظر بگیرید. فشار پرامپت را کاهش دهید یا بک‌اند/مدل را تغییر دهید.

    مرتبط

    Was this useful?
    On this page

    On this page