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_found | name با شناسهٔ واقعی فرق دارد | از /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 ←