Вызов нескольких LLM требует настройки конкретного поставщика/модели. Даже если вы унифицируете ввод-вывод, вам все равно нужен способ обработки крайних случаев, зависящих от модели/провайдера.
Мы столкнулись с этим на прошлой неделе, когда Anthropic сообщила нам, что мы нарушили их политику в отношении контента. С тех пор мы предоставляем нашему сообществу доступ к LLM, таким как Claude-2 и т. д., через наш прокси-сервер с открытым исходным кодом.
Проверка запросов через конечную точку модерации OpenAI замедляла бы запросы, поэтому мы хотели запустить это только на моделях Anthropic.
if model in ["claude-instant-1", "claude-2"]: # run moderations check return litellm.completion(model, messages)
Но подобная условная логика приводит к ошибкам. Мы уже сталкивались с этой проблемой раньше и создали LiteLLM для решения этой проблемы (библиотека абстракций, упрощающая вызовы API LLM).
тлдр;
Наше решение заключалось в том, чтобы LiteLLM выполнял эту задачу за нас и управлял ее логикой через файл конфигурации. Это удалило условную логику из нашего серверного кода и по-прежнему позволило нам контролировать конкретные детали поставщика/модели .
Это также позволило нам обрабатывать другие сценарии, такие как ошибки контекстного окна, максимальное количество токенов и т. д.
Вот наш полный код:
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
Файлы конфигурации в настоящее время управляют:
Со временем это будет обрабатывать и другие параметры, специфичные для модели, такие как установка максимального количества токенов, форматирование подсказок и т. д. Идеи/предложения приветствуются!
LiteLLM уже упростил вызов поставщиков LLM, заменив конечную точку OpenAI ChatCompletion.
Благодаря файлам конфигурации теперь вы можете добавлять новые модели в производство без изменения какого-либо серверного кода.
В целом, LiteLLM — отличный выбор для тех, кто хочет быстро и легко добавлять в производство модели, отличные от OpenAI.
Мы активно пытаемся развивать этот проект, поэтому независимо от вашего уровня навыков, мы приветствуем вклад! Откройте проблему, если обнаружите недостающие функции/ошибки или усугубите существующие проблемы. Отметьте нас на GitHub, если хотите следить за нашим прогрессом по мере выхода новых обновлений.