亚马逊AWS官方博客

利用大语言模型与 RAG 架构构建智能化 Support Case 问答系统

1. 引言

在云计算环境中,快速响应和解决客户问题至关重要。亚马逊云科技技术支持案例是客户与亚马逊云科技支持团队沟通的主要渠道。然而,随着案例数量的增加,手动处理和分析这些案例变得愈发困难。有价值的解决方案经验未能有效沉淀,重复性问题需要人工重复处理。本文将详细介绍如何通过自动化流程获取技术支持案例,利用大语言模型(LLM)对案例内容进行总结,并将总结后的案例自动导入到 Dify 的知识库中,最终构建一个基于 RAG(Retrieval-Augmented Generation)的 Support Case 机器人。此外,我们还将探讨未来的优化计划和扩展方向。

2. 需求分析

  • 响应速度要求高:客户期望支持团队能在几分钟内定位并解决问题。
  • 重复性问题频繁:许多案例存在重复内容,但每次仍需从头分析。
  • 知识沉淀困难:解决方案常散落在沟通记录中,缺乏结构化归档。
  • 新员工知识迁移困难:新手支持工程师难以迅速掌握过往问题经验。
  • 自动化支持服务需求上升:构建支持 AI 助手成为趋势。

3. 目标

本项目的目标是打造一个面向技术支持案例自动化处理的智能助手系统,具备以下核心能力:

  • 自动采集案例:从 Support API 自动获取案例数据。
  • 语义理解总结:基于大语言模型抽取关键信息。
  • 知识统一入库:结构化沉淀到统一知识库(Dify)。
  • 问答生成能力:构建 RAG(Retrieval-Augmented Generation)模型实现问答。
  • 可持续优化能力:支持模型优化、知识更新与性能提升

4. 背景与原理

  • Support Case

Support Case 是客户在使用亚马逊云科技服务时遇到问题或需要帮助时创建的支持请求。每个 Case 包含了问题的描述、沟通记录、状态等信息。通过 Support API,我们可以自动化地获取这些 Case 的详细信息。

  • 大语言模型(LLM)与文本摘要

大语言模型(LLM)如 DeepSeeK-R1 等,具有强大的自然语言理解和生成能力。通过对 Support Case 的内容进行总结,LLM 可以提取出问题的核心信息、排查步骤和解决方案,生成简洁的摘要。

  • RAG (Retrieval-Augmented Generation)

RAG 是一种结合了检索和生成的模型,能够在生成回答时参考外部知识库。RAG 模型首先从知识库中检索相关文档,然后基于这些文档生成回答。这种方法能够显著提高生成回答的准确性和相关性。

  • Dify

是一个强大的知识库管理工具,支持多种数据源的导入和管理。通过将总结后的 Support Case 导入到 Dify 的知识库中,我们可以为 RAG 模型提供丰富的背景信息,从而提高其回答问题的能力。

5. 系统架构设计

我们设计了一个端到端的自动化处理系统,核心由四部分组成:

  • 数据源层:Support API 提供支持案例的原始数据。
  • 数据处理层:使用 Lambda 实现无服务器自动处理。
  • AI 理解层:大语言模型(如 DeepSeek)用于语义摘要。
  • 知识与生成层:通过 Dify 构建知识库,并配合 RAG 模型进行问答。

6. 架构图

7. 部署方案

步骤 1. 自动获取 Support Case

首先,我们需要自动获取 Support Case。亚马逊云科技提供了丰富的 API,我们可以使用 SDK(如 Boto3)来调用这些 API

1.1 安装 Boto3

pip install boto3

1.2 获取 Support Case 列表

import boto3
# 创建Support客户端
client = boto3.client('support', region_name='us-east-1')
# 获取Support Case列表
response = client.describe_cases()
# 打印Case列表
for case in response['cases']:
print(f"Case ID: {case['caseId']}, Subject: {case['subject']}, Status: {case['status']}")

1.3 获取单个 Case 的详细信息

# 获取单个Case的详细信息
case_id = 'your-case-id'
case_details = client.describe_communications(caseId=case_id)
# 打印Case的详细信息
for communication in case_details['communications']:
print(f"Date: {communication['timeCreated']}, Body: {communication['body']}")

步骤 2. 使用大语言模型对 Case 内容进行总结

获取到 Case 的详细信息后,我们需要对内容进行总结。可以使用大语言模型(如 DeepSeek)来生成简洁的摘要,包括问题、排查步骤和解决方案。

2.1 使用 DeepSeek API 进行文本摘要

