Yadak AI Gateway پورتال توسعه‌دهندگان

اتصال ابزارهای برنامه‌نویسی به درگاه هوش مصنوعی یدک — یک کلید شخصی، همه مدل‌ها، بودجه و گزارش مصرف

Gateway: http://localhost:4000 Chat API: LiteLLM 1.106.2 Models: 200+ Chat portal: http://localhost:3000 Docs: http://localhost:8081

۱. قبل از شروع

سه چیز لازم دارید: آدرس درگاه، کلید شخصی، و لیست مدل‌های مجاز کلیدتان.

کلید شخصی خودتان

هر کارمند یک کلید مجازی sk-... از مدیر تیم می‌گیرد. این کلید تعیین می‌کند کدام مدل‌ها، چه بودجه‌ای و چه سرعتی (RPM) مجاز است. همان کلید را در همه ابزارها استفاده می‌کنید.

مهم: دسترسی هر کلید محدود به مدل‌های تیم خودش است. اگر مدلی را در لیست ابزار نمی‌بینید یا خطای ۴۰۳ می‌گیرید، یعنی آن مدل در کلید شما تعریف نشده — این یک باگ نیست.

آدرس درگاه

از کجا وصل می‌شویدآدرس پایه (OpenAI-compatible)
روی سیستم خودتان در شبکه داخلیhttp://localhost:4000/v1
روی همان ماشینِ درگاهhttp://localhost:4000/v1
برای Claude Code (بدون /v1)http://localhost:4000

آدرس‌ها در همه‌ی نمونه‌های این صفحه خودکار با آدرس عمومی درگاه پر می‌شوند. اگر درگاه را از دامنه یا مسیر دیگری سرو می‌کنید، آدرس درست را از مدیر درگاه بگیرید.

۲. Endpointهای درگاه (تست‌شده)

این درگاه چند protocol مختلف را هم‌زمان ارائه می‌دهد؛ هر ابزاری با یکی از این‌ها صحبت می‌کند.

Endpointبرای چه ابزاریوضعیت
/v1/chat/completionsCline، Cursor، Hermes، OpenClaw، SDKهاپشتیبانی می‌شود
/v1/responsesOpenAI Codex CLI (نسخه‌های جدید فقط این را دارند)پشتیبانی می‌شود
/v1/messagesClaude Code (فرمت Anthropic)پشتیبانی می‌شود
/v1/messages/count_tokensClaude Code (شمارش توکن)پشتیبانی می‌شود
/v1/embeddingsRAG و جستجوی معناییپشتیبانی می‌شود
/v1/audio/transcriptionsتبدیل گفتار به متن (whisper-1)پشتیبانی می‌شود
/v1/modelsلیست مدل‌های مجاز کلید شماپشتیبانی می‌شود
/cursor/modelsیکپارچه‌سازی اختصاصی Cursor (نیاز LiteLLM ≥ 1.97)پشتیبانی می‌شود

۳. Cursor محدودیت شبکه دارد

Cursor تنها ابزاری است که درخواست را از سرورهای خود Cursor می‌فرستد، نه از ماشین شما.

نکته: چون درخواست از سرور Cursor می‌آید، آدرس‌های داخلی شبکه مثل 192.168.0.10 رد می‌شوند (خطای Access to private networks is forbidden). برای Cursor درگاه باید از اینترنت قابل‌رسد باشد (TLS + دامنه/تونل). تا زمانی که درگاه فقط روی LAN است، Cline / Claude Code / Codex / WebUI را استفاده کنید — این‌ها مستقیم از ماشین شما وصل می‌شوند و کار می‌کنند.

رویه تنظیم (وقتی آدرس عمومی در دسترس بود)

Cursor — Base URL override
Override OpenAI Base URL : https://<دامنه-عمومی-درگاه>/cursor
OpenAI API Key           : sk-<کلید-شخصی-شما>
Add Custom Model         : gpt-4o

نکته: نسخه درگاه 1.106.2 است، پس مسیر /cursor و GET /cursor/models فعال است (تأیید شد). اگر خطای نام تکراری دیدید، نام مدل با مدل داخلی Cursor برخورد کرده — نام دیگری انتخاب کنید. تب Tab همیشه با مدل‌های خود Cursor کار می‌کند و قابل تغییر نیست.

۴. Cline (VS Code) روی LAN کار می‌کند

Cline مستقیم از VS Code شما درخواست می‌فرستد؛ پس آدرس داخلی LAN بدون مشکل کار می‌کند.

فیلدمقدار
Base URLhttp://localhost:4000/v1
API Keysk-<کلید-شخصی>
Model IDgpt-4o (یا هر مدل مجاز کلیدتان)
Max Output / Contextپیش‌فرض خوب است؛ برای مدل reasoning مقدار خروجی را کم نکنید

Cline فقط /v1/chat/completions را صدا می‌زند (نه /v1/responses و نه /v1/messages). مدل‌های wildcard با پیشوند openai/ هم مجازند، مثلاً openai/gpt-4.1.

۵. Claude Code پروتکل Anthropic تست شد

