聊天助手、工作流与Agent有什么区别:用一个订单查询任务讲清选择方法
很多团队第一次做 AI 应用时,都会遇到一个看起来很简单、实际上很容易选错的问题:
“用户问一个订单状态,我们到底做一个聊天助手、配置一个工作流,还是直接做 Agent?”
例如客服收到这样的请求:
“帮我查一下订单 A20260928001 到哪了,如果已经签收就告诉我签收时间;如果还没签收,再看看有没有物流异常。”
表面上,这只是“查订单”。
但把需求拆开以后,会发现它可能包含:
- 理解用户到底要查什么;
- 找到订单;
- 查询物流;
- 判断订单当前状态;
- 根据状态决定下一步;
- 如果发现异常,可能还要继续查原因;
- 最后按照不同情况组织回复。
这时候,“聊天助手、工作流、Agent”三种方案都能做,但它们解决问题的方式完全不同。
本文不从概念定义出发,而是让三个方案同时完成同一个订单查询任务,然后比较它们在“谁决定下一步”“流程是否固定”“遇到异常怎么办”“什么时候值得增加复杂度”等方面的区别。
本文的核心结论不是“Agent 更先进”。
真正应该问的是:这个任务的下一步是否可以提前确定?如果不能,是否真的需要让模型自己决定?
1. 先把问题固定下来:我们到底要完成什么任务?
为了避免讨论停留在概念层面,先建立一个完全虚构的订单查询场景。
说明:以下订单、物流和金额数据均为本文自行编写的虚构演示数据,不对应真实用户、企业或平台。
1.1 用户输入
我们允许用户输入自然语言,例如:
帮我查一下订单 A20260928001 到哪了,如果已经签收就告诉我签收时间; 如果还没签收,再看看有没有物流异常。系统内部准备一份最小订单数据:
| 字段 | 示例值 |
|---|---|
| order_id | A20260928001 |
| customer_name | 张三 |
| order_status | shipped |
| carrier | DemoExpress |
| tracking_no | DE20260928001 |
| shipped_at | 2026-09-28 10:20 |
| expected_delivery_date | 2026-09-30 |
同时准备物流数据:
| tracking_no | logistics_status | last_event | event_time |
|---|---|---|---|
| DE20260928001 | delivered | 已签收 | 2026-09-29 16:42 |
本文只研究一个问题:
面对同一个订单查询任务,什么时候聊天助手就够了,什么时候应该使用确定性的工作流,什么时候才值得使用 Agent?
2. 三种方案真正的区别,不是“聪明程度”
很多文章容易把三者描述成:
聊天助手 → 工作流 → Agent → 越来越智能。
这个理解并不准确。
更有用的区别是:
谁负责决定任务下一步怎么走?
可以先用下面这张表建立整体认识。
| 方案 | 谁决定下一步 | 流程 | 模型主要作用 | 适合的问题 |
|---|---|---|---|---|
| 聊天助手 | 用户/应用 | 通常是单轮或少量固定交互 | 理解、生成、解释 | 问答、解释、信息整理 |
| 工作流 | 程序/流程配置 | 预先确定 | 在节点中完成理解、分类、生成 | 稳定、重复、规则明确的任务 |
| Agent | 模型在约束内决定 | 动态 | 理解、规划、选择工具、判断是否继续 | 路径不固定、需要自主决策的任务 |
这个区别与当前主流 Agent 工程资料中的描述基本一致。
OpenAI 将 workflow 描述为完成目标所需的一系列步骤,而 Agent 的关键特点之一,是由模型参与工作流执行和决策,并根据当前状态选择工具、继续执行或停止。(OpenAI)
Anthropic 也明确区分了两者:**workflow 是通过预先定义的代码路径协调模型和工具;Agent 则让模型动态决定自己的流程和工具使用方式。**同时,它建议从最简单的方案开始,在真正需要灵活决策时再增加 Agent 的复杂度。(Anthropic)
所以,下面我们让三个方案分别完成刚才的订单查询。
3. 方案一:聊天助手——让模型负责“理解和回答”
3.1 最简单的实现
聊天助手可以非常简单。
用户:
帮我查一下订单 A20260928001 到哪了?如果订单数据已经作为上下文提供给模型:
订单号:A20260928001 订单状态:shipped 物流状态:delivered 最后物流事件:已签收 签收时间:2026-09-29 16:42模型负责把这些数据转换成人类容易理解的答案:
订单 A20260928001 已于 2026 年 9 月 29 日 16:42 签收。 当前订单状态:已签收。 物流公司:DemoExpress。这里模型主要做的是:
理解用户问题 + 根据已有信息组织答案。
它并没有真正负责整个业务流程。
3.2 如果增加一个查询工具呢?
事情会稍微复杂一点。
我们给聊天助手一个工具:
query_order(order_id)用户:
查一下订单 A20260928001。模型可以决定调用:
query_order("A20260928001")然后根据返回结果回答。
这已经比单纯的文本问答更进一步,因为模型开始使用外部数据。
但是:
“能够调用工具”本身并不意味着它就是一个 Agent。
工具调用只是 Agent 系统的重要组成部分之一。OpenAI 当前文档也将工具视为 Agent 与外部系统交互的重要能力,并区分了数据工具、动作工具和编排工具。(OpenAI)
关键还在于:
谁控制后续流程。
如果程序规定:
用户输入 ↓ 查询订单 ↓ 返回结果 ↓ 模型生成答案那么这仍然可以被设计成一个非常简单的应用。
4. 方案二:工作流——把订单查询拆成固定步骤
现在我们把需求变得完整一点。
要求:
1. 识别订单号 2. 查询订单 3. 查询物流 4. 判断是否签收 5. 如果已签收,返回签收时间 6. 如果未签收,判断是否存在物流异常 7. 如果存在异常,返回异常原因这时候,工作流就非常合适。
可以把流程设计成:
用户输入 ↓ 提取订单号 ↓ 查询订单 ↓ 查询物流 ↓ 判断物流状态 ├── delivered → 返回签收信息 │ └── 非 delivered ↓ 判断是否异常 ├── 是 → 返回异常信息 └── 否 → 返回运输中信息这里有一个非常重要的特点:
流程的骨架不是模型临时想出来的,而是我们提前设计好的。
模型可以负责:
- 从自然语言中提取订单号;
- 理解用户表达;
- 生成最终回复。
但是:
- 什么时候查订单;
- 什么时候查物流;
- 什么状态进入哪个分支;
- 什么情况下停止;
都可以由工作流控制。
这就是工作流最大的价值:
把“不可控的自然语言理解”与“需要稳定执行的业务流程”分开。
5. 把工作流具体化:完整的订单查询设计
下面给出一个可以直接进行设计评审的最小版本。
5.1 输入与输出
输入
{"user_query":"帮我查一下订单 A20260928001 到哪了,如果已经签收就告诉我签收时间;如果还没签收,再看看有没有物流异常。"}最终输出
{"order_id":"A20260928001","order_status":"shipped","logistics_status":"delivered","result_type":"delivered","message":"订单 A20260928001 已于 2026-09-29 16:42 签收。"}5.2 节点配置表
| 步骤 | 职责 | 输入来源 | 处理规则 | 输出字段 | 失败去向 |
|---|---|---|---|---|---|
parse_order_id | 提取订单号 | user_query | 提取符合订单号格式的编号 | order_id | 无订单号 → 请求补充 |
query_order | 查询订单 | order_id | 精确查询订单 | order_status、tracking_no | 查不到 → 订单不存在 |
query_logistics | 查询物流 | tracking_no | 查询物流最新状态 | logistics_status、last_event、event_time | 查询失败 → 查询失败 |
classify_status | 判断状态 | logistics_status、last_event | 根据明确规则分类 | result_type | 未知状态 → 人工处理 |
compose_reply | 生成回答 | 所有结果字段 | 按result_type输出 | message | 数据不完整 → 数据异常 |
注意这里故意没有让模型“自由发挥流程”。
例如:
如果 logistics_status == delivered result_type = delivered 否则如果存在明确异常事件 result_type = exception 否则 result_type = in_transit这是一套业务规则,而不是一句:
请智能判断订单发生了什么。对于订单这种具有明确状态的数据,前一种设计通常更容易测试。
6. 工作流什么时候比 Agent 更合适?
假设公司每天有 10 万次订单查询,而且业务规则非常明确:
查订单 → 查物流 → 判断状态 → 输出结果这时候,如果没有必要让模型自由选择下一步,却让 Agent 每次自己规划:
我要先查订单吗? 还是先查物流? 订单没找到是不是应该搜索客户? 物流异常是不是应该再查仓库? 要不要重新查询?实际上是在给一个本来可以确定的问题增加不确定性。
工作流的优势恰恰在这里:
可预测
流程结构固定。
易测试
每一个节点都有明确输入和输出。
易审计
可以知道一次请求经过了哪些步骤。
易控制成本
不需要让模型不断决定下一步。
易处理业务规则
例如:
已取消订单 → 不查询物流 已签收 → 不再检查运输中状态 物流状态未知 → 转人工这些规则可以直接写成确定性逻辑。
Anthropic 的工程实践资料也指出,预定义流程在任务明确时具有更好的可预测性,而 Agent 更适合需要灵活性的任务;Agent 往往需要用更高的延迟和成本换取这种灵活性。(Anthropic)
7. 方案三:Agent——让模型决定“下一步做什么”
现在把需求真正升级。
用户不再只问:
查一下订单 A20260928001。而可能说:
“我的订单 A20260928001 好像一直没收到,你帮我看看现在什么情况。如果物流有问题,帮我判断可能卡在哪里;如果订单信息有问题,再看看订单本身。”
这时流程开始变得不确定。
Agent 可以拥有这些工具:
query_order(order_id) query_logistics(tracking_no) query_warehouse(order_id) query_delivery_exception(tracking_no)它的基本循环可以理解为:
用户目标 ↓ 模型理解任务 ↓ 选择工具 ↓ 获得工具结果 ↓ 重新判断 ↓ 选择下一步 ↓ …… ↓ 满足停止条件 ↓ 生成最终答案这与 Agent SDK 中常见的运行循环相符:模型产生工具调用后执行工具,再将结果交回运行循环;如果模型完成任务并不再需要工具调用,则结束运行。(OpenAI Developers)
8. Agent 的真正变化:不是“多几个工具”,而是“决策权发生变化”
假设第一次调用:
query_order("A20260928001")返回:
{"order_status":"shipped","tracking_no":"DE20260928001"}Agent 可能决定:
下一步查询物流。于是:
query_logistics("DE20260928001")返回:
{"logistics_status":"exception","last_event":"包裹到达分拨中心后超过48小时未更新"}这时 Agent 又可以决定:
需要进一步确认异常。于是:
query_delivery_exception("DE20260928001")返回:
{"exception_type":"stalled","suggested_action":"联系承运商核查"}最后停止:
订单 A20260928001 当前处于运输异常状态。 物流记录显示,包裹到达分拨中心后已经超过 48 小时没有新的物流更新。 当前可确认的异常类型为“运输停滞”,建议联系承运商进一步核查。这里真正发生变化的是:
下一步不是完全由预先写死的流程决定,而是由模型结合当前工具结果进行选择。
这才是 Agent 与普通工作流之间最值得关注的边界。
9. 一个非常实用的判断方法:问自己三个问题
面对一个 AI 需求,不要先问:
“要不要用 Agent?”
先问三个问题。
问题一:步骤能不能提前写死?
例如:
提取订单号 → 查询订单 → 查询物流 → 判断状态 → 返回结果如果可以,而且大部分情况都一样:
优先考虑工作流。
问题二:不同输入是否需要不同路径?
例如:
订单不存在 → 查客户订单历史? 订单存在但没有物流单号 → 查仓库发货状态? 物流异常 → 查询异常详情? 用户同时问退款 → 是否进入售后流程?如果路径开始明显分叉,工作流仍然可以做,但维护成本会逐渐增加。
这时候可以考虑 Agent。
问题三:让模型自己选择下一步,是否真的产生价值?
这是最容易被忽略的问题。
如果增加 Agent 后只是:
模型决定调用 query_order ↓ 模型决定调用 query_logistics ↓ 模型决定回答而这三个步骤其实永远不变,那么 Agent 的自由度没有带来实际价值。
反过来,如果任务本身具有:
- 路径不确定;
- 工具数量较多;
- 用户表达差异大;
- 需要根据中间结果动态决定下一步;
- 某些问题需要继续调查;
- 需要在明确边界内自主完成任务;
那么 Agent 的价值就开始出现。
OpenAI 的 Agent 指南也把“使用模型管理工作流执行并进行决策”“动态选择工具”等能力作为 Agent 的核心特征。(OpenAI)
10. 把三个方案放进同一张决策表
仍然使用我们的订单查询任务,可以这样判断:
| 条件 | 聊天助手 | 工作流 | Agent |
|---|---|---|---|
| 用户只想了解订单状态 | ✓ | 可用 | 通常没必要 |
| 数据已经由程序准备好 | ✓ | ✓ | 通常没必要 |
| 查询步骤固定 | 可用 | ✓ | 可以,但复杂度更高 |
| 需要多个固定 API | 可用 | ✓ | 可用 |
| 路径由业务规则决定 | △ | ✓ | 可用 |
| 路径需要根据中间结果动态变化 | △ | ✓但复杂 | ✓ |
| 工具很多且选择不固定 | △ | 维护成本增加 | ✓ |
| 需要自主调查问题 | △ | 可以编排 | ✓ |
| 需要明确、稳定、可审计 | ✓ | ✓ | 需要额外设计 |
| 需要自主决策 | △ | 有限 | ✓ |
这里的“✓”并不意味着其他方案绝对做不到,而是表示该方案与问题结构更加匹配。
11. 最小闭环:其实可以从聊天助手开始
一个常见错误是:
业务刚接入大模型,就直接设计 Agent。
更稳妥的升级路线可以是:
聊天助手 ↓ 需要稳定执行 ↓ 工作流 ↓ 出现大量动态分支 ↓ 局部引入 Agent ↓ 必要时再扩大 Agent 的决策范围例如订单系统完全可以经历三个阶段。
第一阶段:问答
用户 → AI ↓ 订单数据 ↓ 回答适合:
“订单 A20260928001 是什么状态?”第二阶段:工作流
用户 ↓ 提取订单号 ↓ 查询订单 ↓ 查询物流 ↓ 状态判断 ↓ 回答适合:
“帮我查订单并告诉我物流状态。”第三阶段:Agent
┌→ 查询订单 用户 → Agent ────┼→ 查询物流 ├→ 查询仓库 └→ 查询异常 ↓ 根据结果继续决策 ↓ 最终回答适合:
“这个订单为什么还没收到?帮我查清楚原因。”注意这里的变化不是“问题越来越高级”,而是:
从回答一个问题,逐渐变成完成一个目标。
12. 一个完整的 Agent 设计,至少要把这些东西写清楚
如果真的决定采用 Agent,不要只写一条:
你是一个订单查询 Agent,请帮助用户解决订单问题。这远远不够。
至少需要定义:
| 项目 | 示例 |
|---|---|
| Agent目标 | 调查用户订单状态及异常原因 |
| 输入 | user_query |
| 订单查询工具 | query_order(order_id) |
| 物流查询工具 | query_logistics(tracking_no) |
| 仓库查询工具 | query_warehouse(order_id) |
| 异常查询工具 | query_delivery_exception(tracking_no) |
| 工具调用限制 | 只允许查询,不允许修改订单 |
| 最大循环次数 | 例如 5 次 |
| 停止条件 | 信息足够回答、达到循环上限、需要人工介入 |
| 未知状态 | 不猜测,返回“无法确认” |
| 数据缺失 | 请求补充或进入下一调查步骤 |
| 高风险动作 | 不自动执行 |
其中最重要的是:
停止条件。
Agent 不是“让模型一直思考”。
一个可控的 Agent 必须知道什么时候结束。
13. 验收:不要用“它回答得挺好”作为测试
现在回到最开始的订单任务。
我们至少设计三个测试。
13.1 正常场景
测试目的
验证系统可以正确处理已经签收的订单。
输入
帮我查一下订单 A20260928001 到哪了?预期数据
order_status = shipped logistics_status = delivered event_time = 2026-09-29 16:42预期结果
回答必须能够确认:
订单号:A20260928001 物流状态:已签收 签收时间:2026-09-29 16:42判定方法
不能只检查“回答是否通顺”。
应该检查:
order_id是否正确;logistics_status是否正确;event_time是否来自物流数据;- 是否把“已签收”错误描述成“运输中”。
14. 边界场景:订单存在,但物流没有更新
准备第二条虚构数据:
order_id = A20260928002 order_status = shipped tracking_no = DE20260928002 logistics_status = in_transit last_event = 到达东京分拨中心 event_time = 2026-09-29 09:10用户:
订单 A20260928002 现在怎么样?预期结果应该是:
订单 A20260928002 目前仍在运输中。 最新物流节点:东京分拨中心。 最新更新时间:2026-09-29 09:10。 当前没有足够信息确认已经签收。这里特别需要防止一种错误:
模型看到订单已经发货,就自行推断“应该快到了”。
系统应该只报告数据能够支持的结论。
15. 失败场景:订单不存在
用户:
帮我查订单 A20269999999。系统查询不到。
正确行为应该是:
未找到订单 A20269999999。 请确认订单号是否正确。而不是:
您的订单目前正在运输中。更不能为了“完成任务”而猜测一个订单状态。
对于 Agent,这一点尤其重要。
因为 Agent 拥有更多自主决策能力,所以拒绝猜测、停止条件、工具权限和异常路径反而更加重要。
16. 验收表:把“好不好”变成可判断的标准
| 测试目的 | 输入或操作 | 预期结果 | 判定方法 |
|---|---|---|---|
| 正常查询 | A20260928001 | 返回已签收及签收时间 | 订单号、状态、时间均与数据一致 |
| 边界状态 | A20260928002 | 返回运输中,不声称已签收 | 不得出现数据之外的签收结论 |
| 订单不存在 | A20269999999 | 明确提示未找到 | 不生成虚构订单状态 |
| 缺少订单号 | “帮我查一下订单” | 请求订单号 | 不调用带空订单号的查询 |
| 未知物流状态 | logistics_status=unknown | 标记无法确认 | 不强制归类为已签收/运输中 |
| Agent 循环异常 | 工具连续返回不完整数据 | 达到停止条件后结束 | 不无限调用工具 |
这就是一个真正可验收的最小测试集。
17. 一个经常被忽略的问题:Agent 不一定比工作流更“可靠”
这是理解 Agent 最重要的工程意识之一。
假设工作流是:
查询订单 → 查询物流 → 判断状态 → 返回路径固定,因此你可以针对每个节点编写测试。
Agent 则可能出现:
查询订单 → 查询物流 → 再查询订单 → 查询仓库 → 再查物流 → 最终回答甚至可能因为模型判断不同而产生不同的工具调用路径。
这种灵活性有价值,但也带来了新的验证问题:
- 为什么选择这个工具?
- 为什么没有调用另一个工具?
- 为什么停止?
- 为什么继续?
- 是否重复调用?
- 是否调用了不必要的工具?
- 是否在工具返回异常后错误地继续?
- 是否把工具结果理解错了?
所以:
Agent 的难点不是“让模型会调用工具”,而是让模型在允许的范围内可靠地调用工具。
OpenAI 当前 Agent 文档也把工具、Guardrails、运行循环、状态和追踪作为 Agent 工程的重要组成部分,而不是只强调 Prompt。(OpenAI Developers)
18. 什么时候不要使用 Agent?
可以直接给出一个非常实用的反向判断。
如果你的需求是:
输入固定 ↓ 步骤固定 ↓ 规则固定 ↓ 输出固定那么通常没有必要为了“AI Agent”这个概念增加一层自主决策。
例如:
用户输入订单号 → 查询订单 → 查询物流 → 返回物流状态。
这更像工作流。
如果需求变成:
用户只告诉系统“我的包裹好像出问题了”,系统需要自行判断应该查询订单、物流、仓库还是异常记录,并根据中间结果决定下一步。
这时候 Agent 才开始体现价值。
因此可以记住一句非常实用的话:
固定路径优先工作流,不确定路径才考虑 Agent。
再进一步:
如果连任务都不需要执行,只需要理解和回答,聊天助手就可能已经足够。
19. 最终选择方法:用“决策权”而不是“AI程度”来判断
回到文章开头的问题:
聊天助手、工作流与 Agent 到底有什么区别?
可以把答案压缩成三个问题。
第一层:只是回答?
用户 → AI → 回答主要解决:
- 问答;
- 总结;
- 解释;
- 内容生成;
- 信息整理。
考虑聊天助手。
第二层:需要执行,但路径确定?
输入 ↓ 步骤A ↓ 步骤B ↓ 判断 ↓ 步骤C ↓ 输出主要解决:
- 固定业务流程;
- 数据处理;
- 自动化任务;
- 稳定的 API 编排;
- 可审计流程。
优先考虑工作流。
第三层:需要完成目标,但路径不确定?
目标 ↓ 模型判断 ↓ 选择工具 ↓ 观察结果 ↓ 再次判断 ↓ 选择下一步 ↓ 完成目标主要解决:
- 动态调查;
- 多工具选择;
- 不确定路径;
- 根据中间结果动态规划;
- 在明确边界内自主执行。
这才是 Agent 更典型的应用场景。
20. 一个简单的选择口诀
最后可以把整篇文章浓缩成一张判断卡片:
只需要回答? ↓ 是 聊天助手 需要执行任务? ↓ 是 步骤是否基本固定? ↓ 是 工作流 步骤是否经常需要根据中间结果动态变化? ↓ 是 Agent 但如果: 动态决策带来的收益 < 额外的成本、延迟和验证复杂度 那么: 继续使用工作流。这也是为什么工程上不应该把 Agent 当成 AI 应用的默认终点。
当前官方资料也越来越强调这种“按任务选择架构”的思路:OpenAI 将 Agent 描述为能够利用工具并自主推进任务的系统;Anthropic 则明确建议从最简单的方案开始,在真正需要灵活决策时再引入 Agent。(OpenAI)
21. 本文案例的最小闭环
如果现在真的要实现本文的订单查询系统,可以从下面这个版本开始:
┌──────────────────┐ │ 用户自然语言 │ └────────┬─────────┘ ↓ ┌──────────────────┐ │ 提取 order_id │ └────────┬─────────┘ ↓ ┌──────────────────┐ │ 查询订单 │ └────────┬─────────┘ ↓ ┌──────────────────┐ │ 查询物流 │ └────────┬─────────┘ ↓ ┌───────┴────────┐ ↓ ↓ 已签收 未签收 ↓ ↓ 返回签收时间 判断物流异常 ↓ ┌────────┴────────┐ ↓ ↓ 异常 正常运输 ↓ ↓ 返回异常信息 返回运输状态这个版本首先是一个工作流问题。
只有当实际业务进一步出现:
不同问题需要调用不同工具 + 下一步取决于上一步返回结果 + 无法提前穷举所有路径 + 允许模型在边界内自主调查才有充分理由向 Agent 演进。
22. 常见误区
误区一:用了大模型就是 Agent
不对。
模型可以只负责生成文本,也可以作为工作流中的一个节点。Agent 的关键不只是“用了 LLM”,而是模型参与了任务执行过程中的决策和工具使用。(OpenAI)
误区二:工具越多,Agent 越强
工具数量不是能力指标。
工具越多,也意味着:
- 选择空间更大;
- 权限边界更复杂;
- 测试组合更多;
- 错误调用的影响可能更大。
误区三:能做成 Agent,就应该做成 Agent
这恰恰是工程设计中最危险的思路之一。
如果业务流程高度确定,工作流通常更容易理解、测试和审计。
误区四:Agent 应该一直自主执行
不是。
真正可控的 Agent 应该有:
工具权限 + 输入约束 + 输出约束 + 停止条件 + 失败处理 + 必要时人工接管误区五:聊天助手、工作流、Agent 是完全互斥的
也不是。
真实系统经常是组合关系:
聊天助手 ↓ 工作流 ↓ 某一个节点调用 Agent ↓ Agent 使用工具 ↓ 返回结构化结果 ↓ 继续工作流甚至可以让一个 Agent 调用另一个专业 Agent。当前 Agent 工程体系中已经存在 handoff、agents-as-tools 等编排模式。(OpenAI Developers)
因此,真正的架构选择不是:
“我究竟要选聊天助手、工作流还是 Agent?”
而更接近:
哪一部分应该由确定性程序控制,哪一部分应该交给模型判断?
23. 验证状态
本文完成的核验包括:
- 已在线核对 OpenAI 当前 Agent、工具调用和 Agent 运行循环相关官方文档。(OpenAI)
- 已核对 Anthropic 关于 Workflow 与 Agent 区分、以及“优先采用最简单方案”的工程建议。(Anthropic)
- 订单、物流、时间、订单号等全部为本文虚构数据。
- 已对案例中的字段、状态分支和测试条件进行静态一致性检查。
- 本文没有连接真实订单系统,也没有执行真实查询。
- 本文没有宣称任何真实订单 API、物流 API 或特定平台配置已经实际运行验证。
- 因此,案例中的订单查询流程属于可独立演练的架构与验收设计,不是某一家电商或物流平台的可直接部署接口。
24. 参考资料
OpenAI — A practical guide to building AI agents:用于核对 Agent、Workflow、工具类型及 Agent 决策等概念。(OpenAI)
OpenAI:A practical guide to building AI agentsOpenAI Developers — Agents:用于核对当前 Agent runtime、Agents SDK、Responses API 等架构信息。(OpenAI Developers)
OpenAI Developers:AgentsOpenAI Developers — Using tools:用于核对工具调用和 Agent 工具机制。(OpenAI Developers)
OpenAI Developers:Using toolsOpenAI Developers — Running agents:用于核对 Agent loop、工具调用后的继续执行和停止机制。(OpenAI Developers)
OpenAI Developers:Running agentsAnthropic — Building effective agents:用于核对 Workflow 与 Agent 的架构区别及复杂度选择原则。(Anthropic)
Anthropic:Building effective agents
核验日期:2026-10-02。