🚅 LiteLLM
使用 OpenAI 格式调用所有 LLM API [Bedrock, Huggingface, VertexAI, TogetherAI, Azure, OpenAI, Groq 等]
LiteLLM 代理服务器 (LLM 网关) | 托管代理 (预览) | 企业级
LiteLLM 管理:
- 将输入翻译为供应商的
completion
,embedding
和image_generation
端点 - 一致输出,文本响应将始终可用在
['choices'][0]['message']['content']
- 跨多个部署的重试/回退逻辑(例如 Azure/OpenAI) - 路由器
- 为每个项目、API 密钥、模型设置预算和速率限制 LiteLLM 代理服务器 (LLM 网关)
跳转到 LiteLLM 代理 (LLM 网关) 文档
跳转到支持的 LLM 供应商
🚨 稳定版发布:使用带有 -stable
标签的 docker 镜像。这些镜像在发布前已进行 12 小时的负载测试。
支持更多的供应商。缺少供应商或 LLM 平台,请提出 功能请求.
使用方法 (文档)
[!重要] LiteLLM v1.0.0 现在需要
openai>=1.0.0
。迁移指南 在此
LiteLLM v1.40.14+ 现在需要pydantic>=2.0.0
。无需更改。
pip install litellm
from litellm import completion
import os
## 设置环境变量
os.environ["OPENAI_API_KEY"] = "你的-openai-key"
os.environ["COHERE_API_KEY"] = "你的-cohere-key"
messages = [{ "content": "你好,你怎么样?","role": "user"}]
# openai 调用
response = completion(model="gpt-3.5-turbo", messages=messages)
# cohere 调用
response = completion(model="command-nightly", messages=messages)
print(response)
调用供应商支持的任何模型,使用 model=<provider_name>/<model_name>
。这里可能有供应商特定的细节,因此请参见 供应商文档获取更多信息
异步调用 (文档)
from litellm import acompletion
import asyncio
async function test_get_response(){
user_message = "你好,你怎么样?"
messages = [{"content": user_message, "role": "user"}]
response = await acompletion(model="gpt-3.5-turbo", messages=messages)
return response
response = asyncio.run(test_get_response())
print(response)
流式传输 (文档)
liteLLM 支持流式传输模型响应,传递 stream=True
以获取响应中的流式迭代器。
流式传输支持所有模型(Bedrock, Huggingface, TogetherAI, Azure, OpenAI 等)
from litellm import completion
response = completion(model="gpt-3.5-turbo", messages=messages, stream=True)
for part in response:
print(part.choices[0].delta.content or "")
# claude 2
response = completion('claude-2', messages, stream=True)
for part in response:
print(part.choices[0].delta.content or "")
日志观测 (文档)
LiteLLM 曝露了预定义的回调函数,用于将数据发送到 Lunary, Langfuse, DynamoDB, s3 存储桶, Helicone, Promptlayer, Traceloop, Athina, Slack
from litellm import completion
## 设置日志工具的环境变量
os.environ["LUNARY_PUBLIC_KEY"] = "你的-lunary-public-key"
os.environ["HELICONE_API_KEY"] = "你的-helicone-auth-key"
os.environ["LANGFUSE_PUBLIC_KEY"] = ""
os.environ["LANGFUSE_SECRET_KEY"] = ""
os.environ["ATHINA_API_KEY"] = "你的-athina-api-key"
os.environ["OPENAI_API_KEY"]
# 设置回调函数
litellm.success_callback = ["lunary", "langfuse", "athina", "helicone"] # 将输入/输出记录到 lunary, langfuse, supabase, athina, helicone 等
# openai 调用
response = completion(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "嗨 👋 - 我是 openai"}])
LiteLLM 代理服务器 (LLM 网关) - (文档)
在多个项目中跟踪花费和负载平衡
该代理提供:
📖 代理端点 - Swagger 文档
快速启动代理 - CLI
pip install 'litellm[proxy]'
步骤 1: 启动 litellm 代理
$ litellm --model huggingface/bigcode/starcoder
#信息: 代理运行于 http://0.0.0.0:4000
步骤 2: 向代理发送 ChatCompletions 请求
import openai # openai v1.0.0+
client = openai.OpenAI(api_key="anything",base_url="http://0.0.0.0:4000") # 将代理设置为 base_url
# 请求发送到在 litellm 代理上设置的模型,`litellm --model`
response = client.chat.completions.create(model="gpt-3.5-turbo", messages = [
{
"role": "user",
"content": "这是一次测试请求,写一首短诗"
}
])
print(response)
代理密钥管理 (文档)
将代理连接到 Postgres 数据库以创建代理密钥
# 获取代码
git clone https://github.com/BerriAI/litellm
# 进入文件夹
cd litellm
# 添加主密钥 - 你可以在设置后更改它
echo 'LITELLM_MASTER_KEY="sk-1234"' > .env
# 添加 litellm 盐密钥 - 添加模型后你不能更改此密钥
# 它用于加密/解密你的 LLM API 密钥凭据
# 我们推荐 - https://1password.com/password-generator/
# 密码生成器以获得一个随机哈希作为 litellm 盐密钥
echo 'LITELLM_SALT_KEY="sk-1234"' > .env
source .env
# 启动
docker-compose up
在你的代理服务器上 /ui
上的 UI
在多个项目中设置预算和速率限制
POST /key/generate
请求
curl 'http://0.0.0.0:4000/key/generate' \
--header 'Authorization: Bearer sk-1234' \
--header 'Content-Type: application/json' \
--data-raw '{"models": ["gpt-3.5-turbo", "gpt-4", "claude-2"], "duration": "20m","metadata": {"user": "ishaan@berri.ai", "team": "core-infra"}}'
预期响应
{
"key": "sk-kdEXbIqZRwEeEiHwdg7sFA", # Bearer 令牌
"expires": "2023-11-19T01:38:25.838000+00:00" # datetime 对象
}
支持的供应商 (文档)
<SOURCE_TEXT>
| 提供商 | [Completion](https://docs.litellm.ai/docs/#basic-usage) | [Streaming](https://docs.litellm.ai/docs/completion/stream#streaming-responses) | [Async Completion](https://docs.litellm.ai/docs/completion/stream#async-completion) | [Async Streaming](https://docs.litellm.ai/docs/completion/stream#async-streaming) | [Async Embedding](https://docs.litellm.ai/docs/embedding/supported_embedding) | [Async Image Generation](https://docs.litellm.ai/docs/image_generation) |
|---------------------------------------------------------------------------------|-------------------------------------------------------|-------------------------------------------------------------------------------|---------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|-------------------------------------------------------------------------------|---------------------------------------------------------------------------|
| [openai](https://docs.litellm.ai/docs/providers/openai) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [azure](https://docs.litellm.ai/docs/providers/azure) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [aws - sagemaker](https://docs.litellm.ai/docs/providers/aws_sagemaker) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [aws - bedrock](https://docs.litellm.ai/docs/providers/bedrock) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [google - vertex_ai](https://docs.litellm.ai/docs/providers/vertex) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| [google - palm](https://docs.litellm.ai/docs/providers/palm) | ✅ | ✅ | ✅ | ✅ | | |
| [google AI Studio - gemini](https://docs.litellm.ai/docs/providers/gemini) | ✅ | ✅ | ✅ | ✅ | | |
| [mistral ai api](https://docs.litellm.ai/docs/providers/mistral) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [cloudflare AI Workers](https://docs.litellm.ai/docs/providers/cloudflare_workers) | ✅ | ✅ | ✅ | ✅ | | |
| [cohere](https://docs.litellm.ai/docs/providers/cohere) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [anthropic](https://docs.litellm.ai/docs/providers/anthropic) | ✅ | ✅ | ✅ | ✅ | | |
| [empower](https://docs.litellm.ai/docs/providers/empower) | ✅ | ✅ | ✅ | ✅ |
| [huggingface](https://docs.litellm.ai/docs/providers/huggingface) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [replicate](https://docs.litellm.ai/docs/providers/replicate) | ✅ | ✅ | ✅ | ✅ | | |
| [together_ai](https://docs.litellm.ai/docs/providers/togetherai) | ✅ | ✅ | ✅ | ✅ | | |
| [openrouter](https://docs.litellm.ai/docs/providers/openrouter) | ✅ | ✅ | ✅ | ✅ | | |
| [ai21](https://docs.litellm.ai/docs/providers/ai21) | ✅ | ✅ | ✅ | ✅ | | |
| [baseten](https://docs.litellm.ai/docs/providers/baseten) | ✅ | ✅ | ✅ | ✅ | | |
| [vllm](https://docs.litellm.ai/docs/providers/vllm) | ✅ | ✅ | ✅ | ✅ | | |
| [nlp_cloud](https://docs.litellm.ai/docs/providers/nlp_cloud) | ✅ | ✅ | ✅ | ✅ | | |
| [aleph alpha](https://docs.litellm.ai/docs/providers/aleph_alpha) | ✅ | ✅ | ✅ | ✅ | | |
| [petals](https://docs.litellm.ai/docs/providers/petals) | ✅ | ✅ | ✅ | ✅ | | |
| [ollama](https://docs.litellm.ai/docs/providers/ollama) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [deepinfra](https://docs.litellm.ai/docs/providers/deepinfra) | ✅ | ✅ | ✅ | ✅ | | |
| [perplexity-ai](https://docs.litellm.ai/docs/providers/perplexity) | ✅ | ✅ | ✅ | ✅ | | |
| [Groq AI](https://docs.litellm.ai/docs/providers/groq) | ✅ | ✅ | ✅ | ✅ | | |
| [Deepseek](https://docs.litellm.ai/docs/providers/deepseek) | ✅ | ✅ | ✅ | ✅ | | |
| [anyscale](https://docs.litellm.ai/docs/providers/anyscale) | ✅ | ✅ | ✅ | ✅ | | |
| [IBM - watsonx.ai](https://docs.litellm.ai/docs/providers/watsonx) | ✅ | ✅ | ✅ | ✅ | ✅ | |
| [voyage ai](https://docs.litellm.ai/docs/providers/voyage) | | | | | ✅ | |
| [xinference [Xorbits Inference]](https://docs.litellm.ai/docs/providers/xinference) | | | | | ✅ | |
| [FriendliAI](https://docs.litellm.ai/docs/providers/friendliai) | ✅ | ✅ | ✅ | ✅ | | |
[**阅读文档**](https://docs.litellm.ai/docs/)
## 贡献
要贡献:在本地克隆库 -> 进行更改 -> 提交带有更改的 PR。
以下是在本地修改仓库的方法:
第 1 步:克隆仓库
git clone https://github.com/BerriAI/litellm.git
第 2 步:进入项目目录,并安装依赖:
cd litellm poetry install -E extra_proxy -E proxy
第 3 步:测试你的更改:
cd litellm/tests # 当前目录:Documents/litellm/litellm/tests poetry run flake8 poetry run pytest .
第 4 步:提交带有更改的 PR! 🚀
- 将你的分支推送到你的 GitHub 仓库
- 从那里提交 PR
# 企业版
对于需要更好安全性、用户管理和专业支持的公司
[与创始人交谈](https://calendly.com/d/4mp-gd3-k5k/litellm-1-1-onboarding-chat)
这包括:
- ✅ **符合 [LiteLLM 商业许可证](https://docs.litellm.ai/docs/proxy/enterprise) 的功能:**
- ✅ **功能优先级**
- ✅ **自定义集成**
- ✅ **专业支持 - 专属 discord 和 slack 支持**
- ✅ **自定义服务级别协议 (SLA)**
- ✅ **通过单点登录 (SSO) 进行安全访问**
# 支持 / 与创始人交谈
- [安排演示 👋](https://calendly.com/d/4mp-gd3-k5k/berriai-1-1-onboarding-litellm-hosted-version)
- [社区 Discord 💭](https://discord.gg/wuPM9dRgDw)
- 我们的电话号码 📞 +1 (770) 8783-106 / +1 (412) 618-6238
- 我们的电邮 ✉️ ishaan@berri.ai / krrish@berri.ai
# 为什么我们要构建这个
- **简化需求**:我们的代码开始变得极其复杂,需要在 Azure、OpenAI 和 Cohere 之间管理和转换调用。
# 贡献者
<!-- ALL-CONTRIBUTORS-LIST:START - 请不要移除或修改此部分 -->
<!-- prettier-ignore-start -->
<!-- markdownlint-disable -->
<!-- markdownlint-restore -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
<a href="https://github.com/BerriAI/litellm/graphs/contributors">
<img src="https://yellow-cdn.veclightyear.com/35dd4d3f/ea220548-f149-445f-bd7d-6a043bc7e6e5.png" />
</a>
</SOURCE_TEXT>