基于 Amazon Q Developer CLI 和 Amazon Bedrock Knowledge Bases 实现智能问答系统

article/2025/6/9 1:20:02

1. 引言

传统企业通常将常见问题(FAQ)发布在网站上,方便客户自助查找信息。然而,随着生成式 AI 技术的迅速发展与商业渗透,这些企业正积极探索构建智能问答系统的新途径。这类系统不仅能显著提升客户体验,还能有效降低人工支持成本,实现客户服务的智能化转型。

本文将详细分享如何利用 Amazon Q Developer CLI(以下简称 Q CLI) 和 Amazon Bedrock Knowledge Bases(以下简称 Bedrock KB) 快速构建端到端的智能问答系统。我们将从网页爬取 FAQ 开始,到构建高效知识库,实现全流程自动化,帮助企业轻松迈入 AI 客户服务新时代。

📢限时插播:Amazon Q Developer 来帮你做应用啦!

🌟10分钟帮你构建智能番茄钟应用,1小时搞定新功能拓展、测试优化、文档注程和部署

⏩快快点击进入《Agentic Al 帮你做应用 -- 从0到1打造自己的智能番茄钟》实验

免费体验企业级 AI 开发工具的真实效果吧

构建无限,探索启程!

2. 智能问答系统构建

我们的解决方案分为两个核心阶段:

1、数据采集阶段 – 利用 Q CLI 和 Playwright MCP Server 自动从网页爬取 Q&A 问答对,整理到 Excel 表中。

该阶段主要解决的问题是从网页中快速、自动提取结构化信息,特别是对于常见问题解答(FAQ)页面,能够自动化提取问答对并将其转化为结构化数据,可以为知识库建设、客户支持系统和智能问答机器人提供信息资源。本文将分享如何利用 Q CLI 和 Playwright MCP Server 快速构建一个自动化工作流,实现网页爬取、内容识别和问答对提取。

2、知识库构建阶段 – 将结构化数据导入 Bedrock KB,构建 Q&A 系统。

该阶段主要解决的核心问题是:如何将结构化的 Q&A 对 Excel 文件转化为智能可查询的知识库,并确保系统能准确理解和匹配用户问题。这一挑战尤为关键,因为网站 FAQ 中的问题通常按类别组织,在原始上下文中意义清晰,但一旦脱离分类结构,同样的问题可能变得模糊不清。例如,”如何修改订单?”这个问题在不同业务场景下可能有完全不同的答案。我们需要确保智能问答系统不仅存储问答对,还能根据上下文进行问题分类,以实现精准的语义匹配和回答检索。

架构图如下:

3. 基于 Q CLI + Playwright MCP Server 的自动化数据采集

Amazon Q CLI 是亚马逊推出的一种命令行工具,作为 Amazon Q Developer 的一部分,它允许开发者直接在命令行界面与 Amazon Q 的人工智能能力进行交互。为了延伸 Q CLI 调用外部工具的能力,Q CLI 从 1.9.0 版本开始支持模型上下文协议(Model Context Protocol MCP),借助外部 MCP Server,可以极大地扩充 Q CLI 的能力。

Playwright 是一款开源浏览器自动化框架,提供了跨浏览器的自动化测试和网页交互能力。而 Playwright MCP Server 则是基于 MCP 协议为大语言模型(LLM)提供了使用 Playwright 进行浏览器自动化的能力。具有以下核心功能:

  • 网页导航与交互:允许 AI 模型打开网页、点击按钮、填写表单,等等。

  • 屏幕截图和网站文字获取:捕获当前网页的截图,帮助 AI 分析页面内容。

  • JavaScript 执行:在浏览器环境中运行 JavaScript 代码,实现复杂交互,等等。

当 Q CLI 集成 Playwright MCP Server 后,我们在 Q CLI 中通过自然语言交互就能够实现网页的打开、点击,网页文字内容的读取存储和解析,无需手工操作处理。

比如如下的网页,Q&A 已经使用问答形式将客户关心的问题和答案做了分类整理,但如果我们想导入知识库,就需要把网站的内容导出到 Excel 文件,便于后续处理。

下面我们就向大家一步步展示 Q CLI 集成 Playwright MCP Server 后的强大能力。

3.1 配置 Q CLI 集成 Playwright MCP Server

在 Q CLI 中集成 MCP Server 非常简单,在 Q Developer 的安装目录,通常是~/.aws/amazonq/mcp.json 文件中配置 playwright MCP Server,如下:

参考:https://github.com/executeautomation/mcp-playwright

