如何使用OpenAI的Responses API和Agent SDK?

如何使用OpenAI的Responses API和Agent SDK?

OpenAI 一直是 GenAI 领域领先的解决方案提供商。从传奇的 ChatGPT 到 Sora,OpenAI 是所有职场人士的首选平台。随着 Qwen 和 Claude 在开发人员中越来越受欢迎,OpenAI 再次推出最新更新,帮助开发人员创建更可靠、更强大的人工智能代理。其中的主要亮点包括 Responses API 和 Agents SDK。在本博客中,我们将探讨 Responses API 和 Agents SDK,了解如何访问它们,并学习如何使用它们构建真实世界的应用程序!

什么是Responses API?

Responses API 是 OpenAI 最新的 API,旨在简化构建基于 AI 的应用程序的过程。它结合了聊天完成 API 的简易性和助手 API 的强大工具使用功能。这意味着开发人员现在可以创建利用多种工具的代理,并更高效地处理复杂的多步骤任务。该 API 减少了对复杂的提示工程和外部集成的依赖。

  • 内置网络搜索、文件搜索和计算机使用等工具,允许代理与真实世界的数据进行交互。
  • 统一的设计简化了多态性并提高了可用性。
  • 更好的可观察性,帮助开发人员跟踪代理行为并优化工作流程。
  • 无需支付额外费用,因为它是按照 OpenAI 的标准定价,根据令牌使用情况收费的。

有了这些工具,Responses API 将改变构建人工智能代理的游戏规则。事实上,在未来,Responses API 将支持 OpenAI 的所有新模型和即将推出的模型。让我们看看如何使用它来构建应用程序。

如何使用Responses API?

尝试使用 Responses API:

  1. 安装 openai(如果尚未安装)并使用 OpenAI。
  2. 确保拥有最新的 OpenAI 库(pip install openai – -upgrade)。
  3. 导入 OpenAI 并设置客户端。

设置完成后,您就可以请求响应 API。虽然基本的 API 调用很常见,但它的内置功能却非常强大。让我们来了解一下它的三个主要功能:

  • 文件搜索:从文件中检索见解。
  • 网络搜索:获取实时引用信息。
  • 计算机使用:自动进行系统交互。

现在,让我们来看看它们的实际应用!

1. 文件搜索

它能让模型通过语义和关键字搜索检索知识库中先前上传文件的信息。目前它不支持 csv 文件,您可以在这里查看支持的文件类型列表。

注意:在使用文件搜索之前,请确保将文件存储在矢量数据库中。

任务:Names of people with domain as Data Science。(我使用了以下文件)

代码:

response = client.responses.create(
    model="gpt-4o-mini",
    input="Names of people with domain as Data Science",
    tools=[{
        "type": "file_search",
        "vector_store_ids": [vector_store_id],
        "filters": {
            "type": "eq",
            "key": "Domain",
            "value": "Data Science"
        }
    }]
)
print(response.output_text)

输出:

The person with the domain of Data Science is Alice Johnson [0].[0] names_and_domains.pdf

2. 网络搜索

此功能允许模型在生成响应之前在网上搜索最新信息,确保数据保持最新。模型可以根据输入提示的内容选择是否搜索网络。

任务:What are the best cafes in Vijay nagar?

代码:

response = client.responses.create(
    model="gpt-4o",
    tools=[{
        "type": "web_search_preview",
        "user_location": {
            "type": "approximate",
            "country": "IN",
            "city": "Indore",
            "region": "Madhya Pradesh",
        }
    }],
    input="What are the best cafe in Vijay nagar?",
)
print(response.output_text)

输出:

网络搜索任务响应

3. 计算机使用

这是计算机使用代理(CUA)模型的实际应用,它将 GPT-4o 的视觉功能与高级推理相结合,模拟控制计算机界面并执行任务。

任务:Check the latest blog on Analytics Vidhya website.

代码:

response = client.responses.create(
    model="computer-use-preview",
    tools=[{
        "type": "computer_use_preview",
        "display_width": 1024,
        "display_height": 768,
        "environment": "browser" # other possible values: "mac", "windows", "ubuntu"
    }],
    input=[
        {
            "role": "user",
            "content": "Check the latest blog on Analytics Vidhya website."
        }
    ],
    truncation="auto"
)
print(response.output)

