پرش به محتوا

LiteLLM

گیسو را در LiteLLM با پیشوند openai/ و api_base تعریف کنید: SDK پایتون، فایل config.yaml برای LiteLLM Proxy، مسیر پشتیبان، امبدینگ و ثبت درست هزینه.

بازبینی: ۱۵ مهر ۱۴۰۵ ۷ دقیقه مطالعه

LiteLLM یک لایهٔ واحد روی سرویس‌های مدل زبانی است، به دو شکل: کتابخانهٔ پایتون که هر مدلی را با یک تابع صدا می‌زند، و LiteLLM Proxy که روی سرور خودتان یک API سازگار با OpenAI می‌سازد با کلید مجازی برای هر تیم، بودجه، ثبت مصرف و مسیر پشتیبان. گیسو در LiteLLM یک سرویس «سازگار با OpenAI» است و با پیشوند openai/ تعریف می‌شود.

modelopenai/ و پشتش شناسهٔ مدل گیسو، مثلاً openai/openrouter/anthropic/claude-sonnet-5.5
api_basehttps://gisoo.pro/api/v1
api_keyکلید گیسو؛ در Proxy به شکل os.environ/GISOO_API_KEY
پیشوند openai/ را جا نیندازید

LiteLLM از اولین بخش نام مدل، سرویس را تشخیص می‌دهد. بعضی شناسه‌های گیسو با openrouter/ شروع می‌شوند؛ اگر openrouter/anthropic/claude-sonnet-5.5 را بدون پیشوند بنویسید، LiteLLM آن را درخواستی برای OpenRouter حساب می‌کند و نام مدل را پیش از فرستادن کوتاه می‌کند؛ نتیجه خطای مدل یا رفتن درخواست به جای دیگری است. همیشه openai/ را جلوی شناسه بگذارید: LiteLLM فقط همان یک پیشوند را برمی‌دارد و بقیه را دست‌نخورده به گیسو می‌فرستد.

کتابخانهٔ پایتون

برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید همان‌اند.

Python litellm.completion
# pip install litellm
import os
import litellm

response = litellm.completion(
    model="openai/openrouter/anthropic/claude-sonnet-5.5",          # "openai/" = speak the OpenAI format; the rest is Gisoo's model id
    api_base="https://gisoo.pro/api/v1",
    api_key=os.environ["GISOO_API_KEY"],
    messages=[{"role": "user", "content": "Give me three names for a coffee shop."}],
    max_tokens=300,
)
print(response.choices[0].message.content)

vectors = litellm.embedding(
    model="openai/text-embedding-3-small",
    api_base="https://gisoo.pro/api/v1",
    api_key=os.environ["GISOO_API_KEY"],
    input=["first text", "second text"],
)

پاسخ جریانی (stream=True)، ابزارها (tools) و ورودی تصویر همان‌طور که در LiteLLM می‌نویسید کار می‌کنند، به شرط آن‌که مدل انتخابی آن قابلیت را داشته باشد.

چند مدل و مسیر پشتیبان

با Router برای هر کار یک نام بگذارید و اگر مدلی جواب نداد، مدل دیگری جایش جواب بدهد:

برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید همان‌اند.

Python Router
import os
from litellm import Router

gisoo = {"api_base": "https://gisoo.pro/api/v1", "api_key": os.environ["GISOO_API_KEY"]}

router = Router(
    model_list=[
        {"model_name": "smart", "litellm_params": {"model": "openai/openrouter/anthropic/claude-sonnet-5.5", **gisoo}},
        {"model_name": "cheap", "litellm_params": {"model": "openai/deepseek-v4-flash", **gisoo}},
    ],
    fallbacks=[{"smart": ["cheap"]}],   # if "smart" keeps failing, answer with "cheap"
    num_retries=2,
)

reply = router.completion(model="smart", messages=[{"role": "user", "content": "Hello"}])

LiteLLM Proxy

وقتی چند برنامه یا چند تیم یک کلید گیسو را به اشتراک می‌گذارند، Proxy را روی سرور خودتان اجرا کنید: کلید گیسو فقط روی همان سرور می‌ماند و هر تیم کلید مجازی خودش را می‌گیرد.

برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید همان‌اند.

YAML config.yaml
# config.yaml for LiteLLM Proxy
model_list:
  - model_name: claude
    litellm_params:
      model: openai/openrouter/anthropic/claude-sonnet-5.5
      api_base: https://gisoo.pro/api/v1
      api_key: os.environ/GISOO_API_KEY
      input_cost_per_token: 0.0000030595      # today's Gisoo price, so LiteLLM's spend logs match
      output_cost_per_token: 0.0000152975

  - model_name: fast
    litellm_params:
      model: openai/gpt-4o-mini
      api_base: https://gisoo.pro/api/v1
      api_key: os.environ/GISOO_API_KEY

  - model_name: embeddings
    litellm_params:
      model: openai/text-embedding-3-small
      api_base: https://gisoo.pro/api/v1
      api_key: os.environ/GISOO_API_KEY

