邓立国Agent开发入门必读书《AI Agent智能体开发实践》1~12章试读_《ai agent 智能体开发实践》在线阅读-CSDN博客

该项目基于LangChain框架和阿里云DashScope服务,构建了一个支持单轮问答与多轮对话的企业FAQ智能问答系统,整体框架可分为6个核心层级,形成“输入−处理−输出”的完整闭环,如图10.1所示。

图10.1  整体框架可分为6个核心层级

1. 数据源层

  • 数据形式:采用结构化FAQ数据(问题−答案键值对),包含工作时间、年假申请等企业常见问题。
  • 数据转换:将原始FAQ转换为LangChain的Document格式,包含page_content(问题+答案)和metadata(来源标识)。
  • 设计特点:数据结构简单清晰,便于扩展至更大规模的企业知识库。

2. 数据存储层

  • 核心组件:使用FAISS向量数据库存储文本嵌入向量。
  • 工作原理:通过文本分割器(RecursiveCharacterTextSplitter)将文档分块后,利用嵌入模型转换为向量并存储。
  • 检索配置:设置k=2表示每次检索返回最相关的2条文档。
  • 设计优势:FAISS为轻量级本地向量库,适合小规模知识库场景,部署成本低。

3. 模型层

  • 嵌入模型:自定义DashScopeEmbeddings,基于阿里云text-embedding-v2模型实现文本向量化。
  • 提供embed_documents(批量文档嵌入)和embed_query(查询嵌入)方法。
  • LLM模型:自定义DashScopeLLM,封装阿里云qwen-plus大语言模型。
  • 支持温度参数(temperature=0.3)控制输出随机性。
  • 限制最大生成tokens(max_tokens=512)控制回答长度。
  • 设计亮点:通过统一接口封装第三方模型,便于替换为其他模型服务。

4. 链管理层

1)单轮问答链

  • 由create_retrieval_chain构建,结合检索器和文档组合链。
  • 提示模板限制仅使用上下文信息,避免编造内容。

2)多轮对话链

  • 增加history_aware_retriever实现对话历史感知。
  • 通过contextualize_q_prompt将当前问题结合历史对话重述为独立问题。
  • 设计逻辑:基于LangChain的链模式,实现检索增强生成(RAG)的核心流程。

5. 业务逻辑层

1)单轮问答函数(single_question)

  • 输入:用户问题。
  • 输出:回答内容+参考来源。
  • 功能:独立处理单个问题,返回引用的FAQ来源。

2)多轮对话函数(chat_conversation)

  • 输入:当前问题+对话历史+记忆状态。
  • 输出:更新后的对话历史+清空的输入框+记忆状态。
  • 功能:维护对话上下文,支持连续交互。
  • 设计特点:分离单轮与多轮处理逻辑,满足不同使用场景。

6. 用户交互层

  • 界面框架:使用Gradio构建Web界面,包含两个标签页。
  • 单轮问答:文本输入框+回答展示+来源展示。
  • 多轮对话:聊天机器人组件+输入框+控制按钮。
  • 交互设计:支持按钮提交和回车提交,提供对话清空功能。
  • 设计优势:零代码部署Web界面,降低使用门槛,适合演示和快速迭代。

Logo

一站式 AI 云服务平台

更多推荐