AI智能体入门系列002:规划模块深析,大模型拆分复杂任务实战

知识 2026-04-06 16:10:40 8848

大家好,我是门系模型工程师阿辰!上一篇(系列001)咱们搭建了AI智能体的列规基础框架,明确了感知、划模规划、块深执行、拆分反馈四大核心模块。复杂后台有不少朋友留言说,任务最感兴趣的实战是“如何让智能体自主拆分复杂任务”——这正是今天要重点拆解的“规划模块”。

还记得上一篇的体入例子吗?简单任务“查天气+给穿衣建议”,我们用固定逻辑拆分了两步。门系模型但面对“帮我写一篇关于AI智能体的列规周报,并发送给领导邮箱”这种多环节任务,划模固定逻辑就完全不够用了。块深这时候,拆分大模型就能发挥核心作用,让规划模块具备“灵活思考”的能力。

今天这篇,我们就从“规划模块的核心原理”讲起,再用Python结合OpenAI API(也提供国内平替方案),实现复杂任务的自动拆分。全程带注释,新手也能跟着做,话不多说,直接上干货!

一、为什么规划模块是智能体的“核心大脑”?

很多人觉得AI智能体的关键是“能调用工具”,但其实规划模块才是区分“智能”与“机械”的核心——它决定了智能体“会不会做事、能不能做好事”。

举个对比:普通脚本只能按固定步骤执行(比如“先查天气再给建议”),而带大模型的规划模块,面对“下周三去广州出差,帮我安排行程”这样的需求,能自主拆分成:

确认下周三的具体日期和用户的出发城市;查询出发城市到广州的高铁/航班(优先选上午的车次);根据出差天数预订靠近用户办事地点的酒店;查询广州下周三的天气,给出穿衣建议;将行程整理成表格,发送到用户邮箱。

更重要的是,它还能处理突发情况:比如查不到合适的高铁,会自动调整为航班;预订酒店时发现满房,会推荐周边同档次酒店。这就是规划模块的核心价值——动态拆解、灵活调整

二、规划模块的核心逻辑:大模型如何“思考”任务?

用大模型实现规划模块,核心思路不是写死步骤,而是给大模型“下达清晰的指令”,让它根据用户需求输出任务拆分步骤。这个指令我们称之为“Prompt”,设计好Prompt,就能让规划模块更“听话”。

一个合格的规划Prompt需要包含3个关键信息:

任务目标:明确用户的核心需求(比如“写AI智能体周报并发送给领导”);约束条件:明确任务的限制(比如“周报控制在800字内,邮箱主题注明‘AI智能体周报-XX周’”);输出格式:要求大模型按固定格式输出步骤(比如“序号+步骤描述+所需工具/能力”),方便后续执行模块调用。

理解了核心逻辑,下面我们直接上代码——用OpenAI的GPT-3.5-turbo实现规划模块,同时提供国内通义千问的平替方案。

三、核心代码实战:大模型驱动的规划模块

本次代码基于上一篇的框架,重点改造“规划模块”,新增大模型调用逻辑。先执行依赖安装:pip install openai python-dotenv(openai用于调用API,dotenv用于管理密钥)。

第一步:准备密钥(关键步骤)

1. 若使用OpenAI API:前往OpenAI平台创建API Key,注意保存好,不要泄露;

2. 若使用国内平替(通义千问):前往阿里云通义千问平台创建API Key,后续代码只需修改调用逻辑(文末附平替代码)。

创建一个.env文件,将密钥写入:OPENAI_API_KEY=你的API Key

第二步:完整代码(含规划模块改造)

