خانه → راهنماها → OpenCode با API سفارشی: پیکربندی، Claude، small_model و هزینهٔ واقعی

OpenCode با API سفارشی: پیکربندی، Claude، small_model و هزینهٔ واقعی

OpenCode ارائه‌دهنده‌ها را از opencode.json می‌خواند، پس راه‌اندازی فقط یک فایل است. آنچه ما را شگفت‌زده کرد صورت‌حساب بود: درخواست فقط یک کلمه، دو درخواست و بیش از ۱۲٬۰۰۰ توکن ورودی ساخت. OpenCode 1.19.0 را روی درگاه خودمان با سه مدل اجرا کردیم تا نشان دهیم توکن‌ها کجا مصرف می‌شوند و چطور کمشان کنیم.

فایل پیکربندی

این را در ~/.config/opencode/opencode.json (یا opencode.json در پروژه) بگذارید:

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "apiclan": {
      "npm": "@ai-sdk/openai-compatible",
      "name": "APICLAN",
      "options": {
        "baseURL": "https://apiclan.us/v1",
        "apiKey": "{env:APICLAN_GPT_KEY}"
      },
      "models": {
        "gpt-6-astra": {},
        "gpt-6.1-sol": {}
      }
    }
  }
}
  1. در کنسول یک کلید بسازید و آن را به‌صورت متغیر محیطی تنظیم کنید، مثلاً APICLAN_GPT_KEY.
  2. زیر models فقط مدل‌های گروه همان کلید را بنویسید. هر کلید فقط به یک گروه تعلق دارد، پس GPT و DeepSeek و Claude هر کدام مدخل ارائه‌دهنده و کلید جداگانه می‌خواهند.
  3. opencode را اجرا کنید، /models را بزنید و APICLAN ← gpt-6-astra را برگزینید. در اسکریپت: opencode run -m apiclan/gpt-6-astra "...".
baseURLنتیجه
https://apiclan.us/v1✓
https://apiclan.us✗ 404 Not Found

@ai-sdk/openai-compatible فقط /chat/completions را به baseURL می‌افزاید، پس /v1 باید از قبل باشد. بدون آن، OpenCode فقط با Not Found متوقف می‌شود.

افزودن Claude

درون provider یک ارائه‌دهندهٔ دوم با بستهٔ Anthropic و کلیدی از گروه Claude اضافه کنید:

"claude": {
  "npm": "@ai-sdk/anthropic",
  "name": "APICLAN Claude",
  "options": {
    "baseURL": "https://apiclan.us/v1",
    "apiKey": "{env:APICLAN_CLAUDE_KEY}"
  },
  "models": { "claude-fable-5-1": {} }
}

این‌جا هم baseURL باید به /v1 ختم شود: بستهٔ Anthropic فقط /messages را می‌افزاید و در آزمون ما https://apiclan.us به‌تنهایی 404 داد. این برعکس Claude Code است که ANTHROPIC_BASE_URL آن نباید /v1 داشته باشد.

هزینهٔ یک پاسخ کوتاه

در یک پروژهٔ خالی از OpenCode خواستیم «Reply with just OK». هر مدل دو درخواست فرستاد: یکی برای عنوان‌گذاری نشست و دیگری پاسخ اصلی که پرامپت سیستمی و تعریف ابزارهای OpenCode را با خود می‌برد.

مدلدرخواستتوکن ورودی (عنوان + پاسخ)زمان کلهزینه
gpt-6-astra24,640 + 7,67820.5 s$0.050
deepseek-v4-pro2528 + 5,70834.1 s$0.005
deepseek-v4.1-flash2529 + 3,02721.8 s$0.0006

OpenCode برای مدل‌های GPT پرامپت سیستمی بسیار بلندتری (حدود ۷٬۷۰۰ توکن) از DeepSeek (حدود ۳٬۰۰۰) می‌فرستد و تنها درخواست عنوان روی GPT ۴٬۶۴۰ توکن مصرف کرد. به همین دلیل همان «OK» روی gpt-6-astra حدود ۷۷ برابر deepseek-v4.1-flash هزینه داشت. آزموده در ۱۲ اکتبر ۲۰۲۶ با OpenCode 1.19.0؛ هزینه‌ها همان مبلغی است که درگاه ما حساب کرد.

کاهش سربار با small_model

OpenCode برای کارهای جانبی مثل عنوان نشست از small_model استفاده می‌کند. آن را به یک مدل ارزان در ارائه‌دهندهٔ جداگانه اشاره دهید:

"small_model": "apiclan-ds/deepseek-v4.1-flash",
"provider": {
  "apiclan": { ... },
  "apiclan-ds": {
    "npm": "@ai-sdk/openai-compatible",
    "options": {
      "baseURL": "https://apiclan.us/v1",
      "apiKey": "{env:APICLAN_DS_KEY}"
    },
    "models": { "deepseek-v4.1-flash": {} }
  }
}

با gpt-6-astra به‌عنوان مدل اصلی، درخواست عنوان از ۰٫۰۱۸۷ دلار به ۰٫۰۰۰۰۳ دلار و کل گفت‌وگوی تک‌کلمه‌ای از ۰٫۰۵۰ به ۰٫۰۳۱ دلار رسید؛ یعنی ۳۸٪ کمتر در هر نشست تازه، بدون تغییر در پاسخ‌ها.

یک کار کوچک برنامه‌نویسی

کار یکسان برای هر مدل: نوشتن fizzbuzz.py و آزمون‌های pytest، بدون اجرای هیچ فرمانی. سپس هر تابع را با خروجی درست برای ۱ تا ۳۰ مقایسه کردیم.

مدلدرخواستزمان کلهزینهدرستتعداد assert آزمون
gpt-6-astra340 s$0.069✓2
deepseek-v4-pro361 s$0.008✓7
deepseek-v4.1-flash325 s$0.0011✓7

هر سه در سه درخواست کد درست نوشتند. deepseek-v4.1-flash سریع‌ترین بود و حدود ۱/۶۰ gpt-6-astra هزینه داشت؛ هر دو مدل DeepSeek آزمون‌های کامل‌تری هم نوشتند. deepseek-v4-pro کندترین بود، چون پیش از هر گام استدلال می‌کند. زمان کل شامل چند ثانیه راه‌اندازی خود OpenCode است.

خطاهای رایج

ابزارهای برنامه‌نویسی دیگر: Cline با API سفارشی · Codex با API سفارشی.

شروع به استفاده کنید

بدون اشتراک، بدون حداقل ماهانه، بدون تماس فروش. با USDT شارژ کنید و فقط به‌اندازهٔ مصرف بپردازید — 1 USDT برابر 2 اعتبار موجودی API است.

راهنمای 30 ثانیه‌ای شروع سریع را بخوانید

زبان: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Deutsch · Français · Español · Türkçe · Português · Italiano · Bahasa Indonesia · Tiếng Việt · Bahasa Melayu · Polski · Čeština · فارسی · Русский

قیمت‌های این صفحه به‌طور خودکار از داده‌های واقعی صورتحساب پر می‌شوند. شرایط اشخاص ثالث از مستندات خودشان نقل شده است.