正文
https://editor.swagger.io/
上,可以很容易且界面友好的看到这个接口的描述,这个就是 OpenAPI 规范。
当前大多数的传统的应用与API Service 的交互方式都是通过 POST、GET、DELETE、PATCH、PUT 等方式,并按照API Service 里的入参定义才能正确的调用服务拿到返回结果。
传统应用请求 API 模式
总体而言,OpenAPI 规范通过提供一致、标准化的 API 描述,促进了 API 的设计、开发和维护,提高了开发效率和系统的可互操作性。大多数 API 提供商都有 OpenAPI 规范,或者可以通过 OpenAPI 完全描述其 API。这些规范本身对于 AI 代理的时代来说并不足够,但为 API 代理通信提供了很好的基础。
下面举一个例子,仅示例,不代表真实流程。例如我要在alibaba.com上订购一批衣服,要完成这个行为,在传统的客户端处理方式是,先调用商品详情接口确认商品最新信息;再调用下单接口,进行下单,获取订单的 id;再轮询调用查询订单状态接口获取订单状态。
传统模式下单流程
而要让 AI agent 帮你完成这个任务,则可以通过自然语言的方式告诉AI,“我要订购一批这个红色连衣裙,数量是 xx,尺寸大小是 xx,...”
agent-json 请求 API 模式
这里说明一下,这里仅是示例,不是要对比 AI agent 和传统模式下单流程的优劣,仅是说明 AI agent 是如何与服务提供方进行交互的,与传统模式的区别在哪里。
AI agent 首先会从服务提供商处加载 agents.json文件,来获取服务提供方提供的预设的flows,flows 可以看做是一系列预设的复杂操作,每个 flow 里定义了要执行的动作(一个动作对应调用一个 API)和执行顺序。
AI agent理解了用户的意图后,会选择合适的flows进行调用,例如选择了一个下单的 flow,里面包含要执行查商品信息、下订单、查订单状态 API,选择好后,使用 execute_flow 执行 flow,会自动且准确地调用下单 api 和获取订单状态 api,来完成用户任务。
agents.json
是专门给 AI agents使用的 JSON 文件。API 提供方可以使用他们现有的 OpenAPI 规范来构建此文件,AI agents则通过检查此文件来执行准确的 API 调用。
agents.json
规范在 OpenAPI 规范的基础上还进行了一些扩展,如优化端点发现和LLM 参数生成。如果把一堆 API 定义摆在 AI 面前,让它完成一个复杂的操作,这个操作可能涉及到多个 API 的调用,AI 理解这些 API 还好说,但是 AI 怎么去按照正确的顺序调用 API 来完成任务呢?
为此,agents.json 引入了
flows
和
links
的概念。
flows
定义的是一个或多个 API 调用顺序,可以看成是一个
预设好的复杂的操作
。
links
描述了两个动作是如何连接在一起的。
然后需要将
agents.json
文件放置在
/.well-known/agents.json
路径下,以便访问 Web 服务的AI agents可以轻松找到它,这也是一个约定。
加载 agents.json 文件
获取预设的 flows定义
from agentsjson.core.models import Flow
from agentsjson.core.models.bundle import Bundle
import agentsjson.core as core
data: Bundle = core.load_agents_json(agents_json_url)
flows = data.agentsJson.flows
设置 prompt