ChatNode调用流程图

ChatNode处理流程 调用 compiledGraph.invoke START 记录开始时间 识别意图 判断意图类型 是 否 普通聊天 其他意图 解析用户消息 检查特殊问题 是 否 获取响应 是 获取工具结果 生成最终响应 否 直接输出 返回响应 处理完成 记录结束时间 返回 提取文本/图片 ChatNode 是否匹配特殊问题? 返回预设答案 调用大模型 是否需要工具调用? 执行工具调用 将结果返回大模型 构建响应对象 用户请求
ChatMessagesBO AgentServiceImpl.chat 状态图执行 StartRecordNode IntentNode IntentDispatcher 是否需要澄清? DirectOutputNode 意图类型? 其他节点 EndRecordNode 构建最终响应 ChatMessagesDTO

流程图说明

1. 请求入口阶段

  • 用户请求: 用户通过前端发送聊天请求,包含会话ID、查询消息等信息
  • AgentServiceImpl.chat(): 作为服务入口,接收ChatMessagesBO参数并调用编译好的状态图

2. 图执行阶段

  • 状态图执行: 从START节点开始执行预定义的图流程
  • StartRecordNode: 记录会话开始时间
  • IntentNode: 进行意图识别,判断用户请求类型
  • IntentDispatcher : 根据意图识别结果分发到不同节点
    • 如果需要澄清,直接进入DirectOutputNode
    • 根据意图类型分发到对应的处理节点(如ChatNode处理普通聊天)

3. ChatNode处理阶段

  1. 解析用户消息: 提取用户消息中的文本和图片内容
  2. 检查特殊问题 : 匹配预定义的特殊问题配置
    • 如果匹配,直接返回预设答案
    • 如果不匹配,继续调用大模型
  3. 调用大模型: 使用配置的系统提示词和用户消息调用大模型
  4. 处理工具调用 :
    • 如果大模型返回需要工具调用,执行相应的工具调用
    • 获取工具调用结果并返回给大模型
    • 大模型根据工具结果生成最终响应
  5. 构建响应对象: 整合所有结果,构建ChatMessagesDTO响应对象

4. 结束处理阶段

  • EndRecordNode: 记录会话结束时间
  • 构建最终响应: 整合所有节点的处理结果
  • 返回响应: 将ChatMessagesDTO返回给调用方

技术要点

1. 图结构组织

  • 使用Alibaba Cloud AI Graph框架构建状态图
  • 通过AgentConfig配置节点和边的关系
  • 支持条件分支和异步执行

2. 节点职责

  • StartRecordNode/EndRecordNode: 会话生命周期管理
  • IntentNode: 意图识别
  • ChatNode: 核心聊天处理,包含大模型调用和工具调用逻辑
  • DirectOutputNode: 直接输出内容(如澄清请求)

3. 工具调用机制

  • 大模型可动态调用注册的工具
  • 支持多轮工具调用和结果处理
  • 工具调用结果自动整合到最终响应中

4. 特殊问题处理

  • 支持通过配置文件定义特殊问题和预设答案
  • 优先使用预设答案,提高响应速度和准确性

配置说明

1. Graph配置

  • 在AgentConfig.java中定义图结构
  • 配置节点间的流转关系和条件分支

2. ChatNode配置

  • 通过application.yml配置系统提示词
  • 通过Apollo配置特殊问题列表

3. 意图配置

  • 在IntentDispatcher中定义意图分发逻辑
  • 支持动态扩展意图类型和处理节点

关键类说明

类名 职责 位置
AgentServiceImpl 服务入口,调用状态图 agent/impl/AgentServiceImpl.java
AgentConfig 配置状态图结构 config/agent/AgentConfig.java
ChatNode 核心聊天处理节点 graph/node/ChatNode.java
IntentDispatcher 意图分发器 graph/dispatcher/IntentDispatcher.java
IntentNode 意图识别节点 graph/node/IntentNode.java

使用说明

  1. 查看完整流程: 使用支持Mermaid语法的编辑器打开此文件
  2. 理解调用路径: 从用户请求到响应的完整路径
  3. 分析节点职责: 了解每个节点的具体处理逻辑
  4. 扩展功能: 根据需要在图中添加新节点或修改流转关系
sequenceDiagram participant Client as 用户端 participant Agent as AgentServiceImpl participant Graph as 状态图 participant Intent as IntentNode participant Dispatcher as IntentDispatcher participant Chat as ChatNode participant Model as 大模型 participant Tool as 工具 participant End as EndRecordNode Client->>Agent: 发送聊天请求 Agent->>Graph: 调用状态图 Graph->>Intent: 执行IntentNode Intent->>Dispatcher: 意图识别 Dispatcher->>Chat: 分发到ChatNode Chat->>Model: 调用大模型 Model-->>Chat: 返回响应 alt 需要工具调用 Chat->>Tool: 执行工具调用 Tool-->>Chat: 返回工具结果 Chat->>Model: 提交工具结果 Model-->>Chat: 生成最终响应 end Chat->>End: 返回响应 End->>Graph: 记录结束时间 Graph->>Agent: 返回处理结果 Agent->>Client: 返回最终响应
相关推荐
其美杰布-富贵-李20 小时前
TabNet 流程图集合(Mermaid)
流程图·表格·tabnet
川西胖墩墩1 天前
团队协作泳道图制作工具 PC中文免费
大数据·论文阅读·人工智能·架构·流程图
min1811234561 天前
产品开发跨职能流程图在线生成工具
人工智能·microsoft·信息可视化·架构·机器人·流程图
AC赳赳老秦1 天前
量化交易脚本开发:DeepSeek生成技术指标计算与信号触发代码
数据库·elasticsearch·信息可视化·流程图·数据库架构·memcached·deepseek
帅次1 天前
系统设计方法论全解:原则、模型与用户体验核心要义
设计模式·流程图·软件工程·软件构建·需求分析·设计规范·规格说明书
檐下翻书1732 天前
产品开发跨职能流程图在线生成工具
大数据·人工智能·架构·流程图·论文笔记
程序员zgh3 天前
类AI技巧 —— 文字描述+draw.io 自动生成图表
c语言·c++·ai作画·流程图·ai编程·甘特图·draw.io
神探小白牙3 天前
使用@antv/x6绘制流程图
流程图
爱好读书4 天前
SQL生成ER图|AI生成ER图
数据库·sql·毕业设计·流程图·课程设计
诗酒当趁年华4 天前
抢红包流程图及问题记录
java·流程图