首页 / 文章 / 实用笔记:设计我们的多智能体在线购物平台——为何要采用单一架构

实用笔记:设计我们的多智能体在线购物平台——为何要采用单一架构

《实用笔记:设计我们的多智能体在线购物平台》操作指南:为何要采用这种模式——为采用该模式的团队提供的契约、校验机制以及可直接插入的代码模块。

3050 词

本指南将逐步构建从原始材料到可运行系统的完整流程,内容涉及《设计我们的多智能体在线购物平台:为何一个大型聊天机器人不够用?》。重点在于可操作的步骤、明确的检查点,以及可直接放入代码仓库的代码,无需猜测其用途。 在概览阶段,应在修改代码之前明确输入参数、该步骤的负责人以及完成标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

1. “神级提示词”陷阱

在处理“1. 神之提示陷阱”阶段时,首先写下相关契约:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功判定标准,杜绝默许的部分完成情况。 缓存稳定的系统指令和工具结构。重复发送相同的开头信息是导致资源浪费的常见原因。

数学与逻辑错误

在处理数学与逻辑错误阶段时,首先写下相关规范:所需输入、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及代币或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。

提示词冗长与高延迟

在处理“提示词膨胀导致的高延迟”问题时,首先需明确相关规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 应将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中管理,以便操作人员无需查看整个系统结构即可进行审计。 对稳定的系统指令和工具架构进行缓存。重复发送相同的开头信息是造成资源浪费的常见原因。 在处理“提示词膨胀导致的高延迟”问题时,首先需明确相关规范:所需的输入参数、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤出现故障时,故障点应能明确指向单一责任模块,而非复杂的流程链。

脆弱的多步骤状态

“脆弱的多步骤状态”阶段若被视为可度量的对象,效果最佳。在扩大范围之前,先记录一份完美的输出结果、一个失败案例以及回滚说明。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,绝不允许出现无声的半完成状态。 将分块策略与检索策略分开。当质量指标发生变化时,修改其中一项不应强制要求重新编写另一项。

2. 我们的核心原则:让AI理解,让代码决策。

将“2 我们的核心原则”阶段视为可度量的对象来处理效果最佳。在扩大范围之前,先记录一份优秀的测试用例、一个故障案例以及回滚说明。在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,就能避免在从演示环境过渡到共享环境时出现意外费用。要保持图结构的层次简单且类型明确,嵌套的数据块会掩盖是哪个节点修改了哪个字段,还会在出现中断后导致流程无法继续。

"I'd like to return that TV."
              ↓AI interprets the request              ↓return_order(order_id="101")              ↓Backend checks return policy              ↓Deterministic result

一个重要的区别

“重要区分”阶段若被视为可度量的对象,效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能开关应集中存放于一处,以便操作人员无需查看整个系统结构即可进行审计。 需保持系统状态的扁平化与类型化。嵌套的数据结构会掩盖具体是哪个节点修改了哪个字段,还会导致中断后无法继续处理。 “重要区分”阶段若被视为可度量的对象,效果最佳。在扩大范围之前,需记录一份理想状态下的完整日志、一个故障案例以及回滚说明。 相比庞大的脚本,更应采用小型且可测试的单元。当某一步骤失败时,故障应指向单一的责任模块,而非复杂的流程链。

3. 购物助手的实际功能

在“购物阶段”的三个步骤中,应在修改代码之前明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功判定标准,并拒绝默许的半完成状态。 对于涉及资金支出或更改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务上的完整性。

1. 产品搜索

在“产品搜索1”阶段,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。除了功能结果外,还需记录执行时间以及令牌或查询成本。提前显示成本可避免在系统从演示环境切换到共享环境时出现意外账单。对于涉及资金支出或修改生产数据的操作,必须经过人工审批。仅靠编译时的配置并不足以确保业务的完整性。

2. 购物车管理

在“2个购物车管理”阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储和功能开关应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务流程的完整性。 在“2个购物车管理”阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相比庞大的脚本,更应采用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

3. 订单跟踪

在处理三个订单跟踪阶段时,首先写下合同条款:所需输入、成功标志以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将此阶段视为输入与验证后输出之间的契约。为相关成果命名,明确成功判定标准,杜绝无声的半完成状态。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。

4. 订单取消

在处理4个订单取消阶段时,首先写下相关合同条款:所需输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。

5. 客户反馈

