Securizare Ollama cu LiteLLM: adăugare API Key, rate limiting și filtrare conținut

Configurare noua (How To)

Situatie

Ollama este un instrument fantastic pentru rularea modelelor AI local, dar a fost conceput pentru utilizare pe o singură mașină. În mod implicit, serverul Ollama (portul 11434) este deschis; oricine din rețeaua locală poate interoga modelul, consumând resurse GPU costisitoare sau poate injecta prompt-uri malițioase.

Nu există suport nativ pentru chei de acces (API Keys) sau pentru moderarea conținutului (filtre pentru date sensibile/PII sau limbaj inadecvat). Soluția este plasarea LiteLLM ca un proxy invers în fața Ollama. Astfel, LiteLLM gestionează autentificarea și filtrarea, iar Ollama rămâne izolat, acceptând cereri doar de la LiteLLM.

Solutie

Pasi de urmat

1.Configurare LiteLLM (Proxy către Ollama)

Vom crea un fișier litellm_config.yaml. Aici definim modelul Ollama și setăm parametrii.

litellm_config.yaml:

model_list:
  - model_name: gpt-3.5-turbo # Putem "minți" aplicațiile că e GPT-3.5, dar în spate e Llama3
    litellm_params:
      model: ollama/llama3
      api_base: "http://host.docker.internal:11434" # Adresa internă a Ollama
      rpm: 10 # Rate Limit: Maxim 10 cereri pe minut (Filtru de trafic)

Pasul 2: Lansarea Proxy-ului cu API Key (Master Key)

Cea mai simplă metodă de a pune o parolă pe Ollama este variabila de mediu LITELLM_MASTER_KEY. Orice cerere către proxy care nu are acest Header va fi respinsă (401 Unauthorized).

Rulați containerul Docker:

docker run -d \
  -v $(pwd)/litellm_config.yaml:/app/config.yaml \
  -p 4000:4000 \
  -e LITELLM_MASTER_KEY="sk-parola-mea-secreta-123" \
  --name litellm-ollama-guard \
  ghcr.io/berriai/litellm:main-latest \
  --config /app/config.yaml

Acum, accesul la AI se face doar pe portul 4000 și DOAR cu cheia definită.

Pasul 3: Adăugare Filtru de Conținut (Guardrails) – Opțional

Dacă doriți să filtrați răspunsurile (de exemplu, să blocați divulgarea de email-uri sau limbaj toxic), LiteLLM suportă “Presidio” sau reguli simple. Modificați litellm_config.yaml pentru a adăuga un filtru simplu de pre-procesare:

model_list:
  - model_name: llama3-secure
    litellm_params:
      model: ollama/llama3
      api_base: "http://host.docker.internal:11434"
    # Exemplu simplu de filtru: respinge prompt-uri prea lungi sau suspecte
    tpm: 1000 # Tokeni pe minut (filtru de volum)
    max_tokens: 500 # Limitează lungimea răspunsului

Pentru filtre avansate de conținut (PII, Toxicitate), LiteLLM se poate conecta la API-uri dedicate precum Llama Guard, dar configurarea de bază de mai sus protejează împotriva abuzului de resurse (spam).

Pasul 4: Testare Acces Securizat

Încercați să accesați noul endpoint.

Test 1 (Fără cheie – Eșec așteptat): curl http://localhost:4000/v1/chat/completions ... -> Rezultat: {"error": "Authentication Error"}

Test 2 (Cu cheie – Succes):

curl http://localhost:4000/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer sk-parola-mea-secreta-123" \
  -d '{
    "model": "gpt-3.5-turbo",
    "messages": [{"role": "user", "content": "Salut!"}]
  }'

Tip solutie

Permanent

Voteaza

(7 din 16 persoane apreciaza acest articol)

Despre Autor

Leave A Comment?