{"mcpServers": {"playwright": {"command": "npx","args": ["-y", "@executeautomation/playwright-mcp-server"]}}
}

启动 Q Chat 可以看到配置的 Playwright MCP server 已经正常启动了。

3.2 通过自然语言交互实现爬网

在 Q Chat 中输入:

访问 Courier & Delivery Services FAQs | Lalamove Singapore,点击[data-section=”business”];只获取页面的文字内容而非 html 内容,然后将文字内容保存到”lalamove_personal_faq.txt”

就可以看到 Amazon Q 已经开始理解我们的需求,并调用 Playwright MCP Server 提供的合适的工具开始爬网了。它分别使用:

  • playwright_navigate 工具打开指定的网站

  • playwright_click 点击上面网页的“Business”链接

  • playwright_get_visible_text 工具获得网站上的文字内容

  • fs_write 将文字内容保存在本地文件

这里有个有趣的点值得一提:你会发现我们的提示词里面特别添加了点击[data-section=”business”]

访问 Courier & Delivery Services FAQs | Lalamove Singapore,点击[data-section=”business”];只获取页面的文字内容而非 html 内容,然后将文字内容保存到”lalamove_personal_faq.txt”

这样做的原因是,网站中有多个“business”的字样,如果不做特别说明,LLM 通常会根据开发习惯猜测点击时使用的 selector,将该参数传递给 Playwright 工具,当与实际情况不符时,Playwright 往往难以点击到正确的链接。我们通过如下的方法获得准确的 selector 放入指令中,LLM 就可以生成准确的参数,实现精准的点击。

3.3 通过自然语言交互实现文本到 Excel 的转换

我们继续与 Q CLI 进行交互:

Q CLI 经过上面的一系列的自动操作几分钟之内就将网页的 Q&A 对整理到 Excel 文件中:

4. 基于 Amazon Bedrock Knowledge Bases 的知识库构建

该项目中我们主要遇到两个挑战:

  • 网站中的 FAQ 是按类别组织的,同样的问题在不同上下文回答可能完全不同。

为了解决这个问题,我们利用 Bedrock KB 的元数据过滤功能(Amazon Bedrock Knowledge Bases now supports metadata filtering to improve retrieval accuracy | AWS Machine Learning Blog),允许您根据文档的特定属性细化搜索结果,提高检索准确性和响应的相关性。

  • 客户是通过多轮会话进行提问的,每轮会话的意图(或是对应的分类)都有可能变化。

为了解决这个问题,我们采用结合历史会话和当前问题进行问题分类,结合 Bedrock KB 的元数据过滤能力进行知识库的问题搜索。

4.1 基于元数据的 Q&A 问题导入

为了实现基于元数据的 Q&A 问题导入,我们对前面整理出来的 Excel 文件进行拆解,每个 Q&A 问题对都对应一个 Excel 文件和一个元数据 metadata.json 文件,如下:

每个 Excel 文件内容:

对应的 metadata.json 文件内容:

{"metadataAttributes": {"Category": "Business","Sub-Category": "General"}
}

将这些文件作为数据统一放在 S3 中作为数据源导入到 Bedrock KB 中。

4.2 基于多轮会话的意图识别和 Bedrock KB 查询

结合历史会话做意图分类的逻辑如下:

基于 Bedrock KB 做信息检索的代码片段:

try:# 设置Bedrock KB配置最多返回3条信息retrieval_config = {'vectorSearchConfiguration': {'numberOfResults': 3}}# 根据问题做的分类来添加过查询bedrock KB的过滤条件if category != "others":# 添加分类过滤条件retrieval_config['vectorSearchConfiguration']['filter'] = {'equals': {'key': 'Category','value': category}}logger.info(f"使用分类过滤: {category}")else:logger.info("未使用分类过滤,将搜索所有分类")# 调用知识库检索APIresponse = bedrock_agent_runtime.retrieve(retrievalQuery={'text': query},knowledgeBaseId=KNOWLEDGE_BASE_ID,retrievalConfiguration=retrieval_config)# 打印检索结果logger.info(json.dumps(response['retrievalResults'], ensure_ascii=False, indent=2))return response['retrievalResults']except Exception as e:logger.error(f"查询知识库时出错: {str(e)}")return []

基于 Bedrock KB 的回取内容做答案生成的代码片段:

