Selam dostlarım bu yazıda sizlere hem bir LLM Proxy olan LiteLLM’den hem de yapay zekâ arayüzü OpenWebUI’dan bahsedeceğim. Kendi homelab ortamımızda Docker kullanarak bu ikisini bir araya getirip, tek bir API ve tek bir arayüz üzerinden bütün sağlayıcıların dil modellerine erişim sağlayabiliyoruz.
LiteLLM Nedir?
LiteLLM’i kısaca anlatmak gerekirse, farklı sağlayıcılara (OpenAI, Anthropic, Meta, Mistral, Google vb.) tek bir API üzerinden ulaşmamızı sağlayan bir proxy katmanı. Normalde her model için ayrı ayrı API key tanımlamak, entegrasyon yapmak ya da farklı endpointlerle uğraşmak gerekirken, LiteLLM sayesinde her şey tek bir API uyumlu format üzerinden yürüyor. Yani bir nevi bütün modelleri tek çatı altına topluyor diyebiliriz.
OpenWebUI Nedir?
OpenWebUI ise bizim kullanıcı dostu AI arayüzümüz. LiteLLM arkada proxy görevi görürken, OpenWebUI ön tarafta bizlere modern bir panel sunuyor. Buradan farklı modelleri seçebiliyor, sohbet geçmişine bakabiliyor ve kendi ihtiyacımıza göre özelleştirmeler yapabiliyoruz. En güzel tarafı da tamamen açık kaynaklı olması ve Docker ile birkaç komutla kolayca kurulabilmesi.
Kurulum
Video içerisinde Docker ve Docker Compose kullanarak kurulumu gerçekleştirmiştik. Aşağıda kullandığımız docker-compose.yml
dosyasını bulabilirsiniz.
Kuruluma başlamadan önce
.env
dosyasında LiteLLM için bazı anahtarları belirlemeniz gerekiyor.
LITELLM_MASTER_KEY
→ admin kullanıcınızın şifresi.LITELLM_SALT_KEY
→ şifreleri ve diğer anahtarları saltlamak için gerekli.Bu iki değer de
sk-
ile başlamalı ve istediğiniz uzunlukta olabilir.
services:
litellm:
container_name: litellm
image: ghcr.io/berriai/litellm:main-stable
restart: always
volumes:
- ./config.yaml:/app/config.yaml
command:
- "--config=/app/config.yaml"
labels:
- "com.centurylinklabs.watchtower.enable=false"
ports:
- "4000:4000"
environment:
DATABASE_URL: "postgresql://llmproxy:dbpassword9090@db:5432/litellm"
STORE_MODEL_IN_DB: "True"
env_file:
- .env
depends_on:
- db
healthcheck:
test: [
"CMD",
"curl",
"-f",
"http://localhost:4000/health/liveliness || exit 1",
]
interval: 30s
timeout: 10s
retries: 3
start_period: 40s
db:
container_name: litellm-db
image: postgres:16
restart: always
environment:
POSTGRES_DB: litellm
POSTGRES_USER: llmproxy
POSTGRES_PASSWORD: dbpassword9090
ports:
- "5432:5432"
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 1s
timeout: 5s
retries: 10
open-webui:
image: ghcr.io/open-webui/open-webui:main
restart: always
container_name: open-webui
volumes:
- openweb_data:/app/backend/data
ports:
- "3030:8080"
volumes:
postgres_data:
name: litellm_postgres_data
openweb_data:
Ayrıca LiteLLM ve OpenWebUI dökümanlarını da kontrol etmenizi tavsiye ederim.
Kapanış
Dostlarım her bir detaya girip kafanızı şişirmek istemediğimden bu günlük benden bu kadar. Youtubedan abone olup videoya like atmayı unutmayın, kendinize çok cici bakın.