HoRain云--LangChain 多 Agent
📅 2026/7/14 0:38:16
👁️ 次浏览
当一个任务太复杂单个 Agent 难以胜任时你可以创建多个各司其职的 Agent让它们像团队一样协作。为什么需要多 Agent单个 Agent 的问题system_prompt 太长会导致模型注意力分散工具太多会增加模型选择工具的出错概率不同类型的任务需要不同的专业知识和行为风格多 Agent 的方案每个 Agent 专注于一个领域通过协作完成复杂任务。方式 1子 Agent 作为工具将 Agent 编译成 CompiledStateGraph然后作为一个工具注册给父 Agent实例from dotenv import load_dotenvload_dotenv()from langchain.tools import toolfrom langchain.agents import create_agentfrom langchain.chat_models import init_chat_modelfrom langchain.messages import HumanMessagemodel init_chat_model(deepseek:deepseek-v4-flash, temperature0)# 子 Agent 1天气专家tooldef get_weather(city: str) - str:查询天气data {杭州: 晴25°C, 北京: 多云18°C}return data.get(city, f{city}: 数据暂缺)weather_agent create_agent(modelmodel,tools[get_weather],nameweather_expert, # 名字用于标识和日志system_prompt你是天气专家专门回答天气相关问题。回答要简洁。,)# 子 Agent 2计算专家tooldef calculate(expression: str) - str:计算数学表达式result eval(expression, {__builtins__: {}}, {})return f{expression} {result}math_agent create_agent(modelmodel,tools[calculate],namemath_expert,system_prompt你是数学专家专门进行数学计算。回答要简洁。,)# 父 Agent协调者# 将子 Agent 作为工具注册tooldef ask_weather_expert(question: str) - str:向天气专家咨询天气相关问题。Args:question: 关于天气的问题result weather_agent.invoke({messages: [HumanMessage(contentquestion)]})return result[messages][-1].contenttooldef ask_math_expert(question: str) - str:向数学专家咨询数学计算问题。Args:question: 数学计算问题result math_agent.invoke({messages: [HumanMessage(contentquestion)]})return result[messages][-1].contentcoordinator create_agent(modelmodel,tools[ask_weather_expert, ask_math_expert],system_prompt你是协调助手。根据用户问题选择合适的专家- 天气相关问题 → 使用 ask_weather_expert- 数学计算问题 → 使用 ask_math_expert- 如果同时涉及多个领域依次咨询各个专家,)# 测试复合问题result coordinator.invoke({messages: [HumanMessage(content杭州今天天气怎么样如果温度是 25 度换算成华氏度是多少公式华氏度 摄氏度 × 9/5 32)]})print(result[messages][-1].content)运行结果根据天气专家的查询杭州今天晴天气温25°C。 换算成华氏度25 × 9/5 32 77°F。 所以杭州今天25°C相当于77°F天气晴好。方式 2用 name 参数区分 Agent当你将子 Agent 作为工具嵌入时设置 name 参数有助于追踪消息来源实例# name 参数的作用# 1. 编译后的图中使用该名称# 2. 作为子图节点嵌入父图时使用该名称# 3. 所有 AI 消息被标记为该名称agent create_agent(modelmodel,tools[...],namecustomer_service, # 给 Agent 命名)方式 3Middleware 实现 Agent 路由更复杂的多 Agent 场景可以通过 Middleware 实现动态路由实例from langchain.agents.middleware import before_model# 定义不同专家使用的工具集general_tools [tool_a, tool_b]admin_tools [tool_c, tool_d]before_modeldef route_by_user_role(state, runtime):根据用户角色动态切换可用工具context runtime.contextif context is None:return Noneuser_role context.get(user_role, user)# 不同角色看到不同的工具if user_role admin:available_tools general_tools admin_toolselse:available_tools general_tools# 注意before_model 不能直接修改 tools# 需要配合 wrap_model_call 或 request.override 来实现return None多 Agent 架构模式模式结构适用场景协调者模式一个父 Agent → 多个子 Agent 工具任务类型明确可分类接力模式Agent A 的输出 → Agent B 的输入流水线式处理生成→审核→润色辩论模式多个 Agent 并行输出 → 汇总决策需要多角度分析的问题多 Agent 系统增加了复杂度和 Token 消耗。不要为了多 Agent而多 Agent——先用单个 Agent 良好设计的 system_prompt 和 Middleware 解决问题。只有当确实需要领域隔离或独立上下文时才引入多 Agent。
1. 引言
在AI技术飞速发展的今天,编程方式正在经历一场前所未有的变革。传统的“手动敲代码-编译-调试”循环正在被“自然语言描述-AI生成-人工审核”的新范式所取代。在这场变革中,Cursor 作为一款深度集成AI能力的代码编辑器,凭借其强大的…
📅 2026/7/14 0:37:16
最近好多朋友私信问我,搞自动驾驶或者做LBS服务,到底咋挑数据才不踩雷。说实话,这行水太深了,稍微不注意,钱打水漂不说,模型训练出来全是垃圾。今天我就掏心窝子聊聊,关于_geo数据集选择的那些事儿,全是干货,不整虚的。先说个真事儿。上个月有个做智慧城市的朋友,为了…
📅 2026/7/14 0:37:04
C 面向对象编程 —— 继承"Shape" 基类123456789101112131415class Shape {public:Shape() { // 构造函数cout << "Shape -> Constructor" << endl;}~Shape() { // 析构函数cout << "Shape -> Destructor" &…
📅 2026/7/14 0:36:16
1. 项目概述:从“能跑通”到“跑得稳”的ARIMA实战跃迁你手头有一份时间序列数据,比如某城市过去十年的月度用电量、某电商平台每日订单数、或是某工厂传感器每小时采集的温度读数。你已经照着教程跑通了ARIMA(1,1,0),得到了几条漂亮的预测曲…
📅 2026/7/14 4:56:02
📖标题:DecompRL: Solving Harder Problems by Learning Modular Code Generation
🌐来源:arXiv, 2607.02390v1
🛎️文章简介
🔸研究问题:大语言模型如何在基础策略成功率极低时,以较…
📅 2026/7/14 4:56:01
目录
一、引用的使用
1、const的引用
2.引用和指针的关系
3.inline( 内联函数)
4.nullptr 我们书接上回
一、引用的使用
1 引用的本质是用于引用传参和引用做返回值中减少拷贝提高效率,改变引用对象的同时也改变被引用对象(原对象)&am…
📅 2026/7/14 4:56:01
编号 类型 领域 问题 问题的详细数学分析 参数列表及边界条件及范围及区间 极限及边界条件及规则列表 关联知识 1 物理损伤 云计算存储 硬盘磁头磨损导致读写错误率随时间增加 逐步推理: 1. 假设故障率服从Weibull分布:f(t)=ηβ(ηt)β−1e−(t/η)β,累积…
📅 2026/7/14 4:56:01
文章目录 一、导入依赖二、配置文件 / 声明1. 配置 yaml2. 声明队列3. 声明交换机4. 声明绑定关系5. 配置 JSON 格式传输任意类型 三、生产者代码四、消费者代码五、补充说明 一、导入依赖
创建项目时勾选依赖: 也可以手动导入依赖:
<dependency>…
📅 2026/7/14 4:56:01
本文关键词:_geo数据怎么分析你是不是也遇到过这种情况?后台流量看着挺热闹,UV、PV蹭蹭涨,但就是没转化?钱烧了不少,广告投出去像石沉大海。其实,问题大概率出在你没看懂“人”在哪。很多老板只盯着总流量看,却忽略了最核心的维度——地理位置。不懂_geo数据怎么分析,…
📅 2026/7/14 4:55:54
从“创始人投影”到“真理映射”——大语言模型认知本质的哲学批判与范式重构
摘要
当前全球主流大语言模型(LLMs)在技术指标上持续突破,却在认知本质上陷入了一种根本性的“搞反”状态:它们本应成为人类超越自身认知局限的“传…
📅 2026/7/14 0:00:05
Hadoop 3.2.2 JDK 21 Windows开发环境全流程实战指南对于需要在Windows环境下进行大数据开发的Java/Scala开发者来说,搭建一个本地Hadoop开发环境是入门的第一步。本文将带你从零开始,完成Hadoop 3.2.2与JDK 21的环境搭建,并实现一个完整的M…
📅 2026/7/14 0:00:05
1. 项目概述:为什么你需要Boost库? 如果你用C写过一些项目,尤其是涉及到网络、并发、文件系统或者需要处理一些复杂数据结构时,大概率会听过或者用过Boost库。它不是C标准库的一部分,但它在C社区的地位,几…
📅 2026/7/14 0:00:05
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/13 5:30:27
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/13 6:21:22
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/13 7:10:30
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/13 3:29:47
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/13 19:47:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/13 9:07:16