在处理5个客户反馈阶段时,首先需明确合同条款:所需输入、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持透明可追溯。 将配置信息与应用程序代码分开存放。环境文件、密钥存储以及功能开关应集中于一个位置,以便操作员无需查看整个系统结构即可进行审计。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次计费相同的LLM调用。 在处理5个客户反馈阶段时,首先需明确合同条款:所需输入、成功标志以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持透明可追溯。 优先选择小型、可测试的单元,而非庞大的脚本。当某个步骤失败时,故障应指向单一责任模块,而非复杂的流程链。

6. 帮助存储

将“6个商店辅助阶段”视为可度量的对象来处理效果最佳。在扩大范围之前,先记录一份优秀的案例、一个失败案例以及回滚说明。 把这一阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功标准,绝不允许默默地只完成部分工作。 保持图表状态简洁且类型明确。嵌套的数据块会掩盖是哪个节点修改了哪个字段,还会在中断后导致无法继续处理。

4. 让我们跟随真实的对话进行

将“4个需要跟进的阶段”视为可度量的结构会更有效。在扩大范围之前,先记录一份优秀的测试用例、一个失败案例以及回滚说明。在功能结果旁同时记录执行时间以及令牌或查询成本。提前了解成本情况,就能避免在从演示环境过渡到共享环境时出现意外费用。

第一步 — 产品搜索

将第一步产品搜索阶段视为可度量的对象来处理,效果最佳。在扩大范围之前,需记录一份理想的操作日志、一个故障案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能标志应集中存放于一个位置,以便操作人员无需查看整个系统结构即可进行审计。 要保持系统状态的简洁性与类型化。嵌套的数据结构会掩盖是哪个节点修改了哪个字段,还会在流程中断后导致无法继续执行。 将第一步产品搜索阶段视为可度量的对象来处理,效果最佳。在扩大范围之前,需记录一份理想的操作日志、一个故障案例以及回滚说明。 相比复杂的脚本,更应采用小型且可测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个具体的责任模块,而非整个错综复杂的流程。

Identifies Intent
        ↓
search_product
        ↓
Queries Product Tool
        ↓
Formats top matches
        ↓
Saves products to Product Context

第二步 — 上下文解析与购物车管理

在步骤2的上下文解析阶段,应在修改代码之前明确输入内容、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与已验证输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务上的完整性。

"the first one"
       │
       ▼
Product Context
       │
       ▼
ProBook 15
       │
       ▼
Product ID: 101
       │
       ▼
Cart Tool
       │
       ▼
Deterministic Total

步骤3 — 启动取消流程

在第三步“启动阶段”中,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。除了功能结果外,还需记录执行时间以及令牌或查询成本。提前了解这些成本可以避免在流程从演示环境转向共享环境时出现意外费用。对于那些会消耗资金或修改生产数据的操作,必须经过人工审批。仅靠编译时的配置并不足以确保业务流程的完整性。

Identifies Intent
        ↓
cancel_order
        ↓
Checks order status
        ↓
Order = Processing
        ↓
Cancellation is allowed
        ↓
Save cancellation state
        ↓
Awaiting Cancellation Reason

第四步 — 完成多轮工作流

在第四步“完成阶段”中,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储以及功能标志应集中存放于一个位置,以便操作人员无需查看整个流程即可进行审计。 对于涉及资金支出或修改生产数据的操作,需经过人工审批。编译时的连接方式并不等同于业务流程的完整性。 在第四步“完成阶段”中,应在修改代码之前明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤失败时,故障原因应能明确指向单一责任模块,而非复杂的流程链。

e.

Incoming Message
       │
       ▼
Is there an active workflow?
       │
      YES
       │
       ▼
Cancellation Workflow
       │
       ▼
Treat message as cancellation reason
       │
       ▼
Execute cancellation
       │
       ▼
Update database

这就是模块化设计开始发挥作用的阶段

在处理“这是……”这一阶段时,首先写下相关契约:所需的输入参数、成功信号以及部分失败时的处理方式。这样的检查清单能确保后续的代码修改保持一致性。 将这一阶段视为输入与经过验证的输出之间的契约。为相关成果命名,明确成功判定标准,杜绝无声的半完成状态。 在成本较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。

5. 我们如何划分职责:概念架构

在完成“5种划分方式”这一阶段时,首先写下相关约定:所需的输入参数、成功标志,以及部分失败时的处理方式。这样的清单能确保后续的代码修改保持一致性。 在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次收取相同的LLM调用费用。

