当前位置: 首页 > article >正文

AI Agent开发实战系列 - LangGraph(8): 构建基于状态路由的动态决策图

1. 动态决策图的核心价值想象一下你正在设计一个智能客服系统。当用户输入我的订单怎么还没到时系统需要自动识别这是物流查询问题然后路由到物流处理模块而当用户说我要投诉产品质量时系统又应该转向售后处理流程。这种根据实时输入动态调整执行路径的能力正是LangGraph条件图的拿手好戏。在LangGraph中add_conditional_edges方法就像交通指挥中心它通过三个关键组件实现智能路由决策函数相当于交警负责查看当前状态并做出判断条件映射表相当于路标指明每种判断结果对应的下一站节点网络相当于城市道路系统包含所有可能的目的地我最近在一个电商客服项目中实际应用了这个方法将用户问题的平均响应时间缩短了40%。关键在于我们设计了一个精准的状态判断机制能够识别7种不同的用户意图类型。2. 构建客服Agent的条件路由系统2.1 定义状态数据结构首先需要明确我们的交通规则依据什么来制定。在客服场景中状态数据应该包含from typing import TypedDict class CustomerServiceState(TypedDict): user_input: str # 原始用户输入 intent: str # 识别出的意图类型 session_id: str # 会话标识 response: str # 生成的响应内容这个结构就像交警手中的检查清单包含了做决策需要的所有信息。我在实际项目中还添加了user_level字段用来实现VIP用户的优先处理这种扩展性正是TypedDict的优势。2.2 创建处理节点接下来构建各个处理站点也就是具体的业务逻辑单元def order_query_handler(state: CustomerServiceState): # 这里是实际的订单查询逻辑 order_info query_database(state[user_input]) state[response] f您的订单状态是{order_info.status} return state def complaint_handler(state: CustomerServiceState): # 投诉处理流程 ticket_id create_support_ticket(state[user_input]) state[response] f已创建工单#{ticket_id}客服将尽快联系您 return state def fallback_handler(state: CustomerServiceState): # 默认回复 state[response] 抱歉我没理解您的问题请换种方式描述 return state每个处理节点都应该保持单一职责原则。我建议为每个业务场景创建独立的节点这样后期维护时会轻松很多。2.3 设计路由决策逻辑这是整个系统的大脑决定了请求的流向def route_based_on_intent(state: CustomerServiceState): user_text state[user_input].lower() if 订单 in user_text or 物流 in user_text: return order_query elif 投诉 in user_text or 质量 in user_text: return complaint elif 人工 in user_text: return human_agent else: return fallback在实际项目中我建议先用简单的关键词匹配快速实现原型再逐步替换为更精准的意图识别模型。这样可以在早期就验证流程的可行性避免一开始就陷入复杂的NLP模型调优。3. 组装完整工作流3.1 构建图结构现在把各个组件像拼积木一样组装起来from langgraph.graph import StateGraph, START, END workflow StateGraph(CustomerServiceState) # 添加所有节点 workflow.add_node(order_query, order_query_handler) workflow.add_node(complaint, complaint_handler) workflow.add_node(human_agent, connect_to_agent) workflow.add_node(fallback, fallback_handler) # 设置入口点 workflow.add_edge(START, intent_router) # 关键步骤添加条件路由 workflow.add_conditional_edges( intent_router, route_based_on_intent, { order_query: order_query, complaint: complaint, human_agent: human_agent, fallback: fallback } ) # 设置出口点 workflow.add_edge(order_query, END) workflow.add_edge(complaint, END) workflow.add_edge(human_agent, END) workflow.add_edge(fallback, END) # 编译成可执行应用 agent workflow.compile()这里有个容易踩坑的地方条件映射表中的键必须与决策函数的返回值完全一致。我曾经因为拼写错误调试了半天建议使用常量来避免这种问题。3.2 测试工作流实际运行一下看看效果# 测试订单查询 result agent.invoke({ user_input: 我的订单123456到哪里了, intent: , session_id: test123, response: }) print(result[response]) # 输出订单状态 # 测试投诉处理 result agent.invoke({ user_input: 我要投诉买到的商品有质量问题, intent: , session_id: test124, response: }) print(result[response]) # 输出工单信息在真实环境中我建议构建一个包含各种案例的测试集确保路由决策覆盖所有边界情况。特别是那些意图模糊的输入比如我的东西有问题这种既可能指物流也可能指质量的表述。4. 高级技巧与优化建议4.1 状态预处理节点在实际项目中我通常会添加一个预处理节点来处理一些通用逻辑def preprocess_state(state: CustomerServiceState): # 敏感信息过滤 state[user_input] filter_sensitive_words(state[user_input]) # 会话上下文整合 if state[session_id] in session_store: state.update(session_store[state[session_id]]) # 基础意图识别 state[intent] detect_intent(state[user_input]) return state # 在图中添加预处理节点 workflow.add_node(preprocessor, preprocess_state) workflow.add_edge(START, preprocessor) workflow.add_edge(preprocessor, intent_router)这样可以使主路由逻辑更清晰也方便后期扩展。比如要新增敏感词过滤功能时只需要修改预处理节点不会影响核心业务流程。4.2 多级路由策略对于复杂的业务场景可以采用分级路由策略def first_level_router(state): if state[user_input].startswith(订单): return order_related else: return other_issues def order_router(state): if 物流 in state[user_input]: return logistics elif 退货 in state[user_input]: return return else: return general_query # 构建多级路由图 workflow.add_conditional_edges( first_router, first_level_router, {order_related: second_router, other_issues: general_support} ) workflow.add_conditional_edges( second_router, order_router, {logistics: logistics, return: return, general_query: order_query} )这种设计就像电话菜单系统先区分大类再细分小类。我在一个银行客服项目中采用这种结构成功将用户问题的一次解决率提高了25%。4.3 可视化调试技巧LangGraph提供了可视化工作流的功能这在调试复杂路由时特别有用from IPython.display import Image # 生成并显示流程图 Image(agent.get_graph().draw_mermaid_png())当路由逻辑出现问题时这张图能帮你快速定位是哪个判断环节出了错。我习惯在文档中保存每个版本的工作流图示这样回溯问题时可以清楚地看到历次变更的影响。

