随着人工智能技术的飞速发展,AI已经从简单的文本生成和图像识别,逐渐走向更复杂的任务自动化。今天,我们来聊聊一个令人兴奋的新进展——OpenAI推出的一系列新工具和API,旨在帮助开发者和企业更轻松地构建高效、可靠的智能代理(Agents)。
Agent新工具
■ https://openai.com/index/new-tools-for-building-agents/ 智能代理是一种能够独立完成用户任务的系统。它们可以在没有人工干预的情况下,自动执行复杂的多步骤任务,比如处理客户支持请求、自动化数据输入,甚至是进行市场研究。然而,将AI模型的能力转化为实际可用的代理系统并非易事,这往往需要大量的提示迭代和自定义逻辑,而且缺乏足够的可视化支持和内置功能。
为了解决这些挑战,OpenAI推出了一系列新的API和工具,专门用于简化智能代理的开发过程。这些工具不仅优化了代理的核心逻辑和交互方式,还显著降低了开发门槛。
(一)新工具的核心:Responses API Responses API是OpenAI为构建智能代理推出的新API基础。它结合了Chat Completions API的简洁性和Assistants API的工具使用能力,能够让开发者更灵活地利用OpenAI的内置工具来构建代理。 这个API的核心优势在于其简洁性和多功能性。开发者可以通过一个API调用,解决复杂的任务,同时结合多种工具和模型的能力。例如,开发者可以使用Responses API中的Web搜索工具,快速获取最新的网络信息,或者利用文件搜索工具从大量文档中提取相关信息。 此外,Responses API还引入了许多改进,比如统一的项目化设计、更简单的多态性、直观的流式事件,以及SDK助手(如response.output_text)来轻松访问模型的文本输出。
(二)为开发者设计的内置工具 为了进一步简化开发过程,OpenAI在Responses API中引入了多种内置工具,包括Web搜索、文件搜索和计算机使用工具。 1、Web搜索工具 Web搜索工具能够让开发者快速获取最新、最相关的网络信息。它支持清晰的引用链接,方便用户深入了解信息来源。例如,Hebbia利用这一工具帮助金融和法律专业人士从海量数据中提取有价值的信息,显著提升了分析的准确性和相关性。 2、文件搜索工具 文件搜索工具则专注于从大量文档中提取相关信息。它支持多种文件类型,优化查询结果,并提供自定义排序功能。例如,Navan利用这一工具在其AI驱动的旅行代理中快速提供精确答案,显著提升了客户支持的效率。 3、计算机使用工具 计算机使用工具则更进一步,它允许开发者通过API直接操作计算机任务,比如自动化浏览器工作流或在遗留系统中执行数据输入任务。这一工具基于OpenAI的Computer-Using Agent(CUA)模型,能够在没有API支持的情况下操作复杂的软件系统
Agents SDK:简化工作流
■ https://platform.openai.com/docs/guides/agents 除了核心API,OpenAI还推出了Agents SDK,这是一个开源的开发工具包,用于简化多代理工作流的编排。 OpenAI为构建智能代理提供了一套丰富的组件,这些组件涵盖了模型、工具、知识与记忆、安全防护(Guardrails)和编排(Orchestration)等多个领域。通过这些组件,开发者可以轻松构建出功能强大的智能代理。
(一)模型(Models) 模型是智能代理的核心,负责推理、决策和处理多种模态的数据。OpenAI提供了多种模型,每种都有其独特的优势: o1和o3-mini:适合长期规划、复杂任务和推理。 GPT-4.5:适合执行代理任务。 GPT-4o:在代理能力和延迟之间取得了良好的平衡。 GPT-4o-mini:适合低延迟任务。 这些模型不仅具备高智能,还能调用工具、理解多种模态数据,并支持实时对话。
(二)工具(Tools) 工具是智能代理与世界交互的接口。OpenAI提供了多种工具,帮助代理完成任务: 函数调用(Function calling):与开发者定义的代码交互。 Web搜索:从网络获取最新信息。 文件搜索:在文档中进行语义搜索。 计算机使用:理解和控制计算机或浏览器。 这些工具让智能代理能够更高效地完成任务。
(三)知识与记忆(Knowledge & Memory) 知识和记忆让智能代理能够存储、检索和利用超出其初始训练数据的信息。OpenAI的向量存储(Vector stores)和嵌入(Embeddings)技术,让代理能够语义化搜索文档,并在运行时检索相关信息。这些技术不仅支持动态知识解决方案,还为代理提供了长期记忆。
(四)安全防护(Guardrails) 安全防护是智能代理在生产环境中安全运行的关键。OpenAI提供了多种工具来确保代理的行为安全、一致且符合预期: 输入防护(Input Guardrails):在用户输入阶段进行检查和验证。 输出防护(Output Guardrails):在代理输出阶段进行检查和验证。 内容过滤(Moderation API):自动过滤不安全内容。 指令优先级(Instruction Hierarchy):优先执行开发者定义的提示,防止代理行为失控。
(五)编排(Orchestration) 编排是构建智能代理的全过程。OpenAI提供了以下工具来帮助开发者构建、部署、监控和优化智能代理: Agents SDK:快速构建代理,处理对话流,并强制执行安全防护。 追踪(Tracing):实时观察代理行为,调试问题并获取洞察。 评估与优化(Evaluations & Fine-tuning):测量代理性能,识别改进点并优化。
(六)为什么选择OpenAI Agents SDK? OpenAI Agents SDK的设计遵循两个核心原则: 1、功能强大但易于学习:提供足够的功能来满足实际需求,同时保持简洁,易于快速上手。 2、高度可定制:虽然开箱即用,但开发者可以根据需要对每个环节进行定制。
OpenAI Agents SDK 特性
■ https://openai.github.io/openai-agents-python/agents/ pip install openai-agents
from agents import Agent, RunnerSDK的主要特性包括:
1、Agent循环:内置的循环机制,自动处理工具调用、将结果发送给LLM(大型语言模型),并在LLM完成任务后结束循环。
2、Python优先:利用Python的内置语言特性来编排和连接代理,无需学习新的抽象概念。
3、任务交接(Handoffs):允许代理将特定任务委托给其他代理,实现复杂的任务协调。
4、安全防护(Guardrails):在代理运行时并行执行输入验证和检查,如果检查失败,可以提前终止任务。
5、函数工具(Function Tools):将任何Python函数转换为工具,自动生成JSON模式,并通过Pydantic进行验证。
6、追踪(Tracing):内置的追踪功能,可以可视化、调试和监控工作流,同时支持OpenAI的评估、微调和蒸馏工具。 工具是代理可以调用的功能,用于完成任务。例如,一个代理可以调用一个函数来获取天气信息。
上下文(Context)
代理的上下文是一个依赖注入工具,它允许你在代理运行时传递任何Python对象。上下文可以包含用户信息、状态或其他依赖项。例如:
Python复制
from dataclasses import dataclass
输出类型(Output Types)
默认情况下,代理的输出是纯文本。如果你希望代理输出特定类型的数据,可以使用output_type参数。例如,你可以使用Pydantic对象来定义输出类型:
from pydantic import BaseModel
from agents import Agent任务交接(Handoffs) 任务交接允许代理将任务委托给其他代理。这在不同代理专注于不同任务的场景中非常有用。例如,一个客户支持应用可以有多个代理,分别处理订单状态、退款和常见问题等。你可以通过handoffs参数指定这些代理:
from agents import Agent
动态指令(Dynamic Instructions) 在某些情况下,你可能需要根据上下文动态生成指令。你可以通过一个函数来实现这一点。例如:
def dynamic_instructions(context, agent):
return f"The user's name is {context.context.name}. Help them with their questions."生命周期事件(Lifecycle Events) 你可以在代理的生命周期中插入自定义逻辑。例如,你可以在代理开始运行时记录日志,或者在代理结束时清理资源。通过继承AgentHooks类并重写相关方法,你可以实现这些功能:
from agents.lifecycle import AgentHooks
安全防护(Guardrails) 安全防护是代理运行时并行执行的检查和验证机制。你可以通过安全防护来过滤用户输入,确保代理不会执行恶意任务。例如,你可以设置一个安全防护来检测用户是否在请求代理帮助他们做数学作业:
from agents import Agent, input_guardrail
from pydantic import BaseModel克隆代理(Cloning Agents) 你可以通过clone()方法复制一个代理,并根据需要修改其属性。例如:
pirate_agent = Agent(
name="Pirate",