📄 محتوای کامل
LiteLLM یک AI Gateway متنباز است که یک API سازگار با OpenAI در اختیار شما قرار میدهد تا بتوانید مدلها و سرویسهای مختلف هوش مصنوعی را پشت یک درگاه واحد مدیریت کنید. با اجرای LiteLLM روی یک VPS، میتوانید احراز هویت، Virtual Key، محدودیت بودجه، ثبت مصرف، مسیریابی درخواستها و دسترسی برنامهها به مدلهای مختلف را از یک نقطه کنترل کنید.
در این آموزش، LiteLLM را روی یک سرور لینوکسی با Docker Compose اجرا میکنیم و برای ذخیرهسازی اطلاعات از PostgreSQL، برای HTTPS از Traefik + Let’s Encrypt و برای پایش متریکها از Prometheus استفاده خواهیم کرد.
نسخه این آموزش: LiteLLM 1.104.0
آخرین بازبینی: ۸ اکتبر ۲۰۲۶
معماری نهایی
پس از پایان نصب، ساختار سرویس به این شکل خواهد بود:
Client / Application
|
| HTTPS :443
v
Traefik
|
v
LiteLLM :4000
/ \
/ \
PostgreSQL LLM Provider
:5432
Prometheus
:9090
داخلی
در این معماری، کاربران و برنامهها مستقیماً با LiteLLM ارتباط دارند. Traefik درخواستهای HTTPS را دریافت میکند و به LiteLLM میفرستد. PostgreSQL اطلاعات مربوط به کلیدها، کاربران، مصرف و تنظیمات را نگه میدارد و Prometheus متریکهای LiteLLM را جمعآوری میکند.
PostgreSQL برای قابلیتهایی مانند Virtual Key، مدیریت کاربران و ثبت هزینه و مصرف اهمیت دارد؛ در deployment بدون دیتابیس، این قابلیتها در دسترس نخواهند بود. Redis نیز برای یک نصب تکسروری ضروری نیست و زمانی اهمیت بیشتری پیدا میکند که چند نمونه LiteLLM، rate limiting توزیعشده، routing state یا cache مشترک داشته باشید.
LiteLLM چه کاربردی دارد؟
فرض کنید یک برنامه دارید که امروز از OpenAI استفاده میکند و فردا قصد دارید از Anthropic، Gemini، مدل داخلی یا یک سرویس دیگر نیز استفاده کنید.
بدون Gateway، معمولاً باید منطق احراز هویت، مدیریت کلیدها، مسیریابی و کنترل هزینه را در خود برنامه پیاده کنید.
LiteLLM این لایه را جدا میکند:
Application
|
v
LiteLLM
/ | \
/ | \
AI AI AI
در نتیجه، برنامه شما بهجای اینکه مستقیماً به هر Provider متصل شود، با یک API مرکزی کار میکند.
یکی از ویژگیهای مهم LiteLLM این است که API آن با الگوی OpenAI سازگار است؛ بنابراین بسیاری از برنامههایی که از OpenAI SDK استفاده میکنند، فقط با تغییر base_url و API Key میتوانند از Gateway شما استفاده کنند.
پیشنیازهای نصب LiteLLM
برای این آموزش پیشنهاد میشود از یک VPS لینوکسی استفاده کنید.
حداقل پیشنهادی برای شروع:
| مورد | مقدار پیشنهادی |
|---|---|
| سیستمعامل | Ubuntu ۲۲.۰۴ یا Ubuntu ۲۴.۰۴ |
| CPU | حداقل ۴ هسته |
| RAM | حداقل 8GB |
| دسترسی | کاربر معمولی با sudo |
| Docker | نصبشده |
| Docker Compose | نصبشده |
| دامنه | دارای DNS A Record |
| API Key | حداقل یک Provider هوش مصنوعی |
حداقل منابع ۴ CPU و 8GB RAM در آموزش Vultr نیز بهعنوان پیشنیاز معرفی شده است.
توجه: LiteLLM خودش مدل زبانی را اجرا نمیکند. این Gateway درخواست را به Provider یا مدل شما ارسال میکند. بنابراین مقدار CPU و RAM موردنیاز به نوع استفاده، تعداد درخواستها، logging، routing و سرویسهای جانبی نیز بستگی دارد.
مرحله اول: نصب Docker و Docker Compose
ابتدا سیستم را بهروزرسانی کنید:
sudo apt update
sudo apt upgrade -y
سپس ابزارهای پایه را نصب کنید:
sudo apt install -y ca-certificates curl gnupg openssl python3 python3-venv
اگر Docker روی سرور نصب نیست، میتوانید از اسکریپت رسمی نصب Docker استفاده کنید:
curl -fsSL https://get.docker.com | sudo sh
سرویس Docker را فعال کنید:
sudo systemctl enable --now docker
کاربر فعلی را به گروه Docker اضافه کنید:
sudo usermod -aG docker $USER
برای اعمال گروه جدید:
newgrp docker
نسخه Docker و Compose را بررسی کنید:
docker --version
docker compose version
اگر هر دو دستور خروجی معتبر برگردانند، محیط برای ادامه نصب آماده است.
مرحله دوم: ساخت پوشه LiteLLM
پوشه اصلی پروژه را ایجاد کنید:
mkdir -p ~/litellm/{letsencrypt,postgres,prometheus}
cd ~/litellm
Prometheus در کانتینر خود با UID مشخصی اجرا میشود. برای اینکه بتواند اطلاعات متریکها را در پوشه مربوطه ذخیره کند، مجوز مناسب را تنظیم کنید:
sudo chown -R 65534:65534 prometheus
برای فایل گواهی Traefik نیز فایل ACME را ایجاد و محدود کنید:
touch letsencrypt/acme.json
chmod 600 letsencrypt/acme.json
در این مرحله ساختار پوشه باید تقریباً به این شکل باشد:
~/litellm/
├── letsencrypt/
├── postgres/
└── prometheus/
مرحله سوم: ساخت کلیدهای امنیتی LiteLLM
LiteLLM به یک Master Key نیاز دارد. این کلید برای احراز هویت مدیریتی Gateway استفاده میشود.
یک کلید تصادفی بسازید:
openssl rand -hex 32
خروجی را ذخیره کنید.
دوباره همین دستور را اجرا کنید تا کلید دوم ساخته شود:
openssl rand -hex 32
کلید اول برای:
LITELLM_MASTER_KEY
و کلید دوم برای:
LITELLM_SALT_KEY
استفاده خواهد شد.
پیشوند sk- را میتوانید به مقادیر اضافه کنید:
sk-xxxxxxxxxxxxxxxx
هشدار مهم درباره LITELLM_SALT_KEY
LITELLM_SALT_KEY فقط یک رمز معمولی نیست. این مقدار برای رمزنگاری اطلاعات Provider در دیتابیس استفاده میشود.
بعد از اضافهشدن مدلها و اطلاعات Provider، تغییر این مقدار میتواند باعث شود credentialهای ذخیرهشده در PostgreSQL دیگر قابل خواندن نباشند. بنابراین آن را در محل امنی نگهداری کنید و هیچگاه داخل Git یا فایل عمومی قرار ندهید.
مرحله چهارم: ساخت فایل .env
فایل متغیرهای محیطی را بسازید:
nano .env
محتوای زیر را قرار دهید:
DOMAIN=llm.example.com
[email protected]
LITELLM_MASTER_KEY=sk-YOUR_MASTER_KEY
LITELLM_SALT_KEY=sk-YOUR_SALT_KEY
LLM_PROVIDER_API_KEY=YOUR_LLM_PROVIDER_API_KEY
POSTGRES_PASSWORD=YOUR_STRONG_DATABASE_PASSWORD
UI_USERNAME=admin
UI_PASSWORD=YOUR_STRONG_UI_PASSWORD
مقادیر نمونه را با اطلاعات واقعی خودتان جایگزین کنید.
مثلاً:
DOMAIN=ai.example.com
[email protected]
LITELLM_MASTER_KEY=sk-xxxxxxxxxxxxxxxx
LITELLM_SALT_KEY=sk-yyyyyyyyyyyyyyyy
LLM_PROVIDER_API_KEY=YOUR_PROVIDER_KEY
POSTGRES_PASSWORD=CHANGE_THIS_TO_A_STRONG_PASSWORD
UI_USERNAME=admin
UI_PASSWORD=CHANGE_THIS_TO_A_LONG_RANDOM_PASSWORD
مجوز فایل را محدود کنید:
chmod 600 .env
مرحله پنجم: ساخت config.yaml
فایل تنظیمات اصلی LiteLLM را بسازید:
nano config.yaml
برای شروع، ساختار زیر مناسب است:
model_list:
- model_name: my-model
litellm_params:
model: provider/model-name
api_key: os.environ/LLM_PROVIDER_API_KEY
litellm_settings:
callbacks:
- prometheus
require_auth_for_metrics_endpoint: true
general_settings:
master_key: os.environ/LITELLM_MASTER_KEY
عبارت زیر:
provider/model-name
باید با Provider و شناسه مدل واقعی شما جایگزین شود.
مثلاً ساختار نام مدل در LiteLLM به این شکل است:
provider/model-name
در نتیجه، LiteLLM میتواند یک نام داخلی برای برنامه شما تعریف کند:
model_name: my-model
در حالی که پشت این نام، مدل واقعی Provider قرار دارد.
این روش باعث میشود برنامههای شما بهجای وابستگی مستقیم به نام مدل Provider، با یک alias ثابت کار کنند.
مرحله ششم: تنظیم Prometheus
فایل Prometheus را ایجاد کنید:
nano prometheus.yml
محتوای زیر را قرار دهید:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: "litellm"
static_configs:
- targets: ["litellm:4000"]
bearer_token: "sk-YOUR_MASTER_KEY"
مقدار:
sk-YOUR_MASTER_KEY
را با همان مقدار واقعی LITELLM_MASTER_KEY جایگزین کنید.
در این تنظیم، Prometheus متریکهای LiteLLM را از شبکه داخلی Docker دریافت میکند و endpoint عمومی /metrics نیز با احراز هویت محافظت میشود.
مرحله هفتم: ساخت Docker Compose
فایل Compose را ایجاد کنید:
nano docker-compose.yaml
نسخه زیر را قرار دهید:
services:
traefik:
image: traefik:v3.6
container_name: traefik
restart: unless-stopped
command:
- "--providers.docker=true"
- "--providers.docker.exposedbydefault=false"
- "--entrypoints.web.address=:80"
- "--entrypoints.websecure.address=:443"
- "--entrypoints.web.http.redirections.entrypoint.to=websecure"
- "--entrypoints.web.http.redirections.entrypoint.scheme=https"
- "--certificatesresolvers.le.acme.httpchallenge=true"
- "--certificatesresolvers.le.acme.httpchallenge.entrypoint=web"
- "--certificatesresolvers.le.acme.email=${LETSENCRYPT_EMAIL}"
- "--certificatesresolvers.le.acme.storage=/letsencrypt/acme.json"
ports:
- "80:80"
- "443:443"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./letsencrypt:/letsencrypt
litellm:
image: ghcr.io/berriai/litellm:v1.104.0
container_name: litellm
restart: unless-stopped
env_file:
- .env
environment:
DATABASE_URL: "postgresql://llmproxy:${POSTGRES_PASSWORD}@db:5432/litellm"
STORE_MODEL_IN_DB: "True"
volumes:
- ./config.yaml:/app/config.yaml:ro
command:
- "--config=/app/config.yaml"
expose:
- "4000"
depends_on:
db:
condition: service_healthy
healthcheck:
test:
[
"CMD-SHELL",
"python3 -c \"import urllib.request; urllib.request.urlopen('http://localhost:4000/health/liveliness')\""
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
labels:
- "traefik.enable=true"
- "traefik.http.routers.litellm.rule=Host(`${DOMAIN}`)"
- "traefik.http.routers.litellm.entrypoints=websecure"
- "traefik.http.routers.litellm.tls=true"
- "traefik.http.routers.litellm.tls.certresolver=le"
- "traefik.http.services.litellm.loadbalancer.server.port=4000"
db:
image: postgres:16
container_name: litellm_db
restart: unless-stopped
environment:
POSTGRES_DB: litellm
POSTGRES_USER: llmproxy
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
volumes:
- ./postgres:/var/lib/postgresql/data
expose:
- "5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 5s
timeout: 5s
retries: 10
prometheus:
image: prom/prometheus:latest
container_name: litellm_prometheus
restart: unless-stopped
volumes:
- ./prometheus:/prometheus
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
expose:
- "9090"
command:
- "--config.file=/etc/prometheus/prometheus.yml"
- "--storage.tsdb.path=/prometheus"
- "--storage.tsdb.retention.time=15d"
در این معماری فقط Traefik پورتهای عمومی ۸۰ و ۴۴۳ را منتشر میکند. پورتهای PostgreSQL، Prometheus و LiteLLM مستقیماً روی اینترنت باز نمیشوند.
مستندات فعلی LiteLLM استفاده از image رسمی ghcr.io/berriai/litellm و pin کردن نسخه را برای deploymentهای monolithic توصیه میکند. همچنین نسخه ۱.۱۰۴.۰ مستقیماً در release notes رسمی بهعنوان release قابل استقرار معرفی شده است.
مرحله هشتم: بررسی فایل Compose
قبل از اجرای سرویسها، فایل Compose را بررسی کنید:
docker compose config
اگر خطای YAML یا متغیر محیطی وجود نداشته باشد، خروجی نهایی Compose نمایش داده میشود.
سپس imageها را دریافت کنید:
docker compose pull
مرحله نهم: بررسی امنیت image LiteLLM با Cosign
LiteLLM برای imageهای Docker خود از Cosign استفاده میکند. بررسی امضای image قبل از اجرای سرویس، یک مرحله امنیتی مفید برای اطمینان از اصالت image است.
Cosign را دریافت کنید:
curl -O -L "https://github.com/sigstore/cosign/releases/latest/download/cosign-linux-amd64"
سپس آن را نصب کنید:
sudo mv cosign-linux-amd64 /usr/local/bin/cosign
sudo chmod +x /usr/local/bin/cosign
نسخه را بررسی کنید:
cosign version
اکنون image LiteLLM را بررسی کنید:
cosign verify \
--key https://raw.githubusercontent.com/BerriAI/litellm/0112e53046018d726492c814b3644b7d376029d0/cosign.pub \
ghcr.io/berriai/litellm:v1.104.0
در صورت موفقیت، Cosign اطلاعات مربوط به signature را نمایش میدهد.
مرحله دهم: اجرای LiteLLM
اکنون تمام سرویسها را اجرا کنید:
docker compose up -d
وضعیت containerها را بررسی کنید:
docker compose ps
باید سرویسهای زیر را ببینید:
traefik
litellm
litellm_db
litellm_prometheus
برای بررسی لاگ LiteLLM:
docker compose logs --tail=100 litellm
برای بررسی Traefik:
docker compose logs --tail=100 traefik
برای بررسی PostgreSQL:
docker compose logs --tail=100 db
مرحله یازدهم: ورود به پنل LiteLLM
پس از صدور گواهی SSL، آدرس پنل را در مرورگر باز کنید:
https://llm.example.com/ui
بهجای llm.example.com دامنه خودتان را قرار دهید.
نام کاربری و رمز عبور همان مقادیری هستند که در .env تعیین کردید:
UI_USERNAME=admin
UI_PASSWORD=YOUR_STRONG_UI_PASSWORD
LiteLLM پنل مدیریتی را برای مشاهده مدلها، Virtual Keyها، مصرف و هزینه در اختیار شما قرار میدهد.
اگر HTTPS فعال نشد
اول DNS را بررسی کنید.
باید یک A Record داشته باشید:
llm.example.com -> SERVER_IP
پورتهای زیر نیز باید از اینترنت قابل دسترسی باشند:
80/tcp
443/tcp
اگر روی VPS فایروال فعال است:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
سپس:
docker compose logs traefik
یکی از خطاهای رایج، DNS اشتباه یا اشغال بودن پورت ۸۰/۴۴۳ توسط سرویس دیگری است.
اگر cPanel، Apache یا LiteSpeed روی همان VPS روی پورتهای ۸۰ و ۴۴۳ فعال باشد، این معماری را روی همان سرور اجرا نکنید. برای LiteLLM از VPS جدا استفاده کنید.
مرحله دوازدهم: بررسی سلامت LiteLLM
وضعیت healthcheck داخلی را از داخل container بررسی کنید:
docker compose exec litellm \
python3 -c "import urllib.request; print(urllib.request.urlopen('http://localhost:4000/health/liveliness').read().decode())"
اگر سرویس سالم باشد، پاسخ HTTP معتبر دریافت میکنید.
وضعیت PostgreSQL را نیز بررسی کنید:
docker compose exec db \
pg_isready -U llmproxy -d litellm
خروجی سالم معمولاً شامل عبارتی مشابه زیر خواهد بود:
accepting connections
مرحله سیزدهم: تست API با Python
برای تست API سازگار با OpenAI، ابتدا محیط مجازی Python بسازید:
python3 -m venv litellm-env
آن را فعال کنید:
source litellm-env/bin/activate
سپس OpenAI SDK را نصب کنید:
pip install -U openai
کلید اصلی و دامنه Gateway را به محیط وارد کنید:
export LITELLM_MASTER_KEY="sk-YOUR_MASTER_KEY"
export LITELLM_DOMAIN="llm.example.com"
فایل تست را ایجاد کنید:
nano test_litellm.py
محتوا:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["LITELLM_MASTER_KEY"],
base_url=f"https://{os.environ['LITELLM_DOMAIN']}/v1",
)
response = client.chat.completions.create(
model="my-model",
messages=[
{
"role": "user",
"content": "LiteLLM چیست؟",
}
],
)
print(response.choices[0].message.content)
اسکریپت را اجرا کنید:
python3 test_litellm.py
اگر پاسخ مدل نمایش داده شد، Gateway با موفقیت درخواست را دریافت کرده، مدل را پیدا کرده و آن را به Provider ارسال کرده است.
مرحله چهاردهم: ساخت Virtual Key
استفاده مستقیم از Master Key برای تمام برنامهها کار درستی نیست.
برای هر برنامه یا کاربر بهتر است یک Virtual Key مجزا ایجاد کنید. LiteLLM امکان تعیین model access، budget و rate limit را برای کلیدها فراهم میکند.
ابتدا:
export LITELLM_MASTER_KEY="sk-YOUR_MASTER_KEY"
export LITELLM_DOMAIN="llm.example.com"
سپس:
curl -sS -X POST \
"https://${LITELLM_DOMAIN}/key/generate" \
-H "Authorization: Bearer ${LITELLM_MASTER_KEY}" \
-H "Content-Type: application/json" \
-d '{
"key_alias": "test-app-key",
"models": ["my-model"],
"max_budget": 5.00
}'
در پاسخ، LiteLLM یک کلید Virtual Key در اختیار شما قرار میدهد.
مثلاً:
sk-xxxxxxxxxxxxxxxx
این کلید را مانند password یا API credential محرمانه نگه دارید.
مرحله پانزدهم: تست Virtual Key
کلید تولیدشده را در یک متغیر ذخیره کنید:
export LITELLM_VIRTUAL_KEY="sk-YOUR_VIRTUAL_KEY"
حالا با Virtual Key یک درخواست API ارسال کنید:
curl -X POST \
"https://${LITELLM_DOMAIN}/v1/chat/completions" \
-H "Authorization: Bearer ${LITELLM_VIRTUAL_KEY}" \
-H "Content-Type: application/json" \
-d '{
"model": "my-model",
"messages": [
{
"role": "user",
"content": "Hello from LiteLLM"
}
]
}'
اگر پاسخ مدل برگردد، مسیر کامل زیر با موفقیت کار میکند:
Application
↓
Virtual Key
↓
Traefik
↓
LiteLLM
↓
Provider
↓
LLM Response
مرحله شانزدهم: مشاهده مصرف و هزینه
وارد پنل LiteLLM شوید:
https://llm.example.com/ui
در پنل میتوانید بخشهای مرتبط با مدلها، Virtual Keyها، Usage و Logs را بررسی کنید.
مزیت استفاده از PostgreSQL در این معماری این است که اطلاعات مدیریت Gateway، کلیدها و دادههای مصرف بعد از restart یا recreate شدن containerها باقی میمانند، چون دیتابیس روی storage دائمی نگهداری میشود.
محدود کردن هزینه برای هر API Key
یکی از کاربردهای مهم Virtual Keyها، تعیین سقف هزینه است.
مثلاً:
{
"key_alias": "website-ai",
"models": ["my-model"],
"max_budget": 10.00
}
در این مثال سقف بودجه کلید روی ۱۰ دلار قرار میگیرد.
LiteLLM همچنین امکان استفاده از budget duration، محدودیت درخواست و محدودیت token را برای کنترل بهتر مصرف فراهم میکند.
برای سرویسهای واقعی، بهتر است برای هر پروژه یک Key جدا ایجاد کنید:
website-ai
customer-panel
wordpress-plugin
mobile-app
internal-tools
به این ترتیب مصرف هر برنامه جداگانه قابل ردیابی خواهد بود.
نکات امنیتی مهم
فایل .env را هرگز داخل Git قرار ندهید.
برای آن مجوز محدود تنظیم کنید:
chmod 600 .env
پورتهای زیر را مستقیماً روی اینترنت منتشر نکنید:
4000
5432
9090
در Compose این پورتها فقط با expose در شبکه داخلی Docker در دسترس هستند و تنها Traefik پورتهای عمومی ۸۰ و ۴۴۳ را منتشر میکند.
Master Key را در کد برنامه قرار ندهید. برای برنامهها Virtual Key بسازید.
همچنین LITELLM_SALT_KEY را بهعنوان یک credential دائمی در نظر بگیرید و از آن backup امن داشته باشید. مستندات فعلی LiteLLM صراحتاً درباره غیرقابلچرخشبودن این کلید پس از ذخیره credentialهای Provider هشدار میدهند.
چرا نباید از LiteLLM v1.۸۹.۱ استفاده کنیم؟
آموزش قدیمی Vultr از v1.89.1 استفاده میکند، اما این نسخه مربوط به چند نسل قبل از LiteLLM فعلی است.
در حال حاضر نسخه stable منتشرشده v1.104.0 است و LiteLLM در فاصله کوتاه بین نسخهها تغییرات متعدد امنیتی، Gateway و routing دریافت کرده است. علاوه بر این، صفحه امنیت رسمی پروژه در سال ۲۰۲۶ چندین advisory با severity بالا و بحرانی را ثبت کرده است.
بنابراین برای یک نصب جدید، استفاده از نسخه بسیار قدیمی فقط برای اینکه آموزش اصلی از آن استفاده کرده، توصیه نمیشود. نسخه را pin کنید، release notes را بررسی کنید و قبل از ارتقا از PostgreSQL backup بگیرید.
آپدیت LiteLLM
قبل از هر بهروزرسانی:
cd ~/litellm
از دیتابیس backup تهیه کنید.
سپس release notes نسخه مقصد را بررسی کنید.
بعد image جدید را دریافت کنید:
docker compose pull
و سرویس را مجدداً اجرا کنید:
docker compose up -d
وضعیت را بررسی کنید:
docker compose ps
و لاگ LiteLLM:
docker compose logs --tail=100 litellm
در deploymentهای بزرگتر، LiteLLM برای migrationهای PostgreSQL روال جداگانهای دارد و در معماری production، migration job از proxy instanceها جدا میشود. برای نصبهای چندنمونهای و productionهای حساس، قبل از upgrade باید مستندات migration نسخه مقصد بررسی شود.
خطاهای رایج LiteLLM
خطای ۵۰۲ Bad Gateway
اگر Traefik پاسخ ۵۰۲ برگرداند:
docker compose ps
سپس:
docker compose logs --tail=100 litellm
و:
docker compose logs --tail=100 traefik
همچنین healthcheck LiteLLM را بررسی کنید.
خطای اتصال PostgreSQL
این دستور را اجرا کنید:
docker compose exec db \
pg_isready -U llmproxy -d litellm
اگر PostgreSQL سالم است، لاگ LiteLLM را بررسی کنید:
docker compose logs --tail=200 litellm
مدل پیدا نمیشود
مقدار model_name در config.yaml باید دقیقاً با مقداری که در درخواست API ارسال میکنید یکسان باشد.
مثلاً اگر دارید:
model_name: my-model
در درخواست نیز باید بنویسید:
{
"model": "my-model"
}
Provider API Key اشتباه است
اطمینان حاصل کنید که:
LLM_PROVIDER_API_KEY=...
مقدار صحیح دارد و در config.yaml از همان environment variable استفاده شده است:
api_key: os.environ/LLM_PROVIDER_API_KEY
HTTPS صادر نمیشود
سه مورد را بررسی کنید:
DNS A Record
Port 80
Port 443
سپس:
docker compose logs traefik
را بررسی کنید.
پنل /ui باز نمیشود
ابتدا وضعیت container را بررسی کنید:
docker compose ps
سپس:
docker compose logs --tail=200 litellm
همچنین مقادیر زیر در .env را بررسی کنید:
UI_USERNAME=admin
UI_PASSWORD=YOUR_STRONG_PASSWORD
LiteLLM در نسخههای فعلی همچنان امکان ورود Admin UI با UI_USERNAME و UI_PASSWORD را دارد؛ اگر UI_PASSWORD تنظیم نشده باشد، رفتار ورود میتواند به Master Key وابسته شود. برای محیطهای حساس، از credential مستقل برای UI و Virtual Keyهای جدا برای برنامهها استفاده کنید.
آیا LiteLLM بدون PostgreSQL هم اجرا میشود؟
بله، LiteLLM میتواند بهصورت بدون دیتابیس نیز برای سناریوهای ساده اجرا شود؛ اما در آن حالت قابلیتهایی مانند Virtual Key و budget tracking که به دیتابیس متکی هستند در دسترس نخواهند بود.
برای Gatewayای که قرار است چند برنامه یا کاربر از آن استفاده کنند، PostgreSQL انتخاب مناسبتری است.
آیا Redis برای LiteLLM لازم است؟
برای یک نصب تکسروری ساده، Redis الزام نیست.
اما وقتی LiteLLM را در چند instance اجرا میکنید، یا به rate limiting توزیعشده، router state و cache مشترک نیاز دارید، Redis وارد معماری میشود. در معماری production رسمی LiteLLM نیز Redis بهعنوان جزء زیرساختی deploymentهای چندنمونهای معرفی شده است.
آیا میتوان LiteLLM را روی VPS اجرا کرد؟
بله. VPS یکی از سادهترین محیطها برای اجرای LiteLLM است، بهخصوص زمانی که قصد دارید Docker Compose، PostgreSQL و reverse proxy را روی یک ماشین اجرا کنید.
برای workloadهای بزرگتر، high availability و چند نمونه Gateway، بهتر است معماری به سمت سرورهای مستقل برای دیتابیس و Redis و در ادامه Kubernetes یا زیرساخت مشابه حرکت کند.
LiteLLM برای چه پروژههایی مناسب است؟
LiteLLM میتواند برای سناریوهایی مانند این موارد مناسب باشد:
- ساخت AI Gateway اختصاصی
- اتصال چند Provider از طریق یک API
- مدیریت API Key برای چند پروژه
- اعمال سقف بودجه
- ثبت مصرف توکن
- مسیریابی درخواستها بین مدلها
- ساخت لایه مرکزی بین اپلیکیشن و سرویسهای LLM
- اتصال نرمافزارهایی که از OpenAI SDK استفاده میکنند به Gateway داخلی
پرسشهای متداول
LiteLLM چیست؟
LiteLLM یک AI Gateway متنباز است که درخواستهای مدلهای زبانی را از طریق یک API یکپارچه مدیریت و به Providerهای مختلف ارسال میکند.
آیا LiteLLM رایگان است؟
نسخه Open Source LiteLLM قابل self-host است و هسته Gateway امکاناتی مانند API سازگار با OpenAI، Virtual Key، spend tracking، budget و logging را ارائه میکند. قابلیتهای Enterprise امکانات مدیریتی و سازمانی بیشتری اضافه میکنند.
حداقل RAM برای نصب LiteLLM چقدر است؟
برای این سناریو حداقل 8GB RAM و ۴ هسته CPU بهعنوان نقطه شروع مناسب است؛ مقدار واقعی موردنیاز به تعداد درخواستها و سرویسهای جانبی وابسته است.
آیا برای LiteLLM به GPU نیاز داریم؟
خیر، اگر LiteLLM فقط بهعنوان Gateway برای APIهای خارجی استفاده شود، GPU لازم نیست. GPU زمانی مطرح میشود که خودتان بخواهید مدلهای محلی را روی همان سرور اجرا کنید.
Virtual Key در LiteLLM چیست؟
Virtual Key یک credential محدودشده برای دسترسی یک کاربر یا برنامه به Gateway است. میتوان دسترسی مدل، بودجه و محدودیت درخواست را برای آن تعیین کرد.
آیا LiteLLM با OpenAI SDK کار میکند؟
بله. یکی از اهداف LiteLLM ارائه API سازگار با OpenAI است؛ بنابراین در بسیاری از پروژهها با تغییر base_url و API Key میتوان درخواستها را از Gateway عبور داد.
پورت پیشفرض LiteLLM چیست؟
LiteLLM بهصورت پیشفرض سرویس Gateway را روی پورت 4000 ارائه میکند. در این معماری، پورت ۴۰۰۰ به اینترنت منتشر نمیشود و Traefik از داخل شبکه Docker به آن دسترسی دارد.
جمعبندی
با این ساختار، یک LiteLLM AI Gateway مستقل و قابل توسعه روی VPS دارید:
HTTPS
↓
Traefik
↓
LiteLLM
↓
PostgreSQL
↓
Virtual Keys / Usage / Budgets
LiteLLM
↓
LLM Provider
در کنار آن، Prometheus برای جمعآوری متریکها فعال است و PostgreSQL دادههای مدیریتی و مصرف را بهصورت دائمی نگهداری میکند.
برای استفاده واقعی، توصیه میشود LiteLLM را روی VPS جداگانه اجرا کنید، نسخه را pin نگه دارید، .env و کلیدها را امن نگه دارید، از Master Key برای اپلیکیشنها استفاده نکنید و برای هر برنامه Virtual Key جدا بسازید.
در این آموزش از LiteLLM v1.104.0 استفاده شده است؛ در صورت انتشار نسخه stable جدیدتر، پیش از تغییر نسخه release notes و migrationهای PostgreSQL را بررسی کنید.