写点什么

OpenAI Agents 概述

作者:wasa
  • 2025-07-15
    美国
  • 本文字数:1588 字

    阅读完需:约 5 分钟

什么是 openAI Agents

OpenAI Agents 是 openai 提供的 Agent 开发框架, 除了支持 open AI 本身的接口外, 也提供了接口允许用户操作和 Open AI 兼容的模型, 比如 deepseek, 或者通过 vllm 部署的本地模型. 这主要通过另外一个第三方库 LiteLLM 来实现, LiteLLM 提供了对各种不同模型的访问接口。 agents 库会使用 LiteLLM 的接口, 并在自己的库里面实现了对接的类。

需要注意的是 agents 未必兼容最新版本的 litellm,所以安装的时候用 pip install openai_agents[litellm], 而不是分开安装, 在这种情况下, litellm 会安装 openai 里面定义的版本。

基本组件

在 openai_agents 里面, 主要有三个最基本的组件

  1. Agent: 顾名思义, 这就是具体做事情的 agent

  2. Handoff: 这个是相当于一个多路代理, 它会根据问题, 把任务分派给具体的 agent 去执行

  3. Guardrail: 这个是多路代理在执行之前的一个检查, 如果检查不过, 那么就可以直接返回。 不过的情况比如当前任务和所有的 agent 功能都不能匹配。


简单的例子

下面是一个简单的例子

  1. Agents: 分为 coder 和 doctor, 分别回答该领域的问题

  2. handoff: 通过一个 LLM 还判断用户的问题所属领域

  3. GuardRail: 一个非常简单的版本, 通过字符匹配, 看是不是超出了所有的 agent 能力范围

from agents.extensions.models.litellm_model import LitellmModelfrom agents import set_tracing_disabledfrom openai import AsyncOpenAIimport osfrom dotenv import load_dotenvload_dotenv()
chat_model = "deepseek/deepseek-chat"client = AsyncOpenAI( api_key=os.getenv("DEEPSEEK_API_KEY"), base_url = "https://api.deepseek.com",)
set_tracing_disabled(disabled=True)
llm = LitellmModel(model=chat_model, api_key = os.getenv("DEEPSEEK_API_KEY"), base_url = "https://api.deepseek.com")
from agents import Agent coder_agent = Agent( name = "Coder", handoff_description = "an expert coder that can write code in any language.", instructions = "You are an expert coder. You can write code in any language.", model = llm,)

doctor_agent = Agent( name = "Doctor", handoff_description = "an expert doctor that can answer any medical question.", instructions = "You are an expert doctor. Return a prescription for the patient. If the question is not related to medicine, say 'I don't know, try other agents.'", model = llm,)


async def check_coder_or_doctor(ctx, agent, input_data): res = GuardrailFunctionOutput(output_info=None, tripwire_triggered=True) if "code" in input_data or "coding" in input_data or "program" in input_data: res.tripwire_triggered = False if "medical" in input_data or "medicine" in input_data or "health" in input_data or "cold" in input_data: res.tripwire_triggered = False return res
from agents import GuardrailFunctionOutput, InputGuardrailtriage_agent = Agent( name = "Triage agent", handoff_description = "an expert triage agent that can handoff to the appropriate agent based on the language of the request.", instructions = "Handoff to the appropriate agent based on the language of the request.", handoffs = [coder_agent, doctor_agent], input_guardrails=[ InputGuardrail(guardrail_function=check_coder_or_doctor), ], model = llm,)
from agents import Runnerimport asyncio
async def main(): result = await Runner.run(triage_agent, "how to treat a cold?") print(result)
asyncio.run(main())
复制代码


用户头像

wasa

关注

保持对技术和未知的热情 2019-02-14 加入

辗转深圳硅谷的软件老兵

评论

发布
暂无评论
OpenAI Agents 概述_wasa_InfoQ写作社区