Continue با یوتاپن — config.yaml و خاموش‌کردن Responses API

پیکربندی Continue برای یوتاپن در config.yaml: provider openai با apiBase، خاموش‌کردن Responses API، maxTokens و contextLength و نقش chat و autocomplete.

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

Continue افزونهٔ VS Code و JetBrains است که با provider: openai و یک apiBase سفارشی به یوتاپن وصل می‌شود. توسعهٔ فعال پروژه از تیر ۱۴۰۵ متوقف شده و مخزنش فقط‌خواندنی است، ولی نسخهٔ ۲ همچنان کار می‌کند؛ این صفحه با مستندات و کد همان نسخه بررسی شده است.

فایل config.yaml

فایل ~/.continue/config.yaml:

name: uttapen
version: 0.0.1
schema: v1
models:
  - name: Claude Sonnet 5
    provider: openai
    model: anthropic/claude-sonnet-5
    apiBase: https://api.uttapen.ir/v1
    apiKey: ${{ secrets.UTTAPEN_API_KEY }}
    useResponsesApi: false
    capabilities: [tool_use, image_input]
    roles: [chat, edit, apply]
    defaultCompletionOptions:
      contextLength: 200000
      maxTokens: 8192
  - name: Qwen3 Coder (autocomplete)
    provider: openai
    model: qwen/qwen3-coder
    apiBase: https://api.uttapen.ir/v1
    apiKey: ${{ secrets.UTTAPEN_API_KEY }}
    useResponsesApi: false
    roles: [autocomplete]
    defaultCompletionOptions:
      maxTokens: 256

نکته‌های مهم:

  • useResponsesApi: false را روی همهٔ مدل‌ها بگذار. Continue برای شناسه‌هایی که الگوی gpt-5 تا gpt-9 یا o-series دارند، به‌صورت پیش‌فرض به /responses می‌زند؛ یوتاپن این مسیر را ندارد و 404 می‌گیری. این حتی برای شناسهٔ openai/gpt-5-mini هم اتفاق می‌افتد.
  • maxTokens را صریح بنویس. اگر ننویسی، Continue از جدول داخلی خودش عددی حدس می‌زند که برای مدل‌های خانوادهٔ GPT-5 می‌تواند ۱۰۰٬۰۰۰ توکن باشد؛ یوتاپن هزینهٔ همین سقف را قبل از ارسال رزرو می‌کند (قیمت‌گذاری) و موجودی‌ات بی‌دلیل قفل می‌شود. برای مدل‌های ناشناس هم پیش‌فرض خودِ Continue 4096 است که برای ویرایش‌های بلند کم است.
  • capabilities را بنویس. Continue قابلیت ابزارها را از روی نام حدس می‌زند و شناسه‌های دارای / را نمی‌شناسد؛ بدون tool_use حالت Agent ابزارهای بومی را از دست می‌دهد و بدون image_input تصویر نمی‌فرستد.
  • کلید: مقدار UTTAPEN_API_KEY را در ~/.continue/.env (یا .continue/.env پروژه) بگذار. افزونهٔ IDE متغیرهای محیطی شِل را نمی‌خواند، پس بعد از ساختن فایل، IDE را ری‌استارت کن.
  • contextLength را روی context واقعی مدل یا کمتر بگذار؛ عددها در فهرست مدل‌ها هستند.

نقش‌ها و هزینه

  • chat, edit, apply روی مدل اصلی. برای کار روی کد anthropic/claude-sonnet-5 یا openai/gpt-5، و برای هزینهٔ کمتر deepseek/deepseek-v3.2 و qwen/qwen3-coder.
  • autocomplete: Continue برای این نقش از مسیر /v1/completions استفاده می‌کند و هر بار تایپ‌کردن یک درخواست است. حتماً maxTokens کوچک (مثل 256) و یک مدل ارزان بگذار، وگرنه هزینه‌ات را همین نقش می‌بلعد.
  • عنوان گفتگو با همان مدل چت و maxTokens برابر ۱۶ ساخته می‌شود، پس نگرانی‌ای ندارد.
  • embed: برای ایندکس کد و جستجوی @codebase یک مدل از دستهٔ embeddings بگذار؛ هزینه فقط بابت توکن‌های ورودی است. openai/text-embedding-3-small ارزان و کافی است؛ اگر کامنت‌ها و مستندات کدت بیشتر فارسی است، qwen/qwen3-embedding-8b یا baai/bge-m3 را هم امتحان کن. شناسهٔ chat در این نقش 400 invalid_request می‌گیرد.
  - name: Text Embedding 3 Small
    provider: openai
    model: openai/text-embedding-3-small
    apiBase: https://api.uttapen.ir/v1
    apiKey: ${{ secrets.UTTAPEN_API_KEY }}
    roles: [embed]

بررسی اتصال

در VS Code پنل Continue را باز کن، مدل uttapen را انتخاب کن و یک سؤال کوتاه بپرس. بعد در داشبورد ← مصرف درخواست را ببین. اگر جوابی نیامد، اول کلید را با curl تست کن:

curl https://api.uttapen.ir/v1/chat/completions \
  -H "Authorization: Bearer $UTTAPEN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"openai/gpt-5-mini","max_tokens":20,"messages":[{"role":"user","content":"ping"}]}'

عیب‌یابی

خطاعلت در Continueراه‌حل
404 not_founduseResponsesApi نیامده و درخواست به /responses رفتهuseResponsesApi: false را اضافه کن
404 model_not_foundmodel: با شناسهٔ واقعی فرق داردشناسه را از /models کپی کن (پیام 404 در uttapen.suggestions نزدیک‌ترین شناسه‌های محتمل را هم پیشنهاد می‌دهد)
401 invalid_api_keyفایل .env خوانده نشده یا IDE ری‌استارت نشدهمقدار را در ~/.continue/.env بگذار و IDE را ببند و باز کن
402 insufficient_balancemaxTokens ننوشته‌ای و رزرو خیلی بزرگ شدهmaxTokens را بگذار و کیف پول را شارژ کن
429سقف نرخ کلید، معمولاً به‌خاطر autocomplete پرتکرارمدل autocomplete را کم‌مصرف‌تر کن یا rate_limit_rpm کلید را بالا ببر (محدودیت نرخ)
ابزارها در حالت Agent کار نمی‌کنندcapabilities تعریف نشدهcapabilities: [tool_use] را اضافه کن

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

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

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

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