چت VS Code با یوتاپن — Custom Endpoint و کلید خودت
افزودن یوتاپن به چت VS Code با provider به نام Custom Endpoint: فایل chatLanguageModels.json، سقف توکن ورودی و خروجی و مدل ارزان برای کارهای جانبی.
بهروزرسانی: ۳۱ شهریور ۱۴۰۵
چت VS Code (همان پنل Copilot Chat) از نسخههای اخیر یک provider به نام Custom Endpoint دارد که هر سرویس سازگار با Chat Completions را میپذیرد — از جمله یوتاپن. جالب اینکه برای مدلهای BYOK به اشتراک Copilot هم نیاز نداری. این صفحه با مستندات رسمی VS Code (نسخهٔ سند: شهریور ۱۴۰۵) بررسی شده است.
افزودن مدل
۱. در پنل چت، از انتخابگر مدل گزینهٔ Manage Language Models را بزن (یا از Command Palette دستور Chat: Manage Language Models).
۲. Add Models ← Custom Endpoint.
۳. یک نام گروه (مثلاً uttapen)، نام نمایشی و کلید sk-up-… بده (داشبورد ← کلیدها).
۴. نوع API را Chat Completions انتخاب کن.
۵. VS Code فایل chatLanguageModels.json را باز میکند؛ مدلها را اینطور بنویس:
[
{
"name": "uttapen",
"vendor": "customendpoint",
"apiKey": "${input:uttapenApiKey}",
"apiType": "chat-completions",
"models": [
{
"id": "anthropic/claude-sonnet-5",
"name": "Claude Sonnet 5",
"url": "https://api.uttapen.ir/v1/chat/completions",
"toolCalling": true,
"vision": true,
"maxInputTokens": 184000,
"maxOutputTokens": 16000
},
{
"id": "openai/gpt-5-nano",
"name": "GPT-5 nano",
"url": "https://api.uttapen.ir/v1/chat/completions",
"toolCalling": true,
"vision": false,
"maxInputTokens": 120000,
"maxOutputTokens": 8000
}
]
}
]
نکتهها:
urlرا کامل و با مسیر/chat/completionsبنویس تا VS Code مجبور به حدسزدن مسیر نشود.apiTypeرا رویchat-completionsبگذار؛ مقدارهایresponsesوmessagesروی یوتاپن جواب نمیدهند.- فیلد
urlرا در سطح provider ننویس. اگر بنویسی، VS Code فهرست مدل را خودش از سرویس میگیرد و هر ۴۰۰+ مدل ما در انتخابگر ظاهر میشود. مدلهای موردنیازت را صریح فهرست کن. maxInputTokensوmaxOutputTokensروی هم context مدل را تعریف میکنند و جمعشان نباید از context واقعی مدل بیشتر باشد؛ عدد هر مدل در فهرست مدلها است.maxOutputTokensهمان سقفی است که ما برایش رزرو میکنیم، پس بیدلیل بزرگش نکن.- مدلی که
toolCalling: trueندارد در حالت agent دیده نمیشود.
مدل کارهای جانبی
VS Code برای عنوان گفتگو، پیام commit، عنوان و توضیح pull request و تشخیص نیت، مدلهای جداگانهای صدا میزند. اگر بدون حساب GitHub از BYOK استفاده میکنی، اینها تا وقتی مدل مشخص نکنی کار نمیکنند. دو تنظیم chat.utilityModel و chat.utilitySmallModel را از Settings باز کن و مدل ارزان یوتاپن (مثلاً openai/gpt-5-nano) را برایشان انتخاب کن. تنظیم chat.byokUtilityModelDefault هم مشخص میکند وقتی مدل اصلی BYOK است، کارهای جانبی روی چه مدلی بروند.
چه چیزی با BYOK کار نمیکند
پیشنهاد درونخطی کد (inline suggestions)، جستجوی معنایی و هر چیزی که به embeddings وابسته است به سرویس Copilot نیاز دارد و با کلید یوتاپن کار نمیکند. چت و حالت agent کامل کار میکنند. اگر حساب کاری Copilot Business یا Enterprise داری، ادمین باید سیاست «Bring Your Own Language Model Key» را فعال کرده باشد.
عیبیابی
| خطا | علت | راهحل |
|---|---|---|
401 invalid_api_key | کلید اشتباه یا لغوشده | کلید تازه بساز و دوباره وارد کن |
404 model_not_found | id با شناسهٔ واقعی مدل فرق دارد | از /models کپی کن (پیام 404 در uttapen.suggestions نزدیکترین شناسههای محتمل را هم پیشنهاد میدهد) |
404 not_found | apiType روی responses یا messages است، یا url ناقص | chat-completions و آدرس کامل بگذار |
402 insufficient_balance | موجودی کمتر از رزرو لازم | شارژ کن یا maxOutputTokens را کم کن |
429 | سقف نرخ یا سقف ماهانهٔ کلید (محدودیت نرخ) | صبر یا افزایش سقف |
| مدل در انتخابگر نیست | toolCalling نیامده یا VS Code تازهسازی نشده | فیلد را اضافه کن و VS Code را ریاستارت کن |
اگر موجودی کفاف کل maxOutputTokens را ندهد، یوتاپن سقف را تا اندازهٔ موجودی پایین میآورد (کف ۱٬۰۲۴ توکن) و عدد نهایی را در هدر X-Uttapen-Max-Tokens میگذارد؛ در این حالت پاسخ ممکن است نیمهکاره بماند. 402 فقط وقتی است که همان کف هم نگنجد.
ابزارهای دیگر در یکپارچهسازی و کدهای خطا در خطاها.
با شماره موبایل ثبتنام کن، کیف پول را از ۱۰۰٬۰۰۰ تومان شارژ کن و کلید بساز. مدلهای رایگان بدون شارژ هم کار میکنند — تا ۵۰ درخواست در روز. ساخت کلید API ←