#!/usr/bin/env python3 # -*- coding: utf-8 -*- """ AI智能体规划模块实战(《AI智能体从入门到精通》系列002) 核心功能:用GPT-3.5-turbo拆分"写周报+发邮箱"复杂任务 架构:延续四大模块,重点改造规划模块 """ import os import requests from openai import OpenAI from dotenv import load_dotenv # 用于加载环境变量 # 加载.env文件中的API Key load_dotenv() client = OpenAI(api_key=os.getenv("OPENAI_API_KEY")) # 1. 感知模块:沿用基础逻辑,增强指令解析能力 def perception_module(user_command, extra_info=None): """ 功能:收集用户需求和额外信息(如周报周期、领导邮箱) 参数:user_command-用户指令,extra_info-额外信息(字典格式) 返回:整理后的任务信息 """ # 补充必要信息(实际场景可通过对话追问用户) default_info = { "report_cycle": "第1周", # 周报周期 "leader_email": "leader@company.com", # 领导邮箱 "report_word_limit": 800 # 字数限制 } if extra_info: default_info.update(extra_info) # 覆盖用户提供的额外信息 task_info = { "target": user_command, "extra_info": default_info, "status": "待执行" } print(f"【感知模块】整理任务信息:{ task_info}") return task_info # 2. 规划模块:核心改造!用大模型拆分复杂任务 def planning_module(task_info): """ 功能:调用GPT-3.5-turbo拆分复杂任务,输出可执行步骤 参数:task_info-感知模块传递的任务信息 返回:结构化的任务步骤列表 """ # 设计Prompt:明确任务、约束、输出格式 prompt = f""" 请你作为AI智能体的规划师,拆分以下任务: 任务目标:{ task_info[target]} 约束条件: 1. 周报字数控制在{ task_info[extra_info][report_word_limit]}字内,涵盖"本周进展、核心问题、下周计划"三部分; 2. 邮箱主题格式为"AI智能体周报-{ task_info[extra_info][report_cycle]}"; 3. 步骤需可执行,明确每步所需工具/能力。 输出格式(严格按此格式输出,不要额外内容): [ { { "step": 序号, "action": 具体操作(如"write_report"), "desc": 步骤描述, "tool_needed": 所需工具/能力(如"大模型生成文本、邮箱客户端") }}, ... ] """ try: # 调用GPT-3.5-turbo生成步骤 response = client.chat.completions.create( model="gpt-3.5-turbo", messages=[{ "role": "user", "content": prompt}] ) # 解析返回结果(将字符串转为列表) steps = eval(response.choices[0].message.content.strip()) print(f"【规划模块】大模型拆分任务步骤:{ steps}") return steps except Exception as e: print(f"【规划模块】拆分任务失败:{ str(e)}") return None # 3. 执行模块:增强工具调用能力(模拟写周报、发邮箱) def execution_module(steps, task_info): """ 功能:执行规划步骤,模拟调用大模型写周报、调用邮箱工具发邮件 参数:steps-规划步骤,task_info-任务信息 返回:执行结果 """ results = [] report_content = "" # 存储生成的周报内容 for step in steps: if step["action"] == "write_report": # 模拟调用大模型生成周报(实际可直接调用OpenAI API生成) report_content = f""" AI智能体周报-{ task_info[extra_info][report_cycle]} 一、本周进展 1. 搭建了AI智能体基础框架,实现感知、规划、执行、反馈四大模块; 2. 完成规划模块改造,接入GPT-3.5-turbo实现复杂任务拆分。 二、核心问题 1. 大模型API调用存在延迟,需优化超时处理; 2. 执行模块对不同工具的适配性不足。 三、下周计划 1. 优化规划模块的Prompt,提升步骤拆分准确性; 2. 扩展执行模块,支持更多工具调用(如文档编辑、浏览器)。 """.strip() # 截取到规定字数内 report_content = report_content[:task_info[extra_info][report_word_limit]] results.append({ "step": step["step"], "result": f"周报生成完成,内容:{ report_content}", "status": "success" }) print(f"【执行模块】步骤{ step[step]}完成:生成周报") elif step["action"] == "send_email": # 模拟发送邮箱(实际可使用smtplib库实现) email_info = { "to": task_info[extra_info][leader_email], "subject": f"AI智能体周报-{ task_info[extra_info][report_cycle]}", "content": report_content } results.append({ "step": step["step"], "result": f"邮箱发送成功,信息:{ email_info}", "status": "success" }) print(f"【执行模块】步骤{ step[step]}完成:发送邮箱") else: results.append({ "step": step["step"], "result": "暂不支持该操作", "status": "failed" }) print(f"【执行模块】步骤{ step[step]}失败:暂不支持该操作") return results # 4. 反馈模块:增强结果验证(检查周报和邮箱是否符合要求) def feedback_module(task_info, results): """ 功能:验证任务结果是否符合约束条件 参数:task_info-任务信息,results-执行结果 返回:最终反馈 """ # 检查所有步骤是否成功 all_success = all([r["status"] == "success" for r in results]) if not all_success: return { "task_status": "失败", "message": "部分步骤执行失败,详情见执行结果" } # 检查周报和邮箱是否符合要求 report_ok = "周报生成完成" in results[0]["result"] email_ok = "邮箱发送成功" in results[1]["result"] if report_ok and email_ok: return { "task_status": "完成", "final_result": "周报已生成并发送给领导", "detail": { "report_cycle": task_info[extra_info][report_cycle], "leader_email": task_info[extra_info][leader_email] } } else: return { "task_status": "失败", "message": "周报或邮箱不符合要求" } # 主函数:串联四大模块 def ai_agent_with_planning(user_command, extra_info=None): """ 功能:带增强规划模块的AI智能体主入口 参数:user_command-用户指令,extra_info-额外信息 返回:最终结果 """ # 1. 感知:收集信息 task_info = perception_module(user_command, extra_info) # 2. 规划:大模型拆分步骤 steps = planning_module(task_info) if not steps: return "任务规划失败" # 3. 执行:完成步骤 results = execution_module(steps, task_info) # 4. 反馈:验证结果 final_feedback = feedback_module(task_info, results) print(f"\n【智能体最终反馈】:{ final_feedback}") return final_feedback # 测试智能体 if __name__ == "__main__": # 用户复杂指令:写AI智能体周报并发送给领导 user_input = "帮我写一篇AI智能体相关的周报,并发给领导" # 额外信息(实际场景可通过对话追问用户) extra_info = { "report_cycle": "2026年第1周", "leader_email": "leader@techcompany.com", "report_word_limit": 600 } print("="*60) print(f"用户输入:{ user_input}") print(f"补充信息:{ extra_info}") print("="*60) # 运行智能体 ai_agent_with_planning(user_input, extra_info)

