Tek Arayüz, Tüm AI Modelleri: LiteLLM + OpenWebUI | Homelab #4

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.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir