OpenAI 代理SDK是一种轻量级但功能强大的框架,用于构建多代理工作流。它支持多种核心概念,如代理、手移交、安全检查和追踪功能。以下是对这些概念的详细介绍和示例代码。
核心概念
代理(Agents)
代理是指配置了指令、工具、安全检查和手移交的LLM(大型语言模型)。代理可以根据不同的任务进行定制。
手移交(Handoffs)
手移交是一种特殊的工具调用,用于在代理之间转移控制。它允许代理根据输入或其他条件将任务转交给其他代理。
安全检查(Guardrails)
安全检查是可配置的输入和输出验证机制,确保代理的行为符合预期。
追踪(Tracing)
追踪功能允许您查看、调试和优化代理的运行情况。它支持自定义追踪范围和多种外部追踪处理器。
快速开始
环境设置
-
创建虚拟环境:
bashpython -m venv env source env/bin/activate
-
安装代理SDK:
bashpip install openai-agents
如果需要语音支持,可以使用以下命令:
bashpip 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())
代理循环
代理循环是指代理运行的过程,直到产生最终输出。这个过程包括:
- 调用LLM:使用代理的模型和设置以及消息历史。
- 处理响应:如果响应包含最终输出,则结束循环。如果包含手移交,则切换代理并重复步骤1。
- 处理工具调用:如果有工具调用,则处理并追加工具响应到消息历史中,然后重复步骤1。
最终输出
最终输出是代理循环中代理产生的最后一个输出。如果代理设置了输出类型,则最终输出是匹配该类型的结构化输出。否则,第一个不包含工具调用或手移交的LLM响应被视为最终输出。
常见代理模式
代理SDK支持多种代理模式,包括确定性流程、迭代循环等。这些模式可以在examples/agent_patterns
中找到示例。
追踪
追踪功能自动记录代理的运行情况,支持自定义追踪范围和多种外部追踪处理器,如Logfire、AgentOps等。有关如何自定义或禁用追踪,请参阅相关文档。