LiteLLM:简化大语言模型的 API 调用

B站影视 电影资讯 2025-03-19 08:00 1

摘要:如今大语言模型蓬勃发展,日新月异,而开发者们面临着一个共同的挑战:不同的大语言模型提供商有着各自独特的 API 格式和调用方式,这无疑增加了开发的复杂性和成本。

如今大语言模型蓬勃发展,日新月异,而开发者们面临着一个共同的挑战:不同的大语言模型提供商有着各自独特的 API 格式和调用方式,这无疑增加了开发的复杂性和成本。

LiteLLM 项目的出现,为解决这一问题提供了有效的方案,其能够将所有大语言模型的 API 调用统一映射到 OpenAI 的 ChatCompletion 格式,从而简化了开发流程。

LiteLLM 是一个旨在简化大语言模型 API 调用的项目,其代码仓库位于 https://github.com/BerriAI/litellm 。该项目能使用 OpenAI 格式来调用所有大语言模型 API,包括 Bedrock, Huggingface, VertexAI, TogetherAI, Azure, OpenAI, Groq 等等。

LiteLLM 具有高度的兼容性,支持众多大语言模型提供商,无论开发者使用哪种大语言模型,都可以通过统一的方式进行调用,无需为不同的 API 格式而烦恼。其次,它提供了 LiteLLM Proxy Server(LLM 网关),可以实现代理密钥管理、请求转发等功能,方便开发者进行多模型的统一管理和调用。此外,LiteLLM 还支持日志记录和成本计算,开发者可以清晰地了解每次调用的成本和使用情况,有助于进行成本控制和资源优化。

LiteLLM 的核心功能,是将用户输入转换为各个提供商的补全、嵌入和图像生成接口所需的格式,且输出格式统一,文本响应始终可以通过 ['choices'][0]['message']['content'] 获取。LiteLLM 还提供了跨多个不同部署的重试和回退逻辑。

LiteLLM 提供了包括一个 Python SDK 和一个代理网关服务。LiteLLM v1.0.0 要求 openai>=1.0.0,使用 pip 安装:

pip install litellm

安装完成后,在 LLM 程序中使用,首先引用 litellm 提供的 completion,并完成 LLM 提供商的配置:

rom litellm import completionimport os## set ENV variablesos.environ["OPENAI_API_KEY"] = "your-openai-key"os.environ["ANTHROPIC_API_KEY"] = "your-anthropic-key"

然后,我们就可以把相同的一条输出,同时提供给包括 openai 的 gpt-4o 和 anthropic 的 claude 在内的不同模型,而无需进行格式上的转换:

messages = [{ "content": "Hello, how are you?","role": "user"}]# openai callresponse = completion(model="openai/gpt-4o", messages=messages)# anthropic callresponse = completion(model="anthropic/claude-3-sonnet-20240229", messages=messages)print(response)

同时,我们也将得到相同格式的输出,无需再进行处理:

{ "id": "chatcmpl-565d891b-a42e-4c39-8d14-82a1f5208885", "created": 1734366691, "model": "claude-3-sonnet-20240229", "object": "chat.completion", "system_fingerprint": null, "choices": [ ... ], "usage": { ... }}

LiteLLM 提供了异步处理能力,通过 asyncio 实现,方便处理耗时长的对话:

from litellm import acompletionimport asyncioasync def test_get_response: user_message = "Hello, how are you?" messages = [{"content": user_message, "role": "user"}] response = await acompletion(model="openai/gpt-4o", messages=messages) return responseresponse = asyncio.run(test_get_response)print(response)

LiteLLM 还支持流式输出交互,方便实现实时对话:

from litellm import completionresponse = completion(model="openai/gpt-4o", messages=messages, stream=True)for part in response: print(part.choices[0].delta.content or "")# claude 2response = completion('anthropic/claude-3-sonnet-20240229', messages, stream=True)for part in response: print(part)

此外,LiteLLM 提供了对日志记录和监控系统的集成能力,支持包括 Lunary, MLflow, Langfuse, DynamoDB, s3 Buckets, Helicone, Promptlayer, Traceloop, Athina, Slack 等:

from litellm import completion## set env variables for logging tools (when using MLflow, no API key set up is required)os.environ["LUNARY_PUBLIC_KEY"] = "your-lunary-public-key"os.environ["HELICONE_API_KEY"] = "your-helicone-auth-key"os.environ["LANGFUSE_PUBLIC_KEY"] = ""os.environ["LANGFUSE_SECRET_KEY"] = ""os.environ["ATHINA_API_KEY"] = "your-athina-api-key"os.environ["OPENAI_API_KEY"] = "your-openai-key"# set callbackslitellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"] # log input/output to lunary, langfuse, supabase, athina, helicone etc#openai callresponse = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hi - i'm openai"}])

LiteLLM 项目为开发者提供了一个强大而便捷的工具,极大地简化了大语言模型 API 调用的过程。通过将不同大语言模型的 API 调用统一映射到 OpenAI 格式,开发者可以更加高效地进行开发,减少了学习和适配不同 API 格式的成本。

LiteLLM 可以广泛应用于各种基于大语言模型的应用开发,如聊天机器人、文本生成、智能助手等。无论是小型项目还是大型企业级应用,都可以借助 LiteLLM 快速集成大语言模型,提高开发效率和质量。随着大语言模型技术的不断发展和应用场景的不断拓展,对简化 API 调用的需求将会越来越大。LiteLLM 有望在未来得到更广泛的应用和发展。

来源:每日开源代码

相关推荐