相关文章:

AI Agent开发实战系列 - LangGraph(8): 构建基于状态路由的动态决策图

1. 动态决策图的核心价值 想象一下你正在设计一个智能客服系统。当用户输入"我的订单怎么还没到?"时,系统需要自动识别这是物流查询问题,然后路由到物流处理模块;而当用户说"我要投诉产品质量"时,…...

c#笔记番外篇同步异步并行串行多线程(以及lambda 表达式)

学习目标: 算是一个一直以来的疑惑点而且ltm老师的视频了没有说这个,只能四处找资料; 先确定一个答案:就是异步和多线程是两种东西,异步可以在单线程里异步也可以在多线程里异步; 同步异步是等不等的问题;比如煮饭和炒菜两件事,同步就是先煮饭等着饭煮好了再做菜;异…...

AIAgent智能体交付流水线重构实录(从月级发布到分钟级灰度上线)

第一章:AIAgent智能体交付流水线重构实录(从月级发布到分钟级灰度上线) 2026奇点智能技术大会(https://ml-summit.org) 传统AI智能体交付长期受限于模型-服务-编排三体割裂:大模型微调需人工调度GPU队列,Agent逻辑变更…...

如何精通Spring设计模式?spring-reading项目中的5大核心模式实战指南

如何精通Spring设计模式?spring-reading项目中的5大核心模式实战指南 【免费下载链接】spring-reading 涵盖了 Spring 框架的核心概念和关键功能,包括控制反转(IOC)容器的使用,面向切面编程(AOP&#xff09…...

OpCore Simplify:让普通用户也能轻松完成黑苹果系统配置的终极指南

OpCore Simplify:让普通用户也能轻松完成黑苹果系统配置的终极指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify 是一款…...

gh_mirrors/code/code消息总线详解:构建松耦合的事件驱动系统

gh_mirrors/code/code消息总线详解:构建松耦合的事件驱动系统 【免费下载链接】code Example application code for the python architecture book 项目地址: https://gitcode.com/gh_mirrors/code/code 在现代软件开发中,构建灵活、可扩展的系统…...

从零开始掌握ky:基于fetch的轻量级HTTP客户端实战指南

1. 为什么你需要ky这个HTTP客户端? 如果你经常用JavaScript写前端项目,肯定对原生fetch不陌生。这个浏览器自带的API确实解决了XMLHttpRequest的很多痛点,但用久了就会发现它有不少"反人类"设计。比如: 必须手动检查res…...

Open NSynth Super故障排除:常见问题与解决方案

Open NSynth Super故障排除:常见问题与解决方案 【免费下载链接】open-nsynth-super Open NSynth Super is an experimental physical interface for the NSynth algorithm 项目地址: https://gitcode.com/gh_mirrors/op/open-nsynth-super Open NSynth Supe…...

SDD基于规范编程-OpenSpec及SuperPowers坡

智能体时代的代码范式转移与 C# 的战略转型 传统的 C# 开发模式,即所谓的“工程导向型”开发,要求开发者创建一个复杂的项目结构,包括项目文件(.csproj)、解决方案文件(.sln)、属性设置以及依赖…...

多目标冲突频发?AIAgent性能崩塌、可解释性归零、推理延迟飙升,如何用动态权重蒸馏法48小时内重构优化层

第一章:多目标冲突频发:AIAgent性能崩塌、可解释性归零、推理延迟飙升的系统性症候 2026奇点智能技术大会(https://ml-summit.org) 当一个AI Agent被同时要求“响应快于200ms”、“生成决策链完整可追溯”、“在资源受限边缘设备上运行”且“支持实时多…...

AI视频工具那么多,为什么你还是做不好课程视频?(附工具对比与选型建议)

📌 一、问题:工具越来越多,视频却越来越难做?这两年AI视频工具爆发:文本生成视频(Sora / Veo / Seedance)数字人视频平台自动剪辑工具看起来:做视频应该越来越简单但现实是&#xff…...

从零开始:使用PyTorch 2.7镜像快速运行YOLO项目

从零开始:使用PyTorch 2.7镜像快速运行YOLO项目 1. 环境准备与快速部署 PyTorch 2.7镜像是一个开箱即用的深度学习环境,预装了PyTorch和CUDA工具包,能够直接调用GPU加速模型训练和推理。这个镜像特别适合想要快速上手计算机视觉项目的开发者…...

Calico IPIP 使用指南断

本课概览 Microsoft Agent Framework (MAF) 提供了一套强大的 Workflow(工作流) 框架,用于编排和协调多个智能体(Agent)或处理组件的执行流程。 本课将以通俗易懂的方式,帮助你理解 MAF Workflow 的核心概念…...

如何把PPT做成讲解视频(新手指南)|3种方法一步步教会你

很多人都有这样的需求:做课程讲解做培训视频做知识分享但卡在一个关键问题:👉 怎么把PPT变成“会讲解”的视频?注意,这里不是简单导出视频,而是:✅ 有讲解 ✅ 有节奏 ✅ 有字幕这篇文章&#xf…...

AI应用工程化落地的隐秘痛点:从直连官方到接入聚合网关的实践之路

在2026年的开发语境里,“调用一个大模型”早已不是demo阶段的几行curl命令。当AI功能从原型验证走向生产环境,真正的挑战才浮出水面:如何保证每一次请求的稳定返回?如何在高峰期扛住并发压力?如何在模型更新时让业务代…...

终极ESP32 Arduino开发指南:从零到物联网专家的完整教程

终极ESP32 Arduino开发指南:从零到物联网专家的完整教程 【免费下载链接】arduino-esp32 Arduino core for the ESP32 项目地址: https://gitcode.com/GitHub_Trending/ar/arduino-esp32 想象一下,你有一个智能家居的想法:一个能自动调…...

【AIAgent架构知识图谱集成终极指南】:20年架构师亲授3大落地陷阱与5步标准化接入法

第一章:AIAgent架构知识图谱集成全景认知 2026奇点智能技术大会(https://ml-summit.org) AI Agent 架构正从单任务响应模型演进为具备持续感知、推理与行动能力的自主认知体。知识图谱作为结构化世界知识的语义中枢,其与 AI Agent 的深度集成&#xff0…...

快速上手 FakeStoreAPI:5分钟学会使用免费电商数据接口

快速上手 FakeStoreAPI:5分钟学会使用免费电商数据接口 【免费下载链接】fake-store-api FakeStoreAPI is a free online REST API that provides you fake e-commerce JSON data 项目地址: https://gitcode.com/gh_mirrors/fa/fake-store-api FakeStoreAPI …...

如何在iPhone上轻松下载种子文件?iTorrent iOS下载器终极指南

如何在iPhone上轻松下载种子文件?iTorrent iOS下载器终极指南 【免费下载链接】iTorrent Torrent client for iOS 16 项目地址: https://gitcode.com/gh_mirrors/it/iTorrent 还在为iPhone无法下载种子文件而烦恼吗?iTorrent就是你的救星&#xf…...

DamoFD开源模型企业级运维:Prometheus监控指标+Grafana看板配置

DamoFD开源模型企业级运维:Prometheus监控指标Grafana看板配置 在实际生产环境中,部署一个轻量级但高精度的人脸检测模型只是第一步。真正决定它能否长期稳定服务的,是背后一整套可观测性体系——尤其是对GPU资源消耗、推理延迟、请求吞吐、…...

5分钟拯救珍贵视频!untrunc视频修复工具终极指南

5分钟拯救珍贵视频!untrunc视频修复工具终极指南 【免费下载链接】untrunc Restore a truncated mp4/mov. Improved version of ponchio/untrunc 项目地址: https://gitcode.com/gh_mirrors/un/untrunc 您是否曾因相机突然断电、存储卡故障或传输中断而丢失珍…...

2026奇点智能技术大会AIAgent推荐系统全栈拆解(含LLM-RAG-Graph协同推理链路图谱)

第一章:2026奇点智能技术大会:AIAgent推荐系统 2026奇点智能技术大会(https://ml-summit.org) 核心架构演进 本届大会首次公开部署的AIAgent推荐系统,基于多模态意图理解与动态知识图谱协同推理构建。系统摒弃传统静态协同过滤范式&#xf…...

keil---封装核心代码成库

在 Keil 里把核心代码封装成静态库(.lib / .a),是最常用、最有效防抄走的方法。别人只能调用函数,看不到源码。 下面给你最简单、一步一步能照做的教程。 一、整体思路 把你不想给别人看的代码(算法、驱动、TLI/IPA、协…...

FastAPI-React性能优化:Celery异步任务与Redis消息队列

FastAPI-React性能优化:Celery异步任务与Redis消息队列 【免费下载链接】fastapi-react 🚀 Cookiecutter Template for FastAPI React Projects. Using PostgreSQL, SQLAlchemy, and Docker 项目地址: https://gitcode.com/gh_mirrors/fa/fastapi-rea…...

如何为db_tutorial项目添加图数据模型支持:完整指南

如何为db_tutorial项目添加图数据模型支持:完整指南 【免费下载链接】db_tutorial Writing a sqlite clone from scratch in C 项目地址: https://gitcode.com/gh_mirrors/db/db_tutorial db_tutorial是一个用C语言从零实现SQLite克隆的开源项目,…...

新手必看!PyTorch 2.8镜像开箱即用,3步搞定CUDA环境配置

新手必看!PyTorch 2.8镜像开箱即用,3步搞定CUDA环境配置 1. 为什么选择PyTorch 2.8镜像? 深度学习环境配置一直是让新手头疼的问题,特别是CUDA驱动、cuDNN版本与PyTorch的兼容性问题。PyTorch 2.8镜像解决了这个痛点&#xff0c…...

仲景中医大语言模型:当千年中医智慧遇见现代人工智能

仲景中医大语言模型:当千年中医智慧遇见现代人工智能 【免费下载链接】CMLM-ZhongJing 首个中医大语言模型——“仲景”。受古代中医学巨匠张仲景深邃智慧启迪,专为传统中医领域打造的预训练大语言模型。 The first-ever Traditional Chinese Medicine l…...

软件领域驱动设计管理中的领域层

软件领域驱动设计(DDD)中的领域层:业务逻辑的核心枢纽 在软件开发中,领域驱动设计(DDD)通过将复杂业务逻辑结构化,帮助团队更高效地构建可维护的系统。领域层作为DDD的核心,承载了业…...

VCSA 7.0 高效部署实战:从零到生产环境的完整指南

1. 部署前的准备工作 部署VCSA 7.0之前,我们需要做好充分的准备工作。首先得去VMware官网下载最新的VCSA 7.0镜像文件,文件名通常是VMware-VCSA-all-7.0.0-xxxx.iso这样的格式。这里有个小技巧,建议下载时核对下SHA256校验值,确保…...

LFM2.5-1.2B-Thinking-GGUF实战手册:GPU显存占用监控与llama.cpp内存调优

LFM2.5-1.2B-Thinking-GGUF实战手册:GPU显存占用监控与llama.cpp内存调优 1. 模型与平台介绍 LFM2.5-1.2B-Thinking-GGUF是Liquid AI推出的轻量级文本生成模型,专为低资源环境优化设计。该模型采用GGUF格式,配合llama.cpp运行时&#xff0c…...