paint-brush
Configuraciones LiteLLM: llame de manera confiable a más de 100 LLMpor@krrish
2,287 lecturas
2,287 lecturas

Configuraciones LiteLLM: llame de manera confiable a más de 100 LLM

por Krrish Dholakia3m2023/09/22
Read on Terminal Reader

Demasiado Largo; Para Leer

LiteLLM es un reemplazo directo del SDK de openai-python. Permitiéndole llamar a más de 100 LLM. Con los archivos de configuración, ahora puede permitirle agregar nuevos modelos en producción, sin cambiar ningún código del lado del servidor.
featured image - Configuraciones LiteLLM: llame de manera confiable a más de 100 LLM
Krrish Dholakia HackerNoon profile picture


El problema

Llamar a varios LLM implica configuraciones específicas del proveedor/modelo. Incluso si unifica las E/S, aún necesita una forma de manejar los casos extremos específicos del modelo/proveedor.


Nos enfrentamos a esto la semana pasada cuando Anthropic nos dijo que habíamos violado su política de contenido. Desde entonces, brindamos a nuestra comunidad acceso a LLM como Claude-2, etc. a través de nuestro servidor proxy de código abierto.


Verificar las consultas a través del punto final de moderación de OpenAI ralentizaría las consultas, por lo que solo queríamos ejecutar esto en los modelos de Anthropic.


 if model in ["claude-instant-1", "claude-2"]: # run moderations check return litellm.completion(model, messages)


Pero una lógica condicional como esta genera errores. Nos habíamos enfrentado a este problema exacto antes y habíamos creado LiteLLM para resolverlo (biblioteca de abstracción que simplificó las llamadas a la API de LLM).


tldr;

  • No queríamos lógica condicional en nuestro servidor.
  • Necesitábamos una forma de controlar para qué modelos/proveedores realizaba esta verificación.

La solución: archivos de configuración

Nuestra solución fue que LiteLLM manejara esto por nosotros y controlara su lógica a través de un archivo de configuración. Esto eliminó la lógica condicional de nuestro código de servidor y aún nos permitió controlar los detalles específicos del proveedor/modelo .


Esto también nos permitió manejar otros escenarios como errores de ventana de contexto, tokens máximos, etc.


Aquí está nuestro código completo:


 import litellm import os config = { "default_fallback_models": ["gpt-3.5-turbo", "claude-instant-1", "j2-ultra"], "model": { "claude-instant-1": { "needs_moderation": True }, "gpt-3.5-turbo": { "error_handling": { "ContextWindowExceededError": {"fallback_model": "gpt-3.5-turbo-16k"} } } } } # set env var os.environ["OPENAI_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your openai key os.environ["ANTHROPIC_API_KEY"] = "sk-litellm-5b46387675a944d2" # [OPTIONAL] replace with your anthropic key sample_text = "how does a court case get to the Supreme Court?" * 1000 messages = [{"content": sample_text, "role": "user"}] response = completion_with_config(model="gpt-3.5-turbo", messages=messages, config=config) print(response) # should be gpt-3.5-turbo-16k


Los archivos de configuración actualmente administran:

  • Lógica de avisos: elegir el modelo correcto para un aviso determinado, así como recortar un aviso si es más grande que cualquier modelo disponible
  • Lógica de respaldo: le permite establecer respaldos predeterminados y específicos del modelo (por ejemplo, el error de la ventana de contexto anterior).
  • Moderaciones: si un proveedor (por ejemplo, Anthropic) requiere que modere sus solicitudes


Con el tiempo, esto manejará otros parámetros específicos del modelo, como establecer tokens máximos, formato de mensajes, etc. ¡Las ideas y sugerencias son bienvenidas!

Conclusión

LiteLLM ya simplificó las llamadas a proveedores de LLM, con un reemplazo directo para el punto final de OpenAI ChatCompletion.


Con los archivos de configuración, ahora puede permitirle agregar nuevos modelos en producción, sin cambiar ningún código del lado del servidor.


En general, LiteLLM es una excelente opción para cualquiera que busque agregar modelos que no sean OpenAI en producción de manera rápida y sencilla.


Estamos tratando activamente de hacer crecer este proyecto, por lo que no importa su nivel de habilidad, ¡agradecemos las contribuciones! Abra un problema si encuentra características o errores faltantes o si contribuye a problemas existentes. Destacanos en GitHub si quieres seguir nuestro progreso a medida que llegan nuevas actualizaciones.