Litelm: LiteLLM 精简版

Hacker News Top 工具

摘要

Litelm 是一个轻量级 Python 库,提供从 LiteLLM 中提取的核心 LLM 路由和消息翻译功能,旨在通过最小依赖实现简洁和高效。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/09/11 20:24

kennethwolters/litelm

来源:https://github.com/kennethwolters/litelm

litelm

PyPI (https://pypi.org/project/litelm/) Python (https://pypi.org/project/litelm/) 测试 (https://github.com/kennethwolters/litelm/actions/workflows/test.yml) 许可证:MIT (https://opensource.org/licenses/MIT)

用约 2,900 行代码和 2 个依赖(openaihttpx)实现 litellm 的路由与格式转换。

litellm 能够在多个服务商之间路由 LLM 调用并转换消息格式。但其核心功能淹没在超过 10 万行的代理服务器、缓存层、成本追踪以及大多数用户从未使用的数十项功能代码中。litelm 仅提取了调用路径的核心——模型路由、消息转换、流式传输、工具使用和嵌入向量——除此之外别无他物。没有 Router 类,没有代理服务器,没有缓存功能。

安装

pip install litelm                # openai + httpx
pip install litelm[anthropic]     # + anthropic SDK
pip install litelm[bedrock]       # + boto3
pip install litelm[all]           # 全部功能

使用

import litelm

# 基础补全
response = litelm.completion("openai/gpt-4o", messages=[{"role": "user", "content": "你好!"}])
print(response.choices[0].message.content)

# 流式传输
for chunk in litelm.completion("groq/llama-3.1-70b-versatile", messages=[...], stream=True):
    print(chunk.choices[0].delta.content or "", end="")

# 嵌入向量
response = litelm.embedding("openai/text-embedding-3-small", input=["hello world"])

每个函数都有异步变体:acompletionaembeddingaresponsesatext_completion

API 设计与 litellm 保持一致——相同的函数名、相同的参数、相同的响应类型。如果你正在使用 litellm,只需将导入语句中的 litellm 替换为 litelm 即可完成迁移。

功能清单

功能litellmlitelm
模型路由(provider/model → 正确端点)
消息格式转换(Anthropic、Bedrock、Cloudflare、Mistral)
流式传输 + stream_chunk_builder
工具使用(函数调用)
嵌入向量
文本补全
OpenAI Responses API
模拟响应
路由器(负载均衡、故障转移)
代理服务器
缓存 / 预算 / 成本追踪
Token 计数
图像生成、音频、OCR、微调
代理、安全护栏、调度器

服务商支持

通过 "provider/model-name" 语法路由至 19 个服务商。任何 OpenAI 兼容端点均可通过 api_base 参数接入。

服务商环境变量处理器已验证
OpenAIOPENAI_API_KEYOpenAI SDK
AnthropicANTHROPIC_API_KEY自定义
GroqGROQ_API_KEYOpenAI 兼容
MistralMISTRAL_API_KEY自定义
xAIXAI_API_KEYOpenAI 兼容
OpenRouterOPENROUTER_API_KEYOpenAI 兼容
AzureAZURE_API_KEYOpenAI SDK (Azure)
BedrockAWS_ACCESS_KEY_ID自定义
CloudflareCLOUDFLARE_API_TOKEN自定义
TogetherTOGETHERAI_API_KEYOpenAI 兼容
FireworksFIREWORKS_API_KEYOpenAI 兼容
DeepSeekDEEPSEEK_API_KEYOpenAI 兼容
PerplexityPERPLEXITYAI_API_KEYOpenAI 兼容
DeepInfraDEEPINFRA_API_TOKENOpenAI 兼容
GeminiGEMINI_API_KEYOpenAI 兼容
CohereCOHERE_API_KEYOpenAI 兼容
OllamaOpenAI 兼容
vLLMOpenAI 兼容
LM StudioOpenAI 兼容

API 密钥

设置服务商对应的环境变量:

export OPENAI_API_KEY=sk-...
export ANTHROPIC_API_KEY=sk-ant-...

或直接传递:

litelm.completion("openai/gpt-4o", messages=[...], api_key="sk-...")
litelm.completion("openai/gpt-4o", messages=[...], api_base="http://localhost:8000/v1")

错误处理

所有服务商错误均映射至 litelm 的异常体系:

from litelm import ContextWindowExceededError, RateLimitError, AuthenticationError

try:
    response = litelm.completion("openai/gpt-4o", messages=messages)
except ContextWindowExceededError:
    # 提示过长 —— 截断后重试
    pass
except RateLimitError:
    # 触发速率限制
    pass
except AuthenticationError:
    # API 密钥无效
    pass

工具调用

tools = [{"type": "function", "function": {
    "name": "get_weather",
    "parameters": {"type": "object", "properties": {"city": {"type": "string"}}},
}}]

response = litelm.completion(
    "openai/gpt-4o", messages=[{"role": "user", "content": "巴黎的天气如何?"}],
    tools=tools, tool_choice="required",
)
tool_call = response.choices[0].message.tool_calls[0]
print(tool_call.function.name, tool_call.function.arguments)

自定义 / 本地服务商

任何 OpenAI 兼容服务器均可通过 api_base 接入:

# vLLM
litelm.completion("openai/my-model", messages=[...], api_base="http://localhost:8000/v1")

# Ollama
litelm.completion("ollama/llama3", messages=[...], api_base="http://localhost:11434/v1")

# LM Studio
litelm.completion("openai/local-model", messages=[...], api_base="http://localhost:1234/v1")

开发透明度

litelm 是人类主导、AI 辅助开发的软件。大部分代码由 Claude Code 基于 Claude Opus 4.6/4.7 编写。2026-05-14 之后的代码均通过 Pi 基于 GPT-5.5 编写。兼容性声明基于测试和维护者审查,而非 AI 的参与程度。

上游验证

维护者验证声明(2026-09-11):LiteLLM 的路由/格式转换变更已通过从 649eb2d9a715df2 的提交记录进行审查。该审计筛选了 360 个核心路径提交,检查了上游测试中的潜在相关行为,并以测试优先的方式修复了由此产生的兼容性缺口。本地范围测试:262 通过,55 跳过;所有 45 个可用服务商实时测试和 10 个 DSPy 冒烟测试在当前依赖锁定下均通过。

此声明仅验证 litelm 已声明的路由/格式转换/DSPy 功能范围,并非完整的 litellm 兼容性保证。

状态

Alpha 阶段。 262 项自有测试全部通过。当前基于 LiteLLM 9a715df2 基线的范围化测试包含 75 项移植测试且无残留可操作的断言/运行时失败。

DSPy (https://github.com/stanfordnlp/dspy) 集成已验证——全部 7 条执行路径均通过实际测试(Predict、CoT、类型化签名、流式传输、嵌入向量、工具使用、多输出)。

测试

uv run --extra all pytest tests/ -x --ignore=tests/ported --timeout=10  # 262 项非实时测试
bash scripts/ported_contract.sh                                        # 49 项快速上游契约测试
uv run --extra all pytest tests/test_live.py -m live --timeout=30       # 45 项服务商实时测试
uv run pytest tests/test_dspy_smoke.py -m live --timeout=60             # 10 项 DSPy 集成测试

实时测试需要在 .env.test 文件中设置 API 密钥。默认跳过;通过 -m live 标志运行。

相似文章

llm 0.32a1

Simon Willison's Blog

llm 0.32a1 版本发布说明。llm 是由 Simon Willison 开发的一个用于处理大语言模型的 Python 命令行工具和库。

llm 0.31.1

Simon Willison's Blog

Simon Willison 发布的 llm 0.31.1,这是一个用于与大语言模型交互的命令行工具。

用于与LLM交互的Prolog库

Lobsters Hottest

一个最小的SWI-Prolog库(pllm),它公开了llm/2谓词,用于向兼容OpenAI的聊天/补全端点发送提示并统一响应,支持配置不同的提供商,如OpenAI和Ollama。