项目介绍

Agentic AI是一种构建能够学习、做出决策并根据自然语言指令自动化工作流的 AI 系统的框架。

我们将利用Bedrock Agent来构建一个Web应用,该应用使用一组AI代理来执行基于自然语言指令的任务。这些任务包括使用内部知识源回答问题、查询和更新数据库以及从外部API检索数据。

背景

Octank 宠物店是一家知名的宠物零售商, 正寻求现代化其运营并扩展其业务模式。 目前, 该商店依赖于 PostgreSQL 数据库的直接 SQL 操作进行库存管理, 并使用包含Q/A的 CSV 文件进行日常店铺运营。 然而, 这个系统对于他们不断增长的需求来说已经越来越不够用了。

为了保持竞争力并提高效率, Octank 宠物店希望开发一个现代、用户友好的应用程序, 该应用程序将:

  • 提供一个统一的界面来管理库存、店铺运营和养殖场连接。
  • 集成他们现有的数据系统(PostgreSQL 数据库和 CSV 文件)
  • 通过 RESTful API 与外部狗狗养殖场建立连接, 允许实时更新可用的小狗库存并简化采购流程。
  • 让员工能够使用自然语言轻松访问和更新数据库信息, 而不是使用 SQL。

我们的任务是设计和实现一个满足上述要求并实现从现有系统顺利过渡的现代应用程序。 该解决方案应该使员工能够使用自然语言与整个系统进行交互, 重点关注提高运营效率、提升客户体验, 并使 Octank 宠物店在竞争激烈的宠物零售行业中保持可持续发展。

我们将构建一个由一系列 Amazon Bedrock Agent驱动的 Web 应用程序, 每个Agent都有专门的功能来解决上述问题陈述。 以下是我们将涉及的Agent顺序:

  1. 知识库Agent: 该Agent查询存储在 S3 中的文档存储库, 其中包含有关宠物店运营、政策和其他相关数据的信息。 它提供有关商店营业时间、提供的服务和常见问题的答复。
  2. RESTful API Agent: 该Agent连接到外部 API, 以检索有关狗狗的一般信息, 如品种特征和护理提示。 这允许用户直接在应用程序中找到各种狗狗品种的详细信息。
  3. 查询生成Agent: 该Agent对存储宠物店数据的 RDS Postgres 数据库执行Text to SQL 的查询。 它支持诸如检查库存、在新宠物到达时更新记录以及检索客户相关信息等任务。
  4. 查询修正Agent: 如果数据库查询遇到错误或歧义, 该Agent将努力纠正和完善查询, 确保与数据库的交互顺畅准确。
  5. 协调器Agent: 该Agent负责协调任务, 根据用户的自然语言输入将查询定向到适当的Agent。 它确定查询是最适合知识库、外部 API 还是数据库。

使用 Streamlit (https://github.com/streamlit/streamlit) 构建的 Web 应用将允许用户通过自然语言命令与这些Agent进行交互。

架构图

用户通过运行在 EC2 服务器上的 Streamlit Web 应用 GUI 发出对话请求。Bedrock Orchestrator-Agent 理解请求并确定要调用哪些代理。每个代理都有一个知识库和/或动作组,描述代理可以执行的动作,以及一个可以调用来执行动作的 Lambda 函数。

Bedrock Agent通过适当的action group调用 Lambda 函数来处理请求。Lambda 函数与底层数据源进行交互,并生成响应,然后返回给用户。