ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

AI大模型小白入门:Multi-Agent架构实战(附油菜审定申报案例)

AI大模型小白入门:Multi-Agent架构实战(附油菜审定申报案例) 本文深入浅出地解析了AI Agent的六大主流架构中的Multi-Agent架构强调“团队协作”相较于“单打独斗”的优势。文章以油菜新品种审定申报材料准备为典型场景详细阐述了如何通过构建包含Supervisor主管和多个专职Worker的协同系统实现高效的信息整合与任务分解。每个Worker专注于单一领域如DUS性状档案、测试结果、申报材料清单由Supervisor统一调度最终生成完整申报材料。文章还提供了基于LangChain的代码演示并分析了该架构的优缺点对于想了解和学习大模型应用开发的程序员和小白具有实践指导意义。什么是 Multi-Agent核心思想一句话多个 Agent 各司其职由一个 Supervisor 主管负责拆解任务、派发、回收结果、汇总。一个最小运行单元用户任务 ↓ Supervisor 主管:拆解任务 · 派发 Worker ↓ 专职 Worker A / B / C各挂一个领域工具 ↓ 结果回传 Supervisor ↓ Supervisor:决定继续派发 / 收敛汇总 ↓ 汇总输出Multi-Agent 不是简单的多 Agent 组合关键在于角色化分工与统一调度角色化分工每个 Worker 有专属的提示词、工具、记忆为单一职责优化效果上限远高于单个通用 Agent。统一调度Supervisor 决定“该谁做 / 接下来做什么 / 何时收尾”让多角色不互相推诿、也不无序循环。过程可观测派发记录与中间产物即审计线索便于复盘。示例背景油菜新品种审定申报材料准备油菜新品种要想拿到审定编号需要向品种审定委员会提交一份完整、规范的申报材料包典型包括品种特征特性描述亲本来源、生育期、株高、抗病性等 DUS 性状档案。DUS 测试报告核查特异性 Distinctness、一致性 Uniformity、稳定性 Stability 三项是否达标。区域试验与生产试验总结一般两年区试 一年生试。品质检测报告芥酸、硫苷、含油量等是否达双低标准。栽培技术要点与适宜推广区域。这是一份多角色协作才能做好的工作田间调查员需要从品种档案库拉出 DUS 性状回答「品种长什么样、怎么长的」。DUS 审查员需要核查三项测试是否达标回答「品种够不够资格」。材料清单员需要给出按最新审定规则的申报材料清单与起草要点回答「该准备哪些材料、怎么写」。如果用一个全能 Agent做要么提示词塞得太满、工具冲突严重要么某个角色做得不够深入。Multi-Agent 的做法是对内分三个专职 Worker每个只关心自己的领域对外由 Supervisor 统一调度按需派发、回收、汇总最终交付一份完整的申报材料草稿。架构与运行机制运行机制三要素Supervisor 主管唯一拥有调度权的 Agent基于当前任务与已完成的派发记录决定下一步派给谁、按什么指令做、何时结束。专职 Worker每个 Worker 只做自己职责范围内的工作可挂专属工具可以独立被替换或迭代。派发—回收闭环Supervisor 派发任务 → Worker 执行 → 结果回传 Supervisor → Supervisor 根据结果再次决策继续派发 / 补充 / 收尾多轮循环直至信息足够并汇总。关键设计点Supervisor 只调度不亲自答题。这样不会和 Worker 抢活也能让 Worker 持续优化迭代而 Supervisor 不动。派发指令要明确Supervisor 给 Worker 的指令必须包含所需参数如品种名、要查的字段否则 Worker 容易因信息不足反复追问。结果回传要结构化Worker 用response_format返回 Pydantic 结构化结果含结论 关键字段Supervisor 与汇总员直接基于字段复用无需解析自然语言。轮次上限是硬安全网Supervisor 自己决定何时结束但若其陷入循环或漏派需要max_rounds上限兜底强制收尾走汇总。可选汇总员多轮派发结束后可单独由一个「汇总员」角色把派发记录与 Worker 输出合成最终报告让 Supervisor 保持调度职责单一。基于 LangChain 的代码演示定义三个领域工具每个 Worker 各挂一个工具分别负责查询品种特征特性档案、DUS 测试结果、最新审定申报材料清单。python from langchain.tools import tool from pydantic import BaseModel, Field # 定义工具 # 模拟品种特征特性档案DUS 性状 VARIETY_PROFILE { 秦油2026: { 亲本来源: 陕油28 × 华油杂62R, 生育期d: 232, 株高cm: 168, 一次分枝数: 9, 单株角果数: 320, 每角粒数: 22, 抗菌核病: 高抗, 抗病毒病: 中抗, 抗倒性: 强, }, } # 模拟 DUS 测试结果 DUS_TEST { 秦油2026: { 特异性(D): 通过与近似品种差异显著, 一致性(U): 通过变异系数 2.8%, 稳定性(S): 通过两年繁殖性状稳定, }, } # 模拟最新审定申报材料清单 APPROVAL_RULES { 申报书: 《非主要农作物品种登记申请表》或省级审定申请书, 附件清单: [ 品种选育报告, 区域试验与生产试验总结2 年区试 1 年生试, DUS 测试报告, 品质检测报告双低指标, 抗病性鉴定报告, 特征特性描述表, 栽培技术要点与适宜区域说明, 知识产权与育种者承诺书, ], 栽培要点: [ 长江中下游直播 9 月下旬至 10 月中旬,移栽提前 7–10 天。, 直播每亩留苗 2.0–2.5 万株。, 基肥每亩有机肥 1000–1500 kg 复合肥 30–40 kg。, 蕾薹期与初花期注意补硼防花而不实。, ], } class VarietyInput(BaseModel): variety_name: str Field(description品种名称,如 秦油2026) tool( name_or_callablequery_variety_profile, description查询品种特征特性档案DUS 性状, args_schemaVarietyInput ) def query_variety_profile(variety_name: str) - str: if variety_name in VARIETY_PROFILE: p VARIETY_PROFILE[variety_name] return f品种 {variety_name} 特征特性档案:/n /n.join( f- {k}: {v} for k, v in p.items() ) return f未找到品种 {variety_name} 的档案。 tool( name_or_callablecheck_dus_test, description核查某品种的 DUS 测试结果特异性/一致性/稳定性三项, args_schemaVarietyInput ) def check_dus_test(variety_name: str) - str: if variety_name in DUS_TEST: d DUS_TEST[variety_name] lines [f品种 {variety_name} DUS 测试结果:] for k, v in d.items(): lines.append(f- {k}: {v}) all_pass all(通过 in v for v in d.values()) lines.append(f/n综合:{三项全部达标,可申请审定 if all_pass else 存在未达标项,需复核}) return /n.join(lines) return f未找到品种 {variety_name} 的 DUS 测试结果。 tool( name_or_callablequery_approval_rules, description查询当前品种审定申报材料清单与栽培要点 ) def query_approval_rules() - str: rules APPROVAL_RULES lines [品种审定申报材料清单:, f- 申报书:{rules[申报书]}, - 附件清单:] for item in rules[附件清单]: lines.append(f · {item}) lines.append(- 栽培要点:) for item in rules[栽培要点]: lines.append(f · {item}) return /n.join(lines)定义三个专职 Worker Agent每个 Worker 只挂一个工具system_prompt 只关心自己职责更重要的一点每个 Worker 都用response_format返回结构化结果而不是纯文本——这样 Supervisor 与汇总员都能基于字段直接做后续操作不必再解析自然语言。python from langchain.agents import create_agent from langchain_ollama import ChatOllama from langchain.agents.structured_output import ToolStrategy llm ChatOllama(modelqwen3.5:9b, temperature0) class ProfileResult(BaseModel): 田间调查员的结构化产出。 variety_name: str Field(description品种名称) parents: str Field(description亲本来源) key_traits: dict Field(description关键 DUS 性状,含生育期/株高/分枝数/角果数/每角粒数等) disease_resistance: str Field(description抗病性结论,含抗菌核病/抗病毒病/抗倒性) summary: str Field(description一句话特征特性摘要) class DusResult(BaseModel): DUS 审查员的结构化产出。 distinctness: bool Field(description特异性(D)是否通过) uniformity: bool Field(description一致性(U)是否通过) stability: bool Field(description稳定性(S)是否通过) all_passed: bool Field(description三项是否全部达标) conclusion: str Field(description是否可申请审定的结论) class DocResult(BaseModel): 材料清单员的结构化产出。 application_form: str Field(description申报书名称) attachments: list Field(description附件清单,字符串数组) cultivation_points: list Field(description栽培要点列表,字符串数组) profile_worker create_agent( modelllm, tools[query_variety_profile], system_prompt( 你是品种特征特性员。接到 Supervisor 的指令后,调用 query_variety_profile 查询品种档案, 把关键 DUS 性状整理成结构化结果返回。 ), response_formatToolStrategy(ProfileResult), ) dus_worker create_agent( modelllm, tools[check_dus_test], system_prompt( 你是 DUS 审查员。接到 Supervisor 的指令后,调用 check_dus_test 核查三项 DUS 测试结果, 逐项给出是否通过以及是否可申请审定的结论,以结构化结果返回。 ), response_formatToolStrategy(DusResult), ) doc_worker create_agent( modelllm, tools[query_approval_rules], system_prompt( 你是材料清单员。接到 Supervisor 的指令后,调用 query_approval_rules 拉取最新申报材料清单与栽培要点, 按申报书 / 附件清单 / 栽培要点 三段整理成结构化结果返回。 ), response_formatToolStrategy(DocResult), )定义 Supervisor Agent 和 Reporter AgentSupervisor 用response_format Pydantic 模型做结构化输出避免手工解析 LLM 输出python from typing import Literal class DispatchDecision(BaseModel): Supervisor 的单步调度决策。 next_worker: Literal[田间调查员, DUS审查员, 材料清单员, FINISH] Field( description下一步交给哪个 Worker;信息已足够汇总时填 FINISH ) instruction: str Field( description交给该 Worker 的具体任务描述,必须包含所需参数(如品种名、要看哪些字段) ) reason: str Field(description一句话说明为什么选它 / 为什么可以收尾) SUPERVISOR_PROMPT ( 你是品种审定申报任务的 Supervisor你手下有三个专职 Worker/n/n * 田间调查员(查品种 DUS 性状)/n * DUS审查员(核查三项 DUS 测试是否达标)/n * 材料清单员(按最新审定规则给出申报材料清单与栽培要点)/n/n 你的职责只有两件1) 把总任务拆成派发指令分给合适的 Worker2) 等信息足够后填 FINISH 结束调度。 不要替 Worker 回答他们的专业问题;不要重复派发已经做完的步骤; 各 Worker 回传给你的都是结构化结果(含结论与关键字段),请基于这些字段判断信息是否足够; 当三个 Worker 都把结果回传且足够支撑一份完整申报材料时,必须填 FINISH。 ) supervisor create_agent( modelllm, tools[], system_promptSUPERVISOR_PROMPT, response_formatToolStrategy(DispatchDecision), ) reporter create_agent( modelllm, tools[], system_prompt( 你是申报材料汇总员。根据 Supervisor 给你的「总任务」与派发记录,把每个 Worker 的产出整理成 一份结构化的审定申报材料草稿,分『特征特性摘要』『DUS 核查结论』『申报材料清单与栽培要点』三部分输出。 ), ) WORKERS { 田间调查员: profile_worker, DUS审查员: dus_worker, 材料清单员: doc_worker, }高度-执行-汇总python from dataclasses import dataclass dataclass class WorkerRun: agent_name: str instruction: str output: str def multi_agent_run(question, max_rounds5) - str: runs: list[WorkerRun] [] for i in range(1, max_rounds 1): prompt ( f用户提问{question}/n/n 已派发任务与结果/n/n (/n.join([f* {run.agent_name}: {run.instruction} - {run.output} for run in runs]) or 暂无) 请基于上述结构化产出决定是否还需派发或填 FINISH 结束调度。 ) resp supervisor.invoke({messages: [{role: user, content: prompt}]}) dispatch_decision: DispatchDecision resp[structured_response] if dispatch_decision.next_worker FINISH: break if dispatch_decision.next_worker not in WORKERS: break worker WORKERS[dispatch_decision.next_worker] worker_prompt ( f用户提问{question}/n/n fSupervisor 给你的任务{dispatch_decision.instruction} ) worker_resp worker.invoke( {messages: [{role: user, content: worker_prompt}]} ) result worker_resp[structured_response] runs.append( WorkerRun( agent_namedispatch_decision.next_worker, instructiondispatch_decision.instruction, outputresult.model_dump_json(), ) ) print(( f 第 {i} 轮结果 /n fWorker{dispatch_decision.next_worker}/n f任务{dispatch_decision.instruction}/n f理由{dispatch_decision.reason}/n f产出{result.model_dump_json()} )) summary_prompt ( f用户提问{question}/n/n 各 Worker 的产出如下/n/n (/n.join([f* {run.agent_name}: {run.instruction} - {run.output} for run in runs]) or 未派发任何 Worker) final reporter.invoke({messages: [{role: user, content: summary_prompt}]}) return final[messages][-1].content运行python if __name__ __main__: question ( 为油菜新品种 秦油2026 准备一份品种审定申报材料草稿: 核对特征特性档案、确认 DUS 测试是否达标、 理清申报材料清单并给出栽培要点。 ) print(multi_agent_run(question))执行输出text 第 1 轮结果 Worker田间调查员 任务请核查油菜新品种秦油2026的特征特性档案包括品种名称、特征特性描述、DUS测试数据等关键字段 理由首先需要核对特征特性档案这是申报材料的基础信息 产出{variety_name:秦油2026,parents:陕油28 × 华油杂62R,key_traits:{一次分枝数:9个,单株角果数:320个,株高:168cm,每角粒数:22粒,生育期:232天},disease_resistance:抗菌核病: 高抗; 抗病毒病: 中抗; 抗倒性: 强,summary:秦油2026为陕油28与华油杂62R杂交选育的油菜新品种生育期232天株高168cm一次分枝9个单株角果320个每角粒22粒抗菌核病高抗、抗病毒病中抗、抗倒性强} 第 2 轮结果 WorkerDUS审查员 任务请核查油菜新品种秦油2026的三项DUS测试特异性、一致性、稳定性是否达标需包含品种名称、DUS测试结果、达标结论等关键字段 理由田间调查员已完成特征特性档案核查接下来需要确认DUS测试是否达标 产出{distinctness:true,uniformity:true,stability:true,all_passed:true,conclusion:可申请审定} 第 3 轮结果 Worker材料清单员 任务请为油菜新品种秦油2026整理申报材料清单并给出栽培要点需包含品种名称、申报材料清单按最新审定规则、栽培要点等关键字段 理由田间调查员和DUS审查员已完成工作但材料清单员尚未参与需要获取申报材料清单与栽培要点才能完成完整申报材料准备 产出{application_form:《非主要农作物品种登记申请表》或省级审定申请书,attachments:[品种选育报告,区域试验与生产试验总结2年区试1年生试,DUS测试报告,品质检测报告双低指标,抗病性鉴定报告,特征特性描述表,栽培技术要点与适宜区域说明,知识产权与育种者承诺书],cultivation_points:[长江中下游直播9月下旬至10月中旬,移栽提前7–10天。,直播每亩留苗2.0–2.5万株。,基肥每亩有机肥1000–1500 kg 复合肥30–40 kg。,蕾薹期与初花期注意补硼防花而不实。]} # 油菜新品种 秦油 2026 品种审定申报材料草稿 ## **一、特征特性摘要** * 品种名称秦油 2026 * 亲本组合陕油 28 × 华油杂 62R * 主要农艺性状 * 生育期232 天中熟 * 株高168cm * 一次分枝数9 个 * 单株角果数320 个 * 每角粒数22 粒 * 抗病性表现 * 菌核病高抗 * 病毒病中抗 * 抗倒性强 * 品种简介秦油 2026 为陕油 28 与华油杂 62R 杂交选育的油菜新品种具有生育期适中、株型紧凑、抗病性强等特点。 ## **二、DUS 核查结论** * 特异性Distinctness达标 (True) * 一致性Uniformity达标 (True) * 稳定性Stability达标 (True) * 综合判定三项测试全部通过符合品种审定要求。 * 审查结论可申请审定。 ## **三、申报材料清单与栽培要点** ### 1. 申报材料清单按最新审定规则 * 主表《非主要农作物品种登记申请表》或省级审定申请书 * 附件材料 1. 品种选育报告 2. 区域试验与生产试验总结含 2 年区试 1 年生试 3. DUS测试报告 4. 品质检测报告双低指标 5. 抗病性鉴定报告 6. 特征特性描述表 7. 栽培技术要点与适宜区域说明 8. 知识产权与育种者承诺书 ### 2. 栽培技术要点 * 播种时间长江中下游地区直播宜在 9 月下旬至 10 月中旬若采用移栽方式需提前 7–10 天。 * 种植密度直播每亩留苗 2.0–2.5 万株。 * 施肥管理基肥每亩施用有机肥 1000–1500 kg 复合肥 30–40 kg。 * 关键农事蕾薹期与初花期注意补硼以防花而不实。所有的 Agent 都是结构化的返回Supervisor 根据提问和上下文依次调用了 Worker并最终将结果汇总由 Reporter Agent 生成申报材料草稿。优缺点优点角色化分工每个 Worker 按单一职责定制提示词与工具深度更足。可并行与复用多个 Worker 可并行推进成熟 Worker 还能跨任务复用。能力可扩展新增能力只需加一个 WorkerSupervisor 调度逻辑不变。过程可观测派发记录与中间产物即审计线索便于定位问题环节。缺点协调成本高每轮派发都要过 Supervisortoken 与延迟成倍上升。上下文共享难Worker 之间默认隔离结果冲突与信息孤岛需额外机制。主管是单点Supervisor 拆错或漏派整个团队跟着空转。收敛难保证多轮循环可能来回打转需要轮次上限与终止条件。最后2026 年一晃已经过半AI 大模型的热潮不仅没有降温反而持续升温金融行业用大模型做风控、医疗依靠 AI 解析影像电商、制造、教育各行各业都在把 AI 融入日常业务。曾经热闹的 “百模大战”早就告别单纯比拼模型参数正式进入落地应用时代。现在企业疯狂紧缺一类人才懂业务、懂 AI、能做出可上线项目的大模型开发工程师岗位缺口大薪资待遇十分可观。风口再好不如手握高薪 offer 实在。行情火热普通人、程序员该怎样从零入门大模型抓住这波机会今天整理好【2026 最新版】AI 大模型全套免费学习资源覆盖零基础入门、项目实战、理论知识、大厂面试从基础一路进阶。所有资料分类归档没有多余杂料无套路免费分享给想要入局 AI 赛道的程序员与零基础小白扫码免费领取全部内容1、大模型系统化完整学习路线2、大模型经典书籍文档3、AI 大模型最新行业研究报告4、企业级实战项目 完整配套源码5、大厂大模型面试真题汇总6、这些资料真的有用吗这份资料由我和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
返回列表