Sample Application


title: “示例应用” weight: 350


在整个研讨会中,我们将为 AnyCompany Shop 构建并演进一个 客户服务 agent,这是一家虚构的在线零售商店,销售电子产品和配件。

场景

AnyCompany Shop 需要一个由 AI 驱动的 agent,能够处理常见的客户咨询而无需转接给人工。客户通过 Web UI 与 agent 聊天,并期望它能够:

  • 查询订单状态、追踪单号和交货预估
  • 使用商店目录回答产品问题
  • 检查库存可用性
  • 处理退货请求
  • 进行简单计算(例如,“合计我的两笔订单”)

我们将从一个只能查询订单的单一 agent 开始,然后逐个模块地叠加功能,直到我们拥有一个具备可观测性、记忆、工具访问和沙盒化执行的多 agent 系统。

数据模型

agent 使用三个数据源,这些数据源会随着我们完成各个实验而演进:

订单:在每个实验中使用的三个示例订单:

订单 ID 客户 商品 状态
ORD-12345 Jane Doe Laptop Pro 15 ($1,299.99) 已发货
ORD-67890 John Smith Wireless Mouse + 2× USB-C Hub ($129.97) 已送达
ORD-11111 Alice Johnson Noise Cancelling Headphones ($249.99) 处理中

这些订单最初作为 tools.py 中的一个硬编码字典,然后在 Agent Tool Access (MCP) 实验 中迁移到 MCP server。

产品目录:约 13 个产品和常见问题作为向量嵌入到 Milvus 中。在 RAG with Milvus 实验 中添加,用于 RAG 驱动的产品答案。

库存:10 个产品的库存水平,通过 MCP server 的 check_inventory 工具提供。

各实验中的 agent 功能

agent 每个模块获得一项新功能。每一行都建立在前一行的基础上,后面的实验保留了之前所有实验的功能:

实验 新功能 工作原理
Strands Agents 核心 agent 循环 + lookup_order LLM 根据查询决定何时调用工具
Observability (Langfuse) 追踪 每次 LLM 调用、工具调用和决策都被捕获为一个 OTel span
Memory (Milvus / AgentCore) 产品知识或会话记忆 自管理:对目录进行向量搜索。集成:跨轮次的对话历史
Tool Access (MCP / AgentCore) 动态工具 + 沙盒化执行 用于订单/库存工具的 MCP server。集成路径添加了 Code Interpreter + Browser
Multi-Agent (A2A) 专家路由 编排器通过 A2A 分派给 Order Agent 和 Product/Sandbox Agent

聊天 UI

一个基于 Chainlit 的 Web UI 已预先部署在集群上。它包含一个带有四个条目的配置文件下拉菜单,每个条目对应路径和模式(单 agent 或多 agent)的一种组合。所有配置文件都将请求发送到同一个 /chat 端点;唯一的区别在于它们所针对的集群内 Service。

要在浏览器中打开它,运行:

echo $CHAT_UI_URL

注意:大多数配置文件目前还无法工作,因为它们的 agent Services 尚未部署。当我们完成每个实验时,它们将变得可用。保持此标签页打开,并在每个实验中使用它。