Claude Code با فرمت Anthropic (/v1/messages) صحبت می‌کند و درگاه این فرمت را به مدل‌های OpenAI ترجمه می‌کند. به همین دلیل آدرس را بدون /v1 می‌دهند.

macOS / Linux / WSL (bash)

bash — export
export ANTHROPIC_BASE_URL="http://localhost:4000"
export ANTHROPIC_AUTH_TOKEN="sk-<کلید-شخصی>"
export ANTHROPIC_MODEL="gpt-4o"
unset ANTHROPIC_API_KEY

claude

ویندوز (PowerShell)

powershell
$env:ANTHROPIC_BASE_URL  = "http://localhost:4000"
$env:ANTHROPIC_AUTH_TOKEN = "sk-<کلید-شخصی>"
$env:ANTHROPIC_MODEL      = "gpt-4o"
Remove-Item Env:ANTHROPIC_API_KEY -ErrorAction SilentlyContinue

claude

دائمی‌کردن تنظیمات (همه پلتفرم‌ها)

در فایل ~/.claude/settings.json (ویندوز: %USERPROFILE%\.claude\settings.json):

settings.json
{
  "env": {
    "ANTHROPIC_BASE_URL": "http://localhost:4000",
    "ANTHROPIC_AUTH_TOKEN": "sk-<کلید-شخصی>",
    "ANTHROPIC_MODEL": "gpt-4o",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-4o-mini",
    "CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
  }
}

۶. OpenAI Codex CLI /v1/responses تست شد

کدکس در نسخه‌های جدید فقط پروتکل responses را پشتیبانی می‌کند (گزینه wire_api = "chat" حذف شده). درگاه ما /v1/responses را ارائه می‌دهد — تأیید شد.

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

مسیر: ~/.codex/config.toml (ویندوز: %USERPROFILE%\.codex\config.toml)

config.toml
model          = "gpt-4o"
model_provider = "yadak"

[model_providers.yadak]
name      = "Yadak AI Gateway"
base_url  = "http://localhost:4000/v1"
env_key   = "YADAK_API_KEY"
wire_api  = "responses"
شناسه‌های ذخیره: نام provider نباید openai، ollama یا lmstudio باشد — این‌ها رزرو خودِ کدکس هستند. برای انتخاب provider در خط فرمان، codex --yadak کار نمی‌کند؛ با codex -c model_provider=yadak یا همان فایل استفاده کنید.

ست کردن کلید

bash
export YADAK_API_KEY="sk-<کلید-شخصی>"
codex "یک تابع بزن که فایل لاگ را بچرخاند"
powershell
# برای همین جلسه:
$env:YADAK_API_KEY = "sk-<کلید-شخصی>"

# برای همه جلسات آینده (یک‌بار):
setx YADAK_API_KEY "sk-<کلید-شخصی>"

codex "باگ را در main.py پیدا کن"

کلید در فایل TOML ذخیره نمی‌شود؛ کدکس آن را از متغیر محیطی خوانده‌شده در env_key می‌گیرد — امن‌تر است.

۷. Hermes Agent طبق مستندات سازنده

Hermes Agent (project: NousResearch/hermes-agent) یک ایجنت self-hosted با CLI و gateway چت است. تنظیمات غیرمحرمانه در ~/.hermes/config.yaml و کلیدها در ~/.hermes/.env.

~/.hermes/config.yaml
providers:
  yadak:
    api: http://localhost:4000/v1   # Hermes خودش /chat/completions را اضافه می‌کند
    transport: chat_completions
    key_env: YADAK_API_KEY

model:
  default: gpt-4o
  provider: custom:yadak
~/.hermes/.env
YADAK_API_KEY=sk-<کلید-شخصی>

۸. OpenClaw طبق مستندات سازنده

OpenClaw یک ایجنت/assistant self-hosted است که چت (WhatsApp/Telegram/Discord) را به مدل‌ها وصل می‌کند. تنظیمات در فایل JSON5 به مسیر ~/.openclaw/openclaw.json (hot-reload می‌شود).

~/.openclaw/openclaw.json (JSON5)
{
  models: {
    providers: {
      yadak: {
        baseUrl: "http://localhost:4000/v1",
        apiKey:  "${YADAK_API_KEY}",
        api:     "openai-completions",
        models: [
          { id: "gpt-4o",     name: "GPT-4o (Yadak)" },
          { id: "gpt-4o-mini", name: "GPT-4o mini (Yadak)" }
        ]
      }
    }
  },
  agents: {
    defaults: { model: { primary: "yadak/gpt-4o" } }
  }
}
CLI — onboard و بررسی
openclaw onboard --auth-choice litellm-api-key \
  --litellm-api-key "$YADAK_API_KEY" \
  --custom-base-url "http://localhost:4000/v1"

openclaw models set litellm/gpt-4o
openclaw models list --provider yadak --refresh --json   # صحت اتصال را نشان می‌دهد

نام مدل‌ها در OpenClaw با پیشوند provider صدا زده می‌شود (yadak/gpt-4o)؛ شناسه بعد از / باید دقیقاً همان model_name درگاه باشد.