输出:

ResponseComputerToolCall(id='cu_67d147af346c8192b78719dd0e22856964fbb87c6a42e96', action=ActionScreenshot(type='screenshot'), call_id='call_a0w16G1BNEk09aYIV25vdkxY', pending_safety_checks=[], status='completed', type='computer_call')

Responses API与Completions API有何不同?

既然我们已经了解了 Responses API 的工作原理,那么让我们来看看它与之前存在的 Completions API 有何不同。

Responses API与Completions API:执行

API Responses API Completions API
代码 from openai import OpenAI
client = OpenAI()
response = client.responses.create(
model="gpt-4o",
inputs=[
{
"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."
}
]
)
print(response.output_text)
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-4o",
messages=[
{
"role": "user",
"content": "Write a one-sentence bedtime story about a unicorn."
}
]
)
print(completion.choices[0].message.content)
输出 Responses API执行输出 Completions API执行输出

Responses API与Completions API:功能

以下是 Chat Complerions APi 和 Responses API 各项功能的简化细分:

功能 Responses API Chat Completions API
文本生成
音频 即将推出
视觉
网页搜索
文件搜索
计算机使用
代码解释 即将推出
响应处理 返回单一结构化输出 返回选择数组
会话状态 用于保持连续性的 previous_response_id 必须人工管理
存储行为 默认存储(存储:false 表示禁用) 默认存储

路线图:哪些将继续使用,哪些将被淘汰?

随着回复 API 的上线,现在最迫切的问题是,它会影响现有的聊天完成和助手 API 吗?会的。让我们来看看是如何影响的:

  • Chat Completions API:OpenAI 将继续用新模型更新它,但前提是这些功能不需要内置工具。
  • 网络搜索和文件搜索工具:在 Responses API 中,这些工具将变得更加完善和强大。
  • Assistants API: Responses API 融合了其最佳功能,同时提高了性能。OpenAI 已经宣布,全面的功能对等即将到来,Assistants API 将在 2026 年中期被淘汰。

介绍Agents SDK

构建人工智能代理不仅需要功能强大的 API,还需要高效的协调。这正是 OpenAI 的 Agents SDK 发挥作用的地方。Agents SDK 是一个开源工具包,可简化代理工作流程(您可以将其理解为智能体开发套件)。该代理构建框架可与响应 API 和聊天完成 API 无缝集成。此外,它还与各种提供商的模型兼容,只要它们提供风格类似于 Chat Completions 的 API 端点。

Agents SDK 的一些主要功能包括

  • 它允许开发人员使用内置工具配置人工智能代理。
  • 它支持多代理协调,允许根据需要无缝协调不同的代理。
  • 它允许我们跟踪代理之间的对话和信息流。
  • 它能让我们更轻松地应用安全和合规性防护措施。
  • 它能确保开发人员利用内置的可观察性工具监控和优化代理性能。

Agent SDK 并不是 OpenAI 的“新成员”。它是 OpenAI 去年发布的实验 SDK“Swarm”的改进版。虽然 “Swarm ”只是出于教育目的而发布,但它在开发者中很受欢迎,也被一些企业所采用。为了满足更多企业的需求,帮助他们无缝构建生产级代理,Agents SDK 已经发布。既然我们已经了解了 Agents SDK 的功能,那就让我们看看如何使用这个框架来构建我们的代理系统。

使用Agent SDK构建多代理系统

我们将利用 LLM 驱动的代理和网络搜索工具,构建一个多代理系统,帮助用户进行汽车推荐和转售价格估算,从而提供准确的最新见解。

Step 1:创建一个简单的人工智能代理

我们首先创建一个汽车顾问代理,帮助用户根据自己的需求选择合适的汽车类型。

代码:

car_advisor = Agent(
    name="Car advisor",
    instructions= "You are an expert in advising suitable car type like sedan, hatchback etc to people based on their requirements.",
    model="gpt-4o",
    )
prompt = "I am looking for a car that I enjoy driving and comforatbly take 4 people. I plane to travel to hills. What type of car should I buy?"
async def main():
    result = await Runner.run(car_advisor, prompt)
    print(result.final_output)
# Run the function in Jupyter
await main()

输出:

创建一个简单的人工智能代理