1. 对话层

在处理“1 对话层”阶段时,首先需明确相关规范:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 将配置信息置于应用程序代码之外。环境文件、密钥存储以及功能开关应集中存放于一个位置,以便操作员无需查看整个系统结构即可进行审计。 在耗时较高的步骤之后设置检查点。当操作员重新尝试后续节点时,恢复流程不应再次调用相同的大型语言模型。 在处理“1 对话层”阶段时,首先需明确相关规范:所需输入、成功信号以及部分失败时的处理方式。这份清单能确保后续的代码修改保持一致性。 优先选择小型且可测试的单元,而非结构复杂的脚本。当某个步骤失败时,故障应能指向具体的责任模块,而非整个混乱的流程。

2. 对话状态

将“2 对话状态”阶段视为可测量的对象最为有效。在扩大范围之前,先记录一份理想的对话文本、一个失败案例以及回滚说明。 把这一阶段视为输入与已验证输出之间的契约。为相关文档命名,明确成功标准,绝不允许出现无声的、不完整的处理结果。 保持图结构的状态简洁且类型明确。嵌套的数据块会掩盖是哪个节点修改了哪个字段,还会在中断后导致无法继续处理。

3. 意图路由器

将3个意图路由阶段视为可度量的对象时,其效果最佳。在扩大范围之前,先记录一份理想的处理案例、一个失败案例以及回滚说明。在功能结果旁还需记录处理时间以及令牌或查询成本。提前了解这些成本,就能避免在从演示环境过渡到共享环境时出现意外费用。要保持图结构简洁且类型明确,嵌套的数据块会掩盖是哪个节点修改了哪个字段,还会在中断后导致流程无法继续。

4. 专用工作流

将“4种专用工作流阶段”视为可度量的对象来管理效果最佳。在扩大范围之前,先记录一份标准流程示例、一个故障案例以及回滚说明。 应将配置与应用程序代码分开。环境文件、密钥存储和功能标志应集中存放于一处,以便操作人员无需查看整个架构就能进行审计。 要保持架构状态的简洁性与类型化。嵌套的数据结构会掩盖是哪个节点修改了哪个字段,还会在流程中断后导致无法继续执行。 将“4种专用工作流阶段”视为可度量的对象来管理效果最佳。在扩大范围之前,先记录一份标准流程示例、一个故障案例以及回滚说明。 相比庞大的脚本,更应优先使用小型且可测试的单元。当某个步骤出现故障时,故障原因应能明确指向某个具体的责任模块,而非整个复杂的流程。

5. 工具与数据层

在“5个工具的数据层”阶段,应在修改代码之前明确输入内容、该步骤的负责人以及完成标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 将此阶段视为输入与经过验证的输出之间的契约。为相关成果命名,定义成功检测标准,并拒绝默许的半完成状态。 在网关处进行身份验证,在数据层面重新授权。仅凭承载令牌并不足以界定租户边界。

6. 内部机制:完整的多智能体工作流

在“6 Under the Hood”阶段,修改代码之前需明确输入参数、该步骤的负责人以及结束标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。应在功能结果旁记录执行时间以及令牌或查询成本。提前了解成本情况,可避免在从演示环境过渡到共享环境时出现意外费用。对于会产生支出或修改生产数据的操作,必须经过人工审批。编译时的配置并不等同于业务功能的完整性。

让该架构得以运行的两项设计决策

对于那两个设计决策,应在修改代码之前明确输入参数、该步骤的负责人以及终止标准。操作人员应能够从已知的检查点重新运行该步骤,而无需猜测隐藏状态。 配置信息应置于应用程序代码之外。环境文件、密钥存储和功能标志应集中存放于一个位置,以便操作人员无需查看整个系统结构即可进行审计。 对于涉及资金支出或修改生产数据的操作,必须经过人工审批。编译时的连接方式并不等同于业务功能的完整性。

隔离的上下文

Product Context
├── Product ID
├── Product Name
├── Price
└── Display Position

后端解耦

Local Test Backend
        OR
MCP E-Commerce Backend

7. 为何这对工程团队至关重要

1. 更便捷的调试

2. 并行开发

3. 可测试的业务逻辑

4. 清晰的可扩展性

New Intent
    ↓
New Workflow
    ↓
New Tools
    ↓
Backend Integration

8. 核心要点与后续方向

接下来该做什么?

操作检查清单