paint-brush
Конфигурации LiteLLM: надежно звоните более чем 100 LLMк@krrish
2,951 чтения
2,951 чтения

Конфигурации LiteLLM: надежно звоните более чем 100 LLM

к Krrish Dholakia3m2023/09/22
Read on Terminal Reader
Read this story w/o Javascript

Слишком долго; Читать

LiteLLM — это замена SDK openai-python. Позволяет вам позвонить более чем 100 LLM. Благодаря файлам конфигурации теперь вы можете добавлять новые модели в производство без изменения какого-либо серверного кода.
featured image - Конфигурации LiteLLM: надежно звоните более чем 100 LLM
Krrish Dholakia HackerNoon profile picture
0-item
1-item


Проблема

Вызов нескольких 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


Файлы конфигурации в настоящее время управляют:

  • Логика подсказки — выбор правильной модели для заданной подсказки, а также обрезка подсказки, если она больше любой доступной модели.
  • Логика возврата — позволяет вам устанавливать резервные варианты по умолчанию, а также специфичные для модели (например, ошибка контекстного окна выше).
  • Модерация — если провайдер (например, Anthropic) требует от вас модерации ваших запросов.


Со временем это будет обрабатывать и другие параметры, специфичные для модели, такие как установка максимального количества токенов, форматирование подсказок и т. д. Идеи/предложения приветствуются!

Заключение

LiteLLM уже упростил вызов поставщиков LLM, заменив конечную точку OpenAI ChatCompletion.


Благодаря файлам конфигурации теперь вы можете добавлять новые модели в производство без изменения какого-либо серверного кода.


В целом, LiteLLM — отличный выбор для тех, кто хочет быстро и легко добавлять в производство модели, отличные от OpenAI.


Мы активно пытаемся развивать этот проект, поэтому независимо от вашего уровня навыков, мы приветствуем вклад! Откройте проблему, если обнаружите недостающие функции/ошибки или усугубите существующие проблемы. Отметьте нас на GitHub, если хотите следить за нашим прогрессом по мере выхода новых обновлений.