Step 2:构建多代理系统

有了基本代理后,我们现在要创建一个多代理系统,将不同的人工智能代理整合到各自擅长的领域中。具体操作如下:

多代理系统中的代理

  1. 汽车销售估价代理:它根据汽车的详细信息提供转售价格估算。
  2. 车型顾问代理:它根据预算和地点推荐合适的车型。
  3. 分流代理:它将查询转给合适的代理。

我们将向代理提供两种不同的提示,并观察它们的输出结果。

提示词 1:

car_sell_estimate = Agent(
    name="Car sell estimate",
    instructions= "You are an expert in suggesting a suitable price of reselling a car based on its make, model, year of purchase, and condition.",
    handoff_description= "Car reselling price estimate expert",
    model="gpt-4o",
    tools=[WebSearchTool()]
    )
car_model_advisor = Agent(
    name="Car model advisor",
    instructions= "You are an expert in advising suitable car model to people based on their budget and location.",
    handoff_description= "Car model recommendation expert",
    model="gpt-4o",
    tools=[WebSearchTool()]
    )
triage_agent = Agent(
    name = "Triage Agent",
    instructions="You determine the appropriate agent for the task.",
    model = "gpt-4o",
    handoffs=[car_sell_estimate, car_model_advisor]
)
Prompt 1: 
prompt = "I want to sell my Ecosport car in New Delhi. It is 3 years old and in good condition. 50000Km. What price should I expect?"
async def main():
    result = await Runner.run(triage_agent, prompt)
    print(result.final_output)
# Run the function in Jupyter
await main()

输出 1:

构建多代理系统输出

提示词 2:

prompt = "I want to buy a high acceleration car, comfortable for 4 people for 20 lakhs in New Delhi. Which car should I buy?"
async def main():
    result = await Runner.run(triage_agent, prompt)
    print(result.final_output)
# Run the function in Jupyter
await main()

输出 2:

构建多代理系统输出

我们得到了符合要求的汽车选项!实施简单快捷。您可以使用这个代理框架来建立旅行支持、财务规划、医疗援助、个性化购物、自动研究等方面的代理。

Agent SDK:新的代理框架?

OpenAI 的 Agents SDK 代表着其为人工智能代理开发提供专用框架的战略推进。该框架通过其分流代理,模仿 Crew AI 的功能,加入了类似船员的功能。同样,它的交接机制也与 AutoGen 非常相似,可以在多个代理之间高效地分配任务。

此外,LangChain 在模块化代理协调方面的优势还体现在 Agents SDK 提供结构化工作流程的方式上,从而确保了执行的流畅性和适应性。虽然 Agents SDK 所提供的功能与现有框架已做的功能相差无几,但它很快就会与这些框架展开激烈的竞争。

开发人员为什么需要Responses API和Agents SDK?

Responses API 和 Agents SDK 为开发人员提供了构建人工智能驱动型应用的工具和平台。通过减少对手动提示工程和大量自定义逻辑的依赖,这些工具使开发人员能够专注于创建智能工作流,并将摩擦降至最低。

  • 易于集成:开发人员不再需要为不同的工具同时使用多个应用程序接口;Responses API 将网络搜索、文件搜索和计算机使用整合到一个界面中。
  • 更好的可观察性:借助内置的监控和调试工具,开发人员可以更轻松地优化代理性能。
  • 可扩展性:Agents SDK 提供了一种结构化的方法来处理多代理工作流,从而实现更强大的自动化。
  • 改进开发周期:由于无需进行大量的提示迭代和外部工具集成,开发人员可以更快地开发和部署基于代理的应用原型。

小结

OpenAI 的 Responses API 和 Agents SDK 的推出改变了人工智能驱动自动化的游戏规则。通过利用这些工具,我们仅用几行代码就成功地快速构建了一个多代理系统。这一实施方案还可以进一步扩展,纳入更多工具、集成和代理功能,为各行各业更智能、更自主的人工智能应用铺平道路。

这些工具必将帮助开发人员和企业降低开发复杂性,创建更智能、更可扩展的自动化解决方案。无论是客户支持、研究、业务自动化,还是特定行业的人工智能应用,Responses API 和 Agents SDK 都能提供一个强大的框架,轻松构建下一代人工智能驱动的系统。

评论留言