Zhang Jian
9 min read

基于 AutoGen 的数智助手问答架构设计

ByZhang Jian

🔍 整体架构设计

💡 我们采用分层模块化的设计理念,构建了一个灵活可扩展的多智能体系统。这种设计不仅确保了系统的高可用性,也为未来的功能扩展提供了良好的基础。

基于多智能体的架构设计采用分层模块化方案,主要包含以下核心组件:

顶层控制模块

  1. 意图澄清Agent

    • 采用规则模板+相似度匹配处理模糊问题,阈值低于0.8时触发澄清
    • 结合用户画像和历史会话进行意图预测,准确率超过95%才确认
    • 使用主动问答策略收集缺失信息,如套餐类型、使用场景等
    • 进行初步意图分类,支持查询、办理、咨询等类型
  2. 意图理解Agent

    • 使用NER(命名实体识别)技术识别业务实体(套餐名称、手机号码、时间等)
    • 基于预定义规则模板进行意图匹配和分类
    • 结合实体识别和规则匹配结果进行综合分析
    • 输出标准化的意图理解结果(实体、类型、置信度)
  3. 任务规划Agent

    • 基于DAG图构建任务执行流程,将复杂任务拆解为原子任务节点
    • 使用优先级队列管理任务调度,支持动态调整执行顺序
    • 采用状态机管理任务生命周期,包含待执行、执行中、完成、失败等状态
    • 内置任务重试和异常处理机制,确保任务执行的可靠性

业务执行模块

系统根据不同业务场景划分为多个并行的业务处理单元,每个单元包含两层智能体:

  1. 意图识别Agent

    • 基于澄清结果精确识别用户意图
    • 基于上下文和历史交互智能推断用户真实意图
    • 适配多个助手的意图识别,实现精准分发
  2. 业务逻辑Agent

    • 执行具体的业务操作:处理用户查询、执行业务办理、提供智能推荐
    • 负责与底层服务交互:调用业务接口、访问数据库、对接第三方系统
    • 处理业务规则校验:权限验证、规则约束、异常处理

🛠️ 智能体框架选型

💡 框架选择关系到整个项目的成败,我们进行了深入的调研和分析。

调研方法与过程

我认为在评估智能体框架时,我们应该采取更加务实的调研方式。我们首先对市面上常见的智能体框架做了全面摸底,重点看了各个框架的使用情况、社区活跃度,以及实际落地案例。除此之外,我们也深入研究了每个框架的技术特点、性能表现和扩展能力。

从业务角度来看,有几个关键点特别重要:首先是要能扛住大流量,其次是要能适应我们多样化的业务场景,最后是要保证稳定性和安全性。

为什么选择 AutoGen

经过反复比较和讨论,我们觉得 AutoGen 是最适合的选择:

  • 灵活的 API 设计:工具链也很完善,对快速开发业务很有帮助
  • 多语言支持:支持多种编程语言,插件机制也很强大
  • 微软背书:有微软在背后支持,框架的未来发展更有保障

框架对比

框架名称描述优势
AutoGen微软开源的新一代智能体框架多层次API、强大插件系统、跨语言支持
LangChain Agents模块化的大语言模型应用框架高度模块化、生态完善、社区活跃
Qwen-Agent通义千问开源的智能体框架中文理解能力强、工具调用丰富
BabyAGI轻量级自主智能体框架轻量、简单、低门槛

🧠 Deepseek R1 融合

为了进一步提升系统的语义理解和意图解析能力,我们计划引入 Deepseek R1 模型,并将其与现有的多智能体架构深度融合。

集成方案:基于深度思考过程的认知迭代

在原有意图澄清与理解模块的基础上,我们进一步提取 Deepseek R1 模型内部的思考过程(chain-of-thought),并在此过程中调用知识库进行信息补充与反馈。

整体流程如下:

  1. 初步解析与思考:调用 Deepseek R1 模型进行初步语义解析,并提取模型内部生成的思考过程
  2. 知识库查询:利用初步生成的思考过程作为查询条件,获取相关的背景知识和数据补充
  3. 融合与迭代优化:将知识库返回的信息与原始思考过程进行融合,经过多轮迭代逐步收敛

示例代码:

def deepseek_iterative_analysis(user_input, max_iterations=3):
    # 第一步:调用 Deepseek R1 生成初步解析结果和内部思考过程
    initial_result = deepseek_r1_api(user_input, mode="chain-of-thought")

    combined_input = initial_result["chain_of_thought"]
    for i in range(max_iterations):
        # 1. 主动查询知识库获取相关信息
        kb_info = query_knowledge_base(combined_input)

        # 2. 让知识库根据当前思考状态推送补充信息
        kb_suggestions = knowledge_base_suggestions(combined_input)

        # 3. 合并两种知识来源
        enriched_knowledge = merge_knowledge(kb_info, kb_suggestions)

        # 迭代优化
        refined_result = deepseek_r1_api(input_for_refinement, mode="iterative-refinement")

        if has_converged(combined_input):
            break

    return {"final_intent": refined_result.get("result")}

场景案例:套餐推荐优化

🔍 用户咨询:"我想给父母换个套餐,他们每月通话时长200分钟左右,偶尔刷视频,主要是和家人视频通话,预算150元以内。"

传统向量检索模式

  • 提取关键词:"通话时长200分钟"、"视频通话"、"150元"
  • 向量检索匹配相似套餐
  • 缺乏场景理解,无法理解"父母"这类用户特征

Deepseek R1 思维链模式

  1. 用户画像解析:老年群体(父母)、以通话为主、预算敏感
  2. 需求分层:核心需求(通话约200分钟)、次要需求(视频通话流量)、价格上限(150元)
  3. 套餐匹配逻辑:优先考虑老年专属套餐、通话时长满足需求
  4. 个性化建议:推荐开通亲情网、建议设置流量提醒

融合优势与效果展望

  • 准确性提升:深层语义解析有助于显著提高意图和实体识别的准确率
  • 决策支持:融合后的解析结果可为任务规划和后续处理提供更可靠的语义信息
  • 模块灵活性:无论是作为现有 Agent 的增强,还是独立智能体存在,Deepseek R1 模型均可以根据业务需求灵活调度

未来,我们将持续监控 Deepseek R1 模型在实际场景下的表现,并根据用户反馈不断优化融合策略。