try:# 结合客户需求,当知识库中没有相关信息时直接返回,不需要LLM做总结。if not reference_items: return "抱歉,知识库中没有找到相关信息。"# 构建提示词system_prompt, user_message = build_prompts(query, reference_items)# 设置对话消息system_prompts = [{"text": system_prompt}]messages = [{"role": "user","content": [{"text": user_message}]}]# 设置推理参数inference_config = {"temperature": 0}additional_model_fields = {"top_k": 50}# 调用模型APIresponse = bedrock_runtime.converse(modelId=MODEL,messages=messages,system=system_prompts,inferenceConfig=inference_config,additionalModelRequestFields=additional_model_fields)# 获取模型响应output_message = response['output']['message']response_text = output_message['content'][0]['text']return response_textexcept Exception as e:logger.error(f"生成答案时出错: {str(e)}")return f"处理您的问题时出错: {str(e)}"

5. 总结

Amazon Q CLI 可以与 MCP Server 实现方便的集成。本项目通过 Q CLI 与 Playwright MCP 集成,为网页内容提取和问答对识别提供了一种高效、智能的解决方案。通过简单的自然语言指令,我们就可以快速实现从网页爬取到结构化数据生成的全流程自动化。这不仅大大提高了开发效率,也为构建智能知识库和问答系统提供了坚实基础。

同时,结合 Amazon Bedrock Knowledge Bases 的元数据过滤功能,我们可以首先基于历史会话对问题进行分类,在准确的类别中再完成知识库的搜索和答案生成,进一步提升 Q&A 回复的准确率。

*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

本篇作者

本期最新实验为《Agentic AI 帮你做应用 —— 从0到1打造自己的智能番茄钟》

✨ 自然语言玩转命令行,10分钟帮你构建应用,1小时搞定新功能拓展、测试优化、文档注释和部署

💪 免费体验企业级 AI 开发工具,质量+安全全掌控

⏩️[点击进入实验] 即刻开启 AI 开发之旅构建无限, 探索启程!


http://www.hkcw.cn/article/kBHvRDnWZa.shtml

相关文章

ElasticStack对接kafka集群

背景 在当代数字化浪潮中,日志数据的高效处理对于企业运维监控和数据分析至关重要。本博文聚焦于ELK(Elasticsearch、Logstash、Kibana)技术栈与Kafka集群的深度对接,旨在探讨如何通过这一架构优化,实现高效、可靠且可…

【云计算】基础篇,含云测试