四、关键说明&国内平替方案

1. 代码核心要点

(1)Prompt设计是关键:本次Prompt明确了任务、约束和输出格式,避免大模型输出杂乱内容。后续我们会专门讲Prompt优化技巧;

(2)环境变量管理:用python-dotenv加载API Key,避免直接写在代码里导致泄露;

(3)模拟工具调用:实际项目中,“写周报”可直接调用大模型API生成,“发邮箱”可使用Python的smtplib库连接邮箱服务器实现真实发送。

2. 国内通义千问平替代码(替换规划模块)

若无法使用OpenAI API,可改用阿里云通义千问,先安装依赖:pip install dashscope,再替换规划模块代码:

import dashscope # 替换后的规划模块 def planning_module(task_info): prompt = 原有Prompt内容(不变) try: response = dashscope.Generation.call( model=qwen-turbo, messages=[{ "role": "user", "content": prompt}], result_format=text ) steps = eval(response.output.choices[0].message.content.strip()) print(f"【规划模块】通义千问拆分任务步骤:{ steps}") return steps except Exception as e: print(f"【规划模块】拆分失败:{ str(e)}") return None

五、下一篇预告&互动话题

下一篇(系列003)我们将聚焦“执行模块”,讲解如何让智能体自主调用真实工具——比如自动打开浏览器查资料、操作Excel整理数据,彻底摆脱“模拟执行”的局限。

互动话题:你在工作中最头疼的“多步骤任务”是什么?比如“整理月度销售数据并生成图表”“批量处理邮件附件”?评论区留言,点赞最高的任务,我们会在后续文章中用智能体实现自动化!

记得关注我,上一篇没看的朋友可以翻我主页看系列001,循序渐进掌握AI智能体开发。咱们下一篇见~

本文地址:https://www.45854.cn/news/70c499925.html
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

热门标签

全站热门

【官方认证教程】智享AI直播三代购买与部署指南:识别盗版陷阱+多设备安装详解+极速开播实操,新手也能零失误启动

AI换脸教程哪里找?这份零基础入门指南手把手教你

【官方认证教程】智享AI直播三代购买与部署指南:识别盗版陷阱+多设备安装详解+极速开播实操,新手也能零失误启动

全网独家干货!智享 AI 直播三代前沿应用版正版官网下载入口,手机电脑安装教程逐步骤 + 新手快速上手技巧,安全 AI 直播工具必藏!

用AI做副业赚钱的入门路径,从这几个方向入手最易变现

警惕“零基础”学AI骗局:一看就懂的防坑指南

3 步快速出片的 AI 角色动画流程

用友网络2026年1月12日涨停分析:BIP/AI业务+云服务+海外业务

友情链接

桂ICP备2025077765号