跳过内容

通过 LiteLLM 使用任何模型

注意

LiteLLM 集成目前处于 Beta 阶段。您可能会在使用某些模型提供商(尤其是较小的提供商)时遇到问题。请通过 Github issues 报告任何问题,我们将尽快修复。

LiteLLM 是一个库,允许您通过单个接口使用 100 多个模型。我们添加了一个 LiteLLM 集成,允许您在 Agents SDK 中使用任何 AI 模型。

Setup

您需要确保 litellm 可用。您可以通过安装可选的 litellm 依赖项组来做到这一点

pip install "openai-agents[litellm]"

完成此操作后,您可以在任何代理中使用 LitellmModel

示例

这是一个完整的示例。当您运行它时,系统会提示您输入模型名称和 API 密钥。例如,您可以输入

  • openai/gpt-4.1 作为模型,以及您的 OpenAI API 密钥
  • anthropic/claude-3-5-sonnet-20240620 作为模型,以及您的 Anthropic API 密钥
  • 等等

有关 LiteLLM 支持的完整模型列表,请参阅 litellm providers docs

from __future__ import annotations

import asyncio

from agents import Agent, Runner, function_tool, set_tracing_disabled
from agents.extensions.models.litellm_model import LitellmModel

@function_tool
def get_weather(city: str):
    print(f"[debug] getting weather for {city}")
    return f"The weather in {city} is sunny."


async def main(model: str, api_key: str):
    agent = Agent(
        name="Assistant",
        instructions="You only respond in haikus.",
        model=LitellmModel(model=model, api_key=api_key),
        tools=[get_weather],
    )

    result = await Runner.run(agent, "What's the weather in Tokyo?")
    print(result.final_output)


if __name__ == "__main__":
    # First try to get model/api key from args
    import argparse

    parser = argparse.ArgumentParser()
    parser.add_argument("--model", type=str, required=False)
    parser.add_argument("--api-key", type=str, required=False)
    args = parser.parse_args()

    model = args.model
    if not model:
        model = input("Enter a model name for Litellm: ")

    api_key = args.api_key
    if not api_key:
        api_key = input("Enter an API key for Litellm: ")

    asyncio.run(main(model, api_key))

跟踪使用数据

如果您希望 LiteLLM 响应填充 Agents SDK 使用指标,请在创建代理时传递 ModelSettings(include_usage=True)

from agents import Agent, ModelSettings
from agents.extensions.models.litellm_model import LitellmModel

agent = Agent(
    name="Assistant",
    model=LitellmModel(model="your/model", api_key="..."),
    model_settings=ModelSettings(include_usage=True),
)

使用 include_usage=True 时,LiteLLM 请求会通过 result.context_wrapper.usage 报告 token 和请求计数,就像内置的 OpenAI 模型一样。