Providers

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

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

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

شروع به کار

  • Start inferrs with a model

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

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

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

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

    این نمونه از 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,
                },
              },
            ],
          },
        },
      },
    }
    

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

    Why requiresStringContent matters

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

    compat: {
      requiresStringContent: true
    }
    

    OpenClaw قبل از ارسال درخواست، بخش‌های محتوای کاملاً متنی را به رشته‌های ساده تبدیل می‌کند.

    Gemma and tool-schema caveat

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

    اگر این اتفاق افتاد، ابتدا این را امتحان کنید:

    compat: {
      requiresStringContent: true,
      supportsTools: false
    }
    

    این کار سطح طرح‌وارهٔ ابزار OpenClaw را برای مدل غیرفعال می‌کند و می‌تواند فشار پرامپت را روی بک‌اندهای محلی سخت‌گیرتر کاهش دهد.

    اگر درخواست‌های مستقیم کوچک همچنان کار می‌کنند اما نوبت‌های عادی عامل OpenClaw همچنان داخل inferrs خراب می‌شوند، مشکل باقی‌مانده معمولاً به رفتار مدل/سرور بالادستی مربوط است، نه لایهٔ انتقال OpenClaw.

    Manual smoke test

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

    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
    

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

    Proxy-style behavior

    inferrs به‌عنوان یک بک‌اند /v1 سازگار با OpenAI و به سبک پراکسی در نظر گرفته می‌شود، نه یک نقطهٔ پایانی بومی OpenAI.

    • شکل‌دهی درخواست‌های فقط مخصوص OpenAI بومی اینجا اعمال نمی‌شود
    • نه service_tier، نه Responses store، نه راهنمایی‌های کش پرامپت، و نه شکل‌دهی بارسنج سازگاری استدلال OpenAI وجود دارد
    • سرآیندهای انتساب پنهان OpenClaw (originator، version، User-Agent) روی URLهای پایهٔ سفارشی inferrs تزریق نمی‌شوند

    عیب‌یابی

    curl /v1/models fails

    inferrs اجرا نیست، در دسترس نیست، یا به میزبان/درگاه مورد انتظار متصل نشده است. مطمئن شوید سرور شروع شده و روی نشانی‌ای که پیکربندی کرده‌اید در حال گوش دادن است.

    messages[].content expected a string

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

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

    برای غیرفعال کردن سطح طرح‌وارهٔ ابزار، تنظیم compat.supportsTools: false را امتحان کنید. نکتهٔ احتیاطی طرح‌وارهٔ ابزار Gemma در بالا را ببینید.

    inferrs still crashes on larger agent turns

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

    مرتبط