Skip to content

透過 LiteLLM 使用任意模型

Note

LiteLLM 整合目前為 beta 版本。在使用某些模型提供者(尤其是規模較小的)時,您可能會遇到問題。若有任何問題,請透過 Github issues 回報,我們會盡快修復。

LiteLLM 是一個可讓您透過單一介面存取 100 多種模型的函式庫。我們已新增 LiteLLM 整合,讓您能在 Agents SDK 中使用任何 AI 模型。

設定

您需要確保 litellm 已可用。您可以透過安裝選用的 litellm 相依套件群組來完成:

pip install "openai-agents[litellm]"

完成後,你可以在任何代理 (Agent) 中使用 [LitellmModel][agents.extensions.models.litellm_model.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 的使用量指標,請在建立你的 Agent 時傳入 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 模型一樣。