pip install openai
import openai
# 设置OpenAI API密钥
openai.api_key = 'your-openai-api-key'
openai.api_base = 'https://api.deepseek.com/v1' #API Base URL
# 对Case内容进行摘要
case_text = " ".join([communication['body'] for communication in case_details['communications']])
# 使用LLM生成摘要
response = openai.ChatCompletion.create(
  model = "deepseek-chat",
  messages= [
{"role": "user", "content":f"Summarize the following Support Case in 300 words, including the problem, troubleshooting steps, and solution:\n\n{case_text}"}
	]
  max_tokens=300,
  temperature=0.7
)
# 打印摘要
summary = response.choices[0].text.strip()
print(summary)

步骤 3. 将总结后的 Case 导入到 Dify 的知识库

Dify 是一个强大的知识库管理工具,支持多种数据源的导入。我们可以将总结后的 Case 导入到 Dify 的知识库中,以便后续使用。

3.1 安装 Dify 客户端

pip install dify-client

3.2 导入总结后的 Case 到 Dify

from dify_client import DifyClient
# 创建Dify客户端
dify_client = DifyClient(api_key='your-dify-api-key')
# 创建知识库条目
knowledge_entry = {
"title": f"Support Case {case_id} Summary",
"content": summary,
"tags": ["Amazon", "Support Case"]
}
# 导入到Dify知识库
response = dify_client.create_knowledge_entry(knowledge_entry)
# 打印响应
print(response)

步骤 4. 构建 Support Case RAG 机器人

RAG(Retrieval-Augmented Generation)是一种结合检索和生成的模型,能够根据知识库中的信息生成准确的回答。我们可以使用 Dify 的知识库来构建一个 Support Case RAG 机器人。

4.1 配置 RAG 模型

from transformers import RagTokenizer, RagRetriever, RagSequenceForGeneration
# 加载RAG模型
tokenizer = RagTokenizer.from_pretrained("facebook/rag-sequence-nq")
retriever = RagRetriever.from_pretrained("facebook/rag-sequence-nq", index_name="custom", passages_path="path_to_dify_knowledge")
model = RagSequenceForGeneration.from_pretrained("facebook/rag-sequence-nq", retriever=retriever)
# 输入问题
question = "How do I resolve this support case?"
# 生成回答
input_ids = tokenizer(question, return_tensors="pt").input_ids
generated_ids = model.generate(input_ids)
generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
# 打印生成的回答
print(generated_text)

4.2 部署 RAG 机器人

将上述代码集成到一个 Web 服务中,如 Flask 或 FastAPI,即可部署一个 Support Case RAG 机器人,供用户查询和获取支持。

from fastapi import FastAPI

app = FastAPI()
@app.post("/ask")
async def ask(question: str):
    input_ids = tokenizer(question, return_tensors="pt").input_ids
    generated_ids = model.generate(input_ids)
    generated_text = tokenizer.batch_decode(generated_ids, skip_special_tokens=True)[0]
return {"answer": generated_text}

4.3 测试效果

8. 未来优化与演进方向

8.1 模型优化

Fine-tuning RAG 模型:通过对 RAG 模型进行微调,使其更好地适应 Support Case 的特定语境和术语。

多语言支持:扩展模型以支持多种语言,满足全球客户的需求。

8.2 知识库扩展

自动更新机制:实现知识库的自动更新机制,定期从 Support API 获取最新的 Case 并更新知识库。

多源数据集成:除了 Support Case,还可以集成其他数据源,如亚马逊云科技文档、社区论坛等,丰富知识库内容。

8.3 用户体验提升

用户反馈机制:引入用户反馈机制,根据用户对回答的满意度不断优化模型和知识库。

交互式界面:开发一个交互式界面,使用户能够更方便地与 RAG 机器人进行交互。

8.4 性能优化

响应时间优化:通过优化模型和知识库的检索算法,减少响应时间,提高用户体验。

资源管理:优化资源使用,确保系统在高负载下仍能稳定运行。

8.5 安全与合规

数据隐私保护:确保所有客户数据在传输和存储过程中得到充分保护,符合相关法律法规。

访问控制:实施严格的访问控制策略,确保只有授权人员能够访问敏感数据。

9. 总结

通过自动获取 Support Case、使用大语言模型对案例内容进行总结、并将总结后的案例导入到 Dify 的知识库中,我们成功构建了一个基于 RAG 的 Support Case 机器人。这个机器人能够快速响应用户的查询,提供准确的解决方案,极大地提高了支持效率。未来,我们将继续优化模型和知识库,扩展功能,提升用户体验,确保系统的高效和安全运行。


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

参考资料

Support API Documentation

本篇作者

赵辉

西云数据技术客户经理。15+年IT相关工作经验。专注于汽车行业, 致力于企业级客户的架构及成本优化。

戴烨

技术客户经理。凭借在 IT 技术和服务行业超过 18 年的经验,一直热衷于新技术,为我们的客户提供一流的服务和解决方案。目前,在亚马逊云科技中国区域担任技术客户经理,主要服务汽车、零售和医疗的企业级客户。