paint-brush
LiteLLM 配置:可靠地调用 100 多个 LLM经过@krrish
2,951 讀數
2,951 讀數

LiteLLM 配置:可靠地调用 100 多个 LLM

经过 Krrish Dholakia3m2023/09/22
Read on Terminal Reader

太長; 讀書

LiteLLM 是 openai-python sdk 的直接替代品。让您致电 100 多名法学硕士。 通过配置文件,它现在可以让您在生产中添加新模型,而无需更改任何服务器端代码。
featured image - LiteLLM 配置:可靠地调用 100 多个 LLM
Krrish Dholakia HackerNoon profile picture


问题

调用多个 LLM 涉及提供商/模型特定的配置。即使您统一了 I/O,您仍然需要一种方法来处理特定于模型/提供商的边缘情况。


上周,当 Anthropic 告诉我们我们违反了他们的内容政策时,我们就遇到了这个问题。此后,我们通过我们的开源代理服务器为社区提供对 Claude-2 等 LLM 的访问。


通过 OpenAI 审核端点检查查询会减慢查询速度,因此我们只想在 Anthropic 的模型上运行它。


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


但像这样的条件逻辑会导致错误。我们之前就遇到过这个问题,并构建了 LiteLLM 来为我们解决这个问题(简化 LLM API 调用的抽象库)。


太棒了;

  • 我们不想在我们的服务器上使用条件逻辑。
  • 我们需要一种方法来控制运行此检查的模型/提供商。

解决方案:配置文件

我们的解决方案是让 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 的端点。


通过配置文件,它现在可以让您在生产中添加新模型,而无需更改任何服务器端代码。


总体而言,对于任何希望在生产中快速轻松地添加非 OpenAI 模型的人来说,LiteLLM 是一个绝佳的选择。


我们正在积极努力发展这个项目,因此无论您的技术水平如何,我们都欢迎您的贡献!如果您发现缺少的功能/错误或对现有问题有贡献,请提出问题。如果您想在新更新到来时关注我们的进展,请在 GitHub 上给我们加星标