چت 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_foundid با شناسهٔ واقعی مدل فرق دارداز /models کپی کن (پیام 404 در uttapen.suggestions نزدیک‌ترین شناسه‌های محتمل را هم پیشنهاد می‌دهد)
404 not_foundapiType روی responses یا messages است، یا url ناقصchat-completions و آدرس کامل بگذار
402 insufficient_balanceموجودی کمتر از رزرو لازمشارژ کن یا maxOutputTokens را کم کن
429سقف نرخ یا سقف ماهانهٔ کلید (محدودیت نرخ)صبر یا افزایش سقف
مدل در انتخابگر نیستtoolCalling نیامده یا VS Code تازه‌سازی نشدهفیلد را اضافه کن و VS Code را ری‌استارت کن

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

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

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

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