Zed با یوتاپن — openai_compatible در settings.json

افزودن یوتاپن به Zed با بلوک openai_compatible در settings.json: فهرست مدل‌ها، max_output_tokens برای رزرو کوچک و مدل ارزان برای پیام commit و خلاصه.

به‌روزرسانی: ۳۱ شهریور ۱۴۰۵

ادیتور Zed بخش «OpenAI API Compatible» دارد که دقیقاً برای همین کار است. این صفحه با مستندات نسخهٔ 1.20 بررسی شده است.

افزودن provider

از رابط گرافیکی: Settings ← AI ← LLM Providers ← Add Provider؛ نام، آدرس API، شناسهٔ مدل و اندازهٔ context را می‌پرسد. یا مستقیم در settings.json:

{
  "language_models": {
    "openai_compatible": {
      "uttapen": {
        "api_url": "https://api.uttapen.ir/v1",
        "available_models": [
          {
            "name": "anthropic/claude-sonnet-5",
            "display_name": "Claude Sonnet 5",
            "max_tokens": 200000,
            "max_output_tokens": 8192,
            "capabilities": { "tools": true, "images": true }
          },
          {
            "name": "openai/gpt-5-nano",
            "display_name": "GPT-5 nano",
            "max_tokens": 400000,
            "max_output_tokens": 1024
          }
        ]
      }
    }
  }
}
  • name همان شناسه‌ای است که برای ما فرستاده می‌شود؛ / مشکلی ندارد.
  • max_tokens اندازهٔ context است، نه سقف خروجی. این نام‌گذاری Zed است و اولین جایی است که همه اشتباه می‌کنند.
  • max_output_tokens را حتماً بنویس. اگر ننویسی، Zed هیچ سقف خروجی نمی‌فرستد؛ آن‌وقت رزرو ما بر اساس یک پیش‌فرض بسته می‌شود و اگر مدل بیشتر بنویسد، مبلغ واقعی کامل کم می‌شود و موجودی می‌تواند موقتاً منفی شود (قیمت‌گذاری).
  • capabilities.tools به‌صورت پیش‌فرض روشن است ولی images خاموش؛ برای مدلی که ورودی تصویر دارد آن را روشن کن (Vision).

کلید API

کلید را در settings.json ننویس. یا در همان صفحهٔ provider در Zed واردش کن (در keychain سیستم ذخیره می‌شود)، یا متغیر محیطی بساز: نام provider با حروف بزرگ و خط زیر، به‌علاوهٔ _API_KEY. برای شناسهٔ uttapen می‌شود:

export UTTAPEN_API_KEY="sk-up-..."

مدل‌ها و نقش‌ها

شناسه‌ها را از فهرست مدل‌ها بردار؛ برای کد anthropic/claude-sonnet-5، openai/gpt-5، qwen/qwen3-coder یا deepseek/deepseek-v3.2.

Zed علاوه بر مدل اصلی، برای چند کار جانبی هم مدل می‌گیرد؛ همه زیر کلید agent و به شکل provider و model:

{
  "agent": {
    "default_model": { "provider": "uttapen", "model": "anthropic/claude-sonnet-5" },
    "commit_message_model": { "provider": "uttapen", "model": "openai/gpt-5-nano" },
    "thread_summary_model": { "provider": "uttapen", "model": "openai/gpt-5-nano" }
  }
}

inline_assistant_model، compaction_model و subagent_model هم به همین شکل تنظیم می‌شوند و اگر خالی باشند از default_model استفاده می‌کنند. پیام commit و خلاصهٔ گفتگو کارهای کوچکی‌اند؛ سپردنشان به یک مدل ارزان مثل openai/gpt-5-nano هزینهٔ پس‌زمینه را نزدیک صفر می‌کند.

تکمیل خودکار (edit prediction) در Zed تنظیم جداگانه‌ای دارد و از مسیر /v1/completions استفاده می‌کند؛ اگر سراغش رفتی، حتماً max_output_tokens کوچک بگذار، چون هر بار تایپ‌کردن یک درخواست است.

بررسی اتصال

پنل Agent را باز کن، مدل uttapen را انتخاب کن و یک سؤال کوتاه بپرس؛ بعد درخواست را در داشبورد ← مصرف ببین.

عیب‌یابی

خطاعلت در Zedراه‌حل
401 invalid_api_keyکلید وارد نشده یا نام متغیر محیطی با شناسهٔ provider نمی‌خواندکلید را در UI وارد کن یا UTTAPEN_API_KEY را export کن
404 model_not_foundname با شناسهٔ واقعی فرق دارداز /models کپی کن (پیام 404 در uttapen.suggestions نزدیک‌ترین شناسه‌های محتمل را هم پیشنهاد می‌دهد)
404 not_foundبه‌جای openai_compatible از provider داخلی openai با api_url استفاده شدهبلوک را زیر openai_compatible ببر
402 insufficient_balanceموجودی کمتر از رزرو لازم استشارژ کن و max_output_tokens را کم‌تر بگذار
429سقف نرخ یا سقف ماهانهٔ کلید (محدودیت نرخ)صبر یا افزایش سقف
پاسخ ناتماممدل به max_output_tokens خوردهعدد را بالاتر ببر

وقتی موجودی قابل‌استفاده کل سقف خروجی را پوشش ندهد، یوتاپن سقف را تا اندازهٔ موجودی کم می‌کند (کف ۱٬۰۲۴ توکن) و عدد اعطاشده را در هدر X-Uttapen-Max-Tokens برمی‌گرداند؛ 402 فقط برای حالتی است که همان کف هم ممکن نباشد.

ابزارهای دیگر در یکپارچه‌سازی و کدهای خطا در خطاها.

هنوز کلید API نداری؟

با شماره موبایل ثبت‌نام کن، کیف پول را از ۱۰۰٬۰۰۰ تومان شارژ کن و کلید بساز. مدل‌های رایگان بدون شارژ هم کار می‌کنند — تا ۵۰ درخواست در روز. ساخت کلید API ←