OpenAI 代理SDK入门指南

OpenAI 代理SDK是一种轻量级但功能强大的框架,用于构建多代理工作流。它支持多种核心概念,如代理、手移交、安全检查和追踪功能。以下是对这些概念的详细介绍和示例代码。

核心概念

代理(Agents)

代理是指配置了指令、工具、安全检查和手移交的LLM(大型语言模型)。代理可以根据不同的任务进行定制。

手移交(Handoffs)

手移交是一种特殊的工具调用,用于在代理之间转移控制。它允许代理根据输入或其他条件将任务转交给其他代理。

安全检查(Guardrails)

安全检查是可配置的输入和输出验证机制,确保代理的行为符合预期。

追踪(Tracing)

追踪功能允许您查看、调试和优化代理的运行情况。它支持自定义追踪范围和多种外部追踪处理器。

快速开始

环境设置

  1. 创建虚拟环境

    bash 复制代码
    python -m venv env
    source env/bin/activate
  2. 安装代理SDK

    bash 复制代码
    pip install openai-agents

    如果需要语音支持,可以使用以下命令:

    bash 复制代码
    pip install 'openai-agents[voice]'

Hello World 示例

python 复制代码
from agents import Agent, Runner

# 创建代理
agent = Agent(name="Assistant", instructions="You are a helpful assistant")

# 运行代理并打印结果
result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)

手移交示例

python 复制代码
from agents import Agent, Runner
import asyncio

# 创建代理
spanish_agent = Agent(
    name="Spanish agent",
    instructions="You only speak Spanish.",
)

english_agent = Agent(
    name="English agent",
    instructions="You only speak English",
)

triage_agent = Agent(
    name="Triage agent",
    instructions="Handoff to the appropriate agent based on the language of the request.",
    handoffs=[spanish_agent, english_agent],
)


async def main():
    result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
    print(result.final_output)

if __name__ == "__main__":
    asyncio.run(main())

函数示例

python 复制代码
import asyncio

from agents import Agent, Runner, function_tool


@function_tool
def get_weather(city: str) -> str:
    return f"The weather in {city} is sunny."


agent = Agent(
    name="Hello world",
    instructions="You are a helpful agent.",
    tools=[get_weather],
)


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

if __name__ == "__main__":
    asyncio.run(main())

代理循环

代理循环是指代理运行的过程,直到产生最终输出。这个过程包括:

  1. 调用LLM:使用代理的模型和设置以及消息历史。
  2. 处理响应:如果响应包含最终输出,则结束循环。如果包含手移交,则切换代理并重复步骤1。
  3. 处理工具调用:如果有工具调用,则处理并追加工具响应到消息历史中,然后重复步骤1。

最终输出

最终输出是代理循环中代理产生的最后一个输出。如果代理设置了输出类型,则最终输出是匹配该类型的结构化输出。否则,第一个不包含工具调用或手移交的LLM响应被视为最终输出。

常见代理模式

代理SDK支持多种代理模式,包括确定性流程、迭代循环等。这些模式可以在examples/agent_patterns中找到示例。

追踪

追踪功能自动记录代理的运行情况,支持自定义追踪范围和多种外部追踪处理器,如Logfire、AgentOps等。有关如何自定义或禁用追踪,请参阅相关文档。

相关推荐
小码哥_常1 天前
Spring Boot:别再重复造轮子,这些内置功能香麻了
后端
皮皮林5511 天前
OpenFeign 首次调用卡 3 秒?八年老开发扒透 5 个坑,实战优化到 100ms!
后端
kyriewen1 天前
奥特曼借GPT-5.5干杯,而你的Copilot正按Token收钱
前端·github·openai
千寻girling1 天前
《 Git 详细教程 》
前端·后端·面试
0xDevNull1 天前
Linux 中 Nginx 代理 Redis 的详细教程
redis·后端
GetcharZp1 天前
告别 Nginx 手动配置!这款 Go 语言开发的云原生网关,才是容器化时代的真香神器!
后端
jinanwuhuaguo1 天前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
RuoyiOffice1 天前
SpringBoot+Vue3 企业考勤如何处理法定假期?节假日方案、调休补班与工作日判断链路拆解
spring boot·后端·vue·anti-design-vue·ruoyioffice·假期·人力
Vane11 天前
从零开发一个AI插件,经历了什么?
人工智能·后端
DogDaoDao1 天前
【GitHub】andrej-karpathy-skills:让 AI 编程助手告别三大通病
人工智能·深度学习·程序员·大模型·github·ai编程·andrej-karpathy