۹. مدل‌ها و نکته‌های مهم

متنی پرکاربرد

  • gpt-4o — کیفیت بالا، پیش‌فرض پیشنهادی
  • gpt-4o-mini — ارزان و سریع برای کارهای روزمره
  • gpt-5-mini — مدل reasoning (تفکر)

تخصصی

  • text-embedding-3-small — برای RAG
  • whisper-1 — تبدیل گفتار به متن
  • openai/gpt-image-1* — تولید تصویر (تیم Image)
  • openai/gpt-5-codex و برادرانش — کدنویسی (تیم Developers)
۱) مدل reasoning را با بودجه خروجی کافی صدا بزنید: برای gpt-5-mini حتماً max_completion_tokens را ≥ ۵۰۰ بگذارید. چون بخش زیادی از بودجه خروجی صرف «تفکر» می‌شود، با مقدار کم پاسخ خالی برمی‌گردد (نه خطا).
۲) whisper: پارامتر response_format را روی text یا verbose_json بگذارید. مقدار پیش‌فرض json با این پرووایدر به باگ پارس برمی‌خورد.
۳) مدل‌های wildcard: فهرست درگاه بیش از ۲۰۰ مدل است: ۵ مدل صریح (gpt-4o، gpt-4o-mini، gpt-5-mini، text-embedding-3-small، whisper-1) و بقیه با پیشوند openai/ صدا زده می‌شوند، مثلاً openai/gpt-4.1 یا openai/gemini-2.5-flash-lite. اگر کلید تیم شما محدود به مدل‌های خاص باشد، wildcard هم بسته است.
۴) کش معنایی: درخواست‌های تکراری یا بسیار مشابه از کش Redis پاسخ داده می‌شوند و هزینه‌ی مدل برای آن‌ها در لاگ مصرف 0 ثبت می‌شود. دقت کنید هر جست‌وجوی کش خودش یک فراخوانی embedding ارزان دارد، پس صرفه‌جویی «حذف کامل هزینه» نیست؛ حذف گران‌ترین بخش آن است. برای همین لازم نیست promptها را برای «ذخیره توکن» دستی تکرار کنید.

۱۰. معنی خطاها

کدعلتچه کار کنیم
403 key_model_access_denied مدل در لیست مجاز کلید شما نیست مدل را عوض کنید یا از مدیر بخواهید مدل را به کلید/تیم شما اضافه کند
429 سقف تعداد درخواست در دقیقه (RPM) پر شد چند ثانیه صبر و retry با backoff؛ درخواست‌های موازی را محدود کنید
422 budget_exceeded بودجه کلید یا بودجه تیم تمام شده (پیام خطا می‌گوید Key=... یا Team=...) به مدیر تیم گزارش دهید؛ بودجه ماهانه دوباره reset می‌شود
401 کلید اشتباه/منقضی است کلید را دوباره از مدیر بگیرید (کلیدها انقضای ۹۰ روزه دارند)
پاسخ خالی از gpt-5-mini مقدار max_completion_tokens کم است آن را ≥ ۵۰۰ (بهتر ۱۰۰۰+) بگذارید

۱۱. عیب‌یابی سریع

الف) اول با curl تست کنید که مشکل از ابزار نیست

bash — حداقلِ تست
curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer sk-<کلید-شخصی>" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-4o-mini","messages":[{"role":"user","content":"say OK"}],"max_tokens":5}'

اگر این جواب داد ولی ابزار نه، مشکل از تنظیمات آن ابزار است (نه از درگاه یا کلید).

ب) ببینید کلید شما چه مدل‌هایی اجازه دارد

bash — لیست مدل‌های مجاز
curl -s http://localhost:4000/v1/models \
  -H "Authorization: Bearer sk-<کلید-شخصی>" | python -c "import sys,json;print('\n'.join(m['id'] for m in json.load(sys.stdin)['data']))"

ج) مشکلات رایج

علائمعلت محتملدرمان
Connection refused / timeoutفایروال، یا آدرس IP عوض شدهIP را از مدیر بپرسید؛ پورت ۴۰۰۰ روی LAN باز باشد
در Cursor: Access to private networks is forbiddenCursor از سرور خودش request می‌فرستددرگاه را با TLS و دامنه عمومی در دسترس قرار دهید (بخش Cursor)
در Claude Code: Invalid model name passed inمدل Anthropic در درگاه تعریف نشدهANTHROPIC_MODEL=gpt-4o را ست کنید
Codex: خطای wire_api / 404 روی responsesنسخه کدکس قدیمی یا provider اشتباهwire_api = "responses" و به‌روزرسانی کدکس
هزینه بیشتر از انتظارمدل گران با کار سادهبرای کارهای روزمره gpt-4o-mini
راهنمای سریع: کلید شخصی ← در ابزار ← مدل مجاز تیم. بقیه چیز (بودجه، RPM، کش، لاگ مصرف) خودکار سمت درگاه اعمال می‌شود و نیازی به تنظیم شما ندارد.