一、云计算中的底层原理 1.1 数学原理 云计算的高效运行依赖于多种数学原理的协同支撑,其核心数学原理: 1.1.1、分布式计算的数学基础 ​分治与并行模型​ ​MapReduce​:将大数据集分割为独立子任务(Map阶段),通过哈希函数分发到分布式节点并行处理,再聚合结果(Redu…

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验

高效易用的 MAC 版 SVN 客户端:macSvn 使用体验 下载安装使用总结 最近有个项目要使用svn, 但是mac缺乏一款像 Windows 平台 TortoiseSVN 那样全面、高效且便捷的 SVN 客户端工具, 直到博主找到了该工具本文将结合实际使用体验,详细介绍 macSvn工具的核心…

从0到1认识EFK

一、ES集群部署 操作系统Ubuntu22.04LTS/主机名IP地址主机配置elk9110.0.0.91/244Core8GB100GB磁盘elk9210.0.0.92/244Core8GB100GB磁盘elk9310.0.0.93/244Core8GB100GB磁盘 1. 什么是ElasticStack? # 官网 https://www.elastic.co/ ElasticStack早期名称为elk。 elk分别…

TDengine 的 AI 应用实战——运维异常检测

作者: derekchen Demo数据集准备 我们使用公开的 NAB数据集 里亚马逊 AWS 东海岸数据中心一次 API 网关故障中,某个服务器上的 CPU 使用率数据。数据的频率为 5min,单位为占用率。由于 API 网关的故障,会导致服务器上的相关应用…

VMWare安装常见问题

如果之前安装过VMWare软件,只要是 15/16 版本的,可以正常使用的,不用卸载!!! 如果之前安装过,卸载了,一定要保证通过正常的渠道去卸载(通过控制面板卸载软件&#xff09…

MyBatis02——mybatis基础使用|缓存机制|sqlMapper文件|单参数和多参数传递|Statement和PreparedStatement

目录 一、搭建环境 二、核心配置文件 三、核心类 (测试类) 四、缓存机制 一级缓存 二级缓存 清理缓存 五、sqlMapper文件 六、单参数和多参数的传递 6.1取别名 6.2 测试新增返回自增主键 七、mybatis中Statement和PreparedStatement 作业 1…

Grafana-State timeline状态时间线

显示随时间推移的状态变化 状态区域:即状态时间线上的状态显示的条或带,区域长度表示状态持续时间或频率 数据格式要求(可视化效果最佳): 时间戳实体名称(即:正在监控的目标对应名称&#xf…

便捷高效能源服务触手可及,能耗监测系统赋能智能建筑与智慧城市

在建筑行业迈向智能化、精细化管理的进程中,传统建筑管理模式因信息割裂、数据利用不足等问题,逐渐难以满足现代建筑复杂的运营需求。楼宇自控系统实现了建筑设备的智能调控,BIM技术则构建了建筑的三维数字化模型,当两者相遇&…

论文阅读:CLIP:Learning Transferable Visual Models From Natural Language Supervision

从自然语言监督中学习可迁移的视觉模型 虽然有点data/gpu is all you need的味道,但是整体实验和谈论丰富度上还是很多的,也是一篇让我多次想放弃的文章,因为真的是非常长的原文和超级多的实验讨论,隔着屏幕感受到了实验的工作量之…

【连接器专题】案例:产品测试顺序表解读与应用

在查看SD卡座连接器的规格书,一些测试报告时,你可能会看到如下一张产品测试顺序表。为什么会出现一张测试顺序表呢? 测试顺序表的使用其实定义测试环节的验证的“路线图”和“游戏规则”,本文就以我人个经验带领大家一起看懂这张表并理解其设计逻辑。 测试顺序表结构 测试…

【MATLAB代码】制导方法介绍与例程——三点法|三维空间,动态目标导引(订阅专栏后可直接查看源代码)

三点法导引是一种导弹制导策略,通过计算导弹、目标和制导站之间的相对位置来确保导弹准确追踪移动目标。该方法利用三角定位和动态调整,实时更新导弹的飞行路径,以提高命中率,广泛应用于军事导弹和无人机等领域。文中有完整的matlab源代码,订阅专栏后即可查看 文章目录 代…

AUTOSAR CP——Can模块

Can模块的主要配置信息 其他相关模块 通讯框图 Can网络唤醒配置:当硬件支持的时候,可以通过Bus唤醒,见《TechnicalReference_Can_ Rscan》 P30 _5.5.1 Wakeup Functionality:RH850芯片时,在不使用SBC时,…

项目执行中缺乏灵活应对机制,如何增强适应性?

项目执行中缺乏灵活应对机制可以通过建立风险预警机制、培养团队快速响应能力、制定动态调整方案、加强团队沟通协作、引入敏捷管理理念来增强适应性。 其中,培养团队快速响应能力尤为重要。这种能力意味着当项目遇到突发状况时,团队能迅速评估问题、确定…

【无刷电机FOC进阶基础准备】【02 常用电磁名词】

目录 磁导率气隙磁感应强度磁通量磁链电感值感应电动势 本节介绍一些高频的电磁名词,大部分在高中阶段出现过,这部分内容不会很严谨,只介绍一些实用的概念。 磁导率 描述一个材料自身的磁性受外部磁场影响的能力,比如磁导率低的材…

接口自动化测试之pytest 运行方式及前置后置封装

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 一、Pytest 优点认知 1.可以结合所有的自动化测试工具 2.跳过失败用例以及失败重跑 3.结合allure生产美观报告 4.和Jenkins持续集成 5.很多强大的插件 pytest-htm…

PH热榜 | 2025-06-03

1. Knowledge 标语:像认识朋友一样去销售给潜在客户,因为你其实了解他们! 介绍:Knowledge 是一个针对个人的销售智能平台,它利用行为数据和心理测评来识别市场上的潜在买家,并指导销售团队以最真实、最有…

【Java】性能调优:利用 jstack 寻找 Java 程序卡顿的真相

前言 当 Java 程序出现给人感觉 “卡顿”、“响应慢”、CPU 风调高、系统给予调用总是延迟时,我们需要采用系统层和虚拟机层的合理工具来分析细节。 本文仅从 JVM 的角度来分析,研究如何利用 jstack 进行 Java 程序性能调优。 Java 程序卡顿的常规原因…

Skyeye 云智能制造办公系统 v3.16.6 发布

Skyeye 云智能制造,采用 Springboot (微服务) Layui UNI-APP Ant Design Vue 的低代码平台。包含 30 多个应用模块、50 多种电子流程,CRM、PM、ERP、MES、ADM、EHR、笔记、知识库、项目、门店、商城、财务、多班次考勤、薪资、招聘、云售后、论坛、公…

Python+requests+pytest+allure自动化测试框架

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 1、核心库 requests request请求 openpyxl excel文件操作 loggin 日志 smtplib 发送邮件 configparser unittest.mock mock服务 2、目录结构 base utils …