litellm_settings:
  num_retries: 2
  request_timeout: 120
Shell اجرا
pip install 'litellm[proxy]'
export GISOO_API_KEY="sk-gisoo-v1-..."
litellm --config config.yaml --port 4000

# Your apps now talk to the proxy with the proxy's own key:
curl http://localhost:4000/v1/chat/completions \
  -H "Authorization: Bearer $LITELLM_MASTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude", "messages": [{"role": "user", "content": "Hello"}]}'
  • input_cost_per_token و output_cost_per_token را با قیمت گیسو پر کنید تا گزارش هزینهٔ LiteLLM با صورتحساب گیسو یکی باشد. عددهای نمونهٔ بالا قیمت امروز openrouter/anthropic/claude-sonnet-5.5 است؛ قیمت هر مدل در صفحهٔ مدل‌ها آمده است.
  • LiteLLM فهرست قیمت خودش را دارد که برای شناسه‌های گیسو درست نیست. هزینهٔ دقیق همیشه همان است که در «گزارش مصرف» اپ گیسو یا با GET /usage می‌بینید.
  • برای Proxy یک کلید گیسوی جدا با سقف هزینه بسازید؛ بودجهٔ هر تیم را هم در خود LiteLLM بگذارید.

کدام مدل را بگذارید

برایشناسهٔ مدلپنجرهٔ ورودی (توکن)ورودی / خروجی (دلار برای هر یک میلیون توکن)
کار دقیق و ایجنت openrouter/anthropic/claude-sonnet-5.5 ۱٬۰۰۰٬۰۰۰ $3.0595 / $15.2975
کارهای سبک و پرتکرار gpt-4o-mini ۱۲۸٬۰۰۰ $0.21 / $0.84
پشتیبان ارزان deepseek-v4-flash ۱٬۰۰۰٬۰۰۰ $0.42 / $1.68

شناسه‌ها و قیمت‌ها هنگام باز شدن این صفحه از کاتالوگ خوانده می‌شوند و با تغییر قیمت سرویس‌دهنده عوض می‌شوند. فهرست کامل، با قیمت هر مدل به سکه، در صفحهٔ مدل‌ها است.

خطاهای رایج

نشانهعلتراه رفع
خطای کلید یا مدل از سرویس دیگری، یا درخواستی که در گزارش مصرف گیسو نیستپیشوند openai/ جا افتاده است.openai/ را جلوی شناسه بگذارید.
404 model_not_foundشناسهٔ پس از openai/ در کاتالوگ گیسو نیست.شناسه را از صفحهٔ مدل‌ها کپی کنید.
404 برای هر مدلیapi_base بدون /v1 است.دقیقاً https://gisoo.pro/api/v1.
401 در Proxyمتغیر GISOO_API_KEY روی سرور Proxy تنظیم نشده است.متغیر را در همان محیطی بگذارید که Proxy اجرا می‌شود (مثلاً در فایل .env داکر).
429 concurrency_limitچند برنامه از یک حساب گیسو همزمان درخواست می‌فرستند.در LiteLLM برای هر مدل سقف همزمانی (max_parallel_requests) بگذارید یا با تیکت سقف بیشتری بخواهید.

پرسش‌های پرتکرار

LiteLLM لازم است یا SDK رسمی OpenAI کافی است؟

برای یک برنامه، SDK رسمی کافی است (SDKها). LiteLLM وقتی به کار می‌آید که چند سرویس، چند تیم یا بودجهٔ جدا برای هر تیم دارید.

Claude Code را می‌توانم به LiteLLM Proxy وصل کنم؟

می‌توانید، ولی لازم نیست: Claude Code مستقیم به Messages API گیسو وصل می‌شود و یک لایه کمتر یعنی یک نقطهٔ خرابی کمتر.

متن درخواست‌ها کجا ذخیره می‌شود؟

گیسو متن را ذخیره نمی‌کند. خود LiteLLM Proxy بسته به تنظیمش ممکن است درخواست‌ها را در پایگاه دادهٔ خودتان ثبت کند؛ آن تنظیم دست شماست.

راهنماهای مرتبط

پاسخ پرسشتان را پیدا نکردید؟

شناسهٔ درخواست (هدر X-Request-Id) را با پرسشتان در تیکت بفرستید تا دقیق بررسی کنیم.

تیکت پشتیبانی