星驰编程网

免费编程资源分享平台_编程教程_代码示例_开发技术文章

LiteLLM:简化大语言模型的 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 completion
import os

## set ENV variables
os.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 call
response = completion(model="openai/gpt-4o", messages=messages)

# anthropic call
response = 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 acompletion
import asyncio

async 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 response

response = asyncio.run(test_get_response())
print(response)

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

from litellm import completion
response = completion(model="openai/gpt-4o", messages=messages, stream=True)
for part in response:
    print(part.choices[0].delta.content or "")

# claude 2
response = 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 callbacks
litellm.success_callback = ["lunary", "mlflow", "langfuse", "athina", "helicone"] # log input/output to lunary, langfuse, supabase, athina, helicone etc

#openai call
response = completion(model="openai/gpt-4o", messages=[{"role": "user", "content": "Hi  - i'm openai"}])


总结

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

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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言