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等。有关如何自定义或禁用追踪,请参阅相关文档。

相关推荐
保持学习ing5 小时前
SpringBoot电脑商城项目--显示勾选+确认订单页收货地址
java·前端·spring boot·后端·交互·jquery
qife7 小时前
GitHub MCP Server - 无缝集成GitHub API的自动化工具
go·github·自动化编程·mcp·api集成
爱分享的程序员8 小时前
前端面试专栏-主流框架:11. React Router路由原理与实践
前端·javascript·react.js·面试
追逐时光者8 小时前
一个基于 .NET 8 开源免费、高性能、低占用的博客系统
后端·.net
草梅友仁8 小时前
Better Auth 集成简化用户系统开发 | 2025 年第 25 周草梅周报
开源·github·全栈
方圆想当图灵8 小时前
深入理解软件设计:领域驱动设计实战
后端·领域驱动设计
海的诗篇_8 小时前
前端开发面试题总结-vue3框架篇(二)
前端·javascript·vue.js·面试·前端框架·vue
粥里有勺糖9 小时前
视野修炼第124期 | 终端艺术字
前端·javascript·github
嗨,正在熬夜的你9 小时前
JVM(面试)
jvm·面试·职场和发展
ZHOU_WUYI9 小时前
GitHub OAuth 认证示例
flask·github·react