Monitorizando logs de LLMs con litellm y langfuse

Contexto: has implementado o estás usando una aplicación web que internamente hace llamadas vía API a un LLM (GPT, Claude, LLama, whatever). Quieres analizar cuáles son los prompts que dicha aplicación está enviando. Necesitarás litellm (para que haga de proxy entre tu aplicación y el LLM) y langfuse, que recibirá un callback y te mostrará gráficamente todos los prompts. La idea es que litellm enviará automáticamente a langfuse una copia de cada lllamada al LLM (y de su respuesta) para que luego las puedas visualizar cómodamente.

Receta rápida:

Instala las dependencias necesarias

$ pip install litellm 'litellm[proxy]' prisma langfuse

Usa el fichero de configuración de litellm del que ya hablamos en su día en ikasten.io.

Instala Postgresql, por ejemplo, a través de docker. Para ello, usa el siguiente docker-compose.yaml:

version: '3'
services:
db:
image: postgres
restart: always
environment:
POSTGRES_DB: litellm
POSTGRES_USER: llmproxy
POSTGRES_PASSWORD: dbpassword9090
healthcheck:
test: ["CMD-SHELL", "pg_isready -d litellm -U llmproxy"]
interval: 1s
timeout: 5s
retries: 10
ports:
- "5432:5432"

(cambia el password dbpassword9090 como quieras). Postgresql es necesario para que litellm guarde información de los modelos. Necesitarás también crear un schema para postgresql a través de Prisma.

Copia el fichero schema.prisma del repositorio GitHub de litellm:

https://github.com/BerriAI/litellm/blob/main/schema.prisma

$ prisma generate

Lanza litellm :

$ DATABASE_URL="postgresql://llmproxy:dbpassword9090@localhost:5432/litellm" STORE_MODEL_IN_DB="True" LITELLM_MASTER_KEY=sk-12345  LITELLM_SALT_KEY="saltkey1234" litellm --config ./config.yaml 

Abre el panel de administración gráfica de litellm en localhost:4000/ui

Por defecto, login: admin, pass: el master_key que hayas definido. En el ejemplo: sk-12345.

Pulsa en Logging&Alerts -> Add Callback

Elige langfuse y a continuación, teclea los parámetros indicados:

Puedes obtener el public_key y secret_key creando una cuenta gratuita en langfuse. https://cloud.langfuse.com/

Crea un proyecto y obtén los api keys:

Prueba a pulsar en el Test Callback y deberías ver a los pocos segundos una nueva entrada de test en los logs de langfuse:

Más info:

https://robert-mcdermott.medium.com/centralizing-multi-vendor-llm-services-with-litellm-9874563f3062