【干货收藏】大模型智能体实战:从任务决策到ReAct Agent执行的完整开发指南
本文详细展示了一个AI辅助开发助手的完整实现,包括任务决策系统(自动识别不同类型任务)、计划生成(复杂任务拆分)、ReAct Agent执行(基于"思考-行动-观察"循环)以及文件操作、Git集成等工具能力。通过这一系统,大模型从"回答问题"升级为能够"自主规划"和"执行任务"的智能体,显著提升开发效率。
前言
本期我们将动手实现一个完整的模型应用流程,涵盖从任务决策、计划生成到ReAct Agent执行的每一个环节。
通过这个示例,我们能够更直观地理解如何让大模型完成:
- 任务判断:明确需要做什么
- 规划步骤:规划具体的执行步骤
- 执行与迭代:基于“思考-行动-观察”循环(ReAct模式)完成任务**
一、业务介绍
实现一个开发助手,能够根据用户输入的需求进行自动决策,完成“代码生成”、“文件保存”、“版本提交”、“功能迭代”、“测试”、“知识问答”等流程,整体业务流程如下:

最终效果展示
Exp1:生成一个登录页

Exp2:生成一个使用React开发的OA系统

Exp3:CRM系统报表

二、设计方案
系统根据用户的需求,先进行任务决策(Task Decision)判断属于哪种任务类型,再走不同的业务逻辑。
1、简单开发任务类型
使用场景:单个页面、单个UI组件或某个独立功能块的生成,结构明确、上下文简单,适合直接由大模型一次性输出完成。
Exp1:生成一个登录页
Exp2:点击登录页面的注册,需要弹出注册页面
实现流程:
读取原有代码结构 → 调用读取文件工具 -> 生成新页面 → 调用写入文件工具 -> 提交 Git 版本 → 用户确认测试 → 测试 → 完成
2、复杂开发任务类型
使用场景:生成完整业务系统、多页面联动开发、复杂重构任务,这类任务往往无法通过一次性生成解决,需要大模型进行深层的分析、规划、分步执行。
Exp1:使用React+vite生成一个OA系统前端页面,使用Python+FastAPI生成后端接口并对接前端页面
Exp2:生成一个科技类官网
实现流程:
读取原有代码结构 → 规划开发计划 → 用户确认计划→ 逐步执行 → 调用写入文件工具 → 提交 Git 版本 → 用户确认测试 → 测试 → 完成
3、技术解答任务类型
使用场景:适用于用户提出技术问题、分析现有代码、错误修复等方面的解答,这类任务不需要生成完整代码,而是更偏向技术咨询、知识讲解或问题诊断。
Exp1:帮我分析这个项目的整体架构
Exp2:如何在python中开启异步?
实现流程:
自动判断是否读取本地项目信息 → 解答相关问题
可以看到,不同的任务类型对应不同的流程,其核心在于让大模型准确识别任务类型并制定最适合的执行策略。
三、核心技术实现
1、自动识别任务类型
根据用户的需求判断任务的类别,利用大模型对自然语言的理解能力,通过Prompt设计,实现对用户输入需求的任务分类。
router_prompt = ChatPromptTemplate.from_messages([
("system", """
你是一个智能任务路由器,负责分析用户输入并分类到合适的任务类型。
请根据以下规则进行精确分类:
1. **简单开发任务** → 返回 "dev_simple"
- 单个页面/组件(登录页、注册页、用户列表等)
- 单个功能模块(搜索框、导航栏、表单等)
- 简单的工具函数或配置文件
- 单一文件的代码实现
2. **复杂开发任务** → 返回 "dev_complex"
- 完整系统(OA系统、电商平台、管理系统等)
- 多模块项目(用户管理+权限+报表等)
- 需要多个页面协同的功能
- 涉及数据库设计、架构设计的项目
3. **Bug修复** → 返回 "bug"
- 修复错误、调试问题、性能优化
- 代码重构、错误排查
- 功能异常修复
4. **问题解答** → 返回 "qa"
- 技术咨询、使用指导、概念解释
- 询问如何实现某个功能
- 学习相关的问题
要求:只返回分类结果(dev_simple/dev_complex/bug/qa),不要任何额外解释或标点符号。
"""),
("human", "{input}")
])
核心能力
- 输入:用户需求
- 输出:明确任务类型
核心在于让大模型具备决策的能力,而不仅仅用于生成内容。
Exp1:

Exp2:


2、简单任务处理逻辑
def _handle_simple_development(self, task):
"""处理简单开发任务"""
print("\n🚀 开始简单开发模式(智能分析+直接生成)...")
# 先扫描项目信息
print("🔍 正在扫描现有项目结构...")
project_context = UIHelpers.scan_project_context(self.root)
step = {
"title": "智能开发",
"detail": f"基于现有项目结构分析需求并生成代码: {task.content}"
}
print("⚙️ 正在分析需求并生成代码...")
result = self.executor.execute_step(task.content, step, project_context)
print("\n🛠️ 开发完成!")
print("📄 执行结果:")
print("-" * 40)
print(result)
print("-" * 40)
output_dir = self.context.get_output_directory()
print(f"\n📁 生成的文件保存在: {output_dir}/ 目录")
# 询问用户是否启动项目
launch_confirm = input("\n❓ 是否启动生成的项目进行测试?(y/n): ").strip().lower()
if launch_confirm in ['y', 'yes', '是']:
self._launch_project()
对于生成单个页面或组件的任务,无须生成详细的开发计划,可以直接进行代码生成,从而减少不必要的决策环节,加快任务执行速度。
Exp:

3、复杂任务生成计划(Planning)
# 构建包含项目上下文的提示
context_section = ""
if project_context:
context_section = """
**当前项目分析结果:**
""" + project_context + """
**重要指导:**
- 基于上述项目分析结果制定计划
- 考虑现有技术栈和项目结构
- 如果是在现有系统基础上扩展,要考虑集成和兼容性
- 重用现有的代码风格、组件、工具函数
- 保持与现有项目的一致性
"""
system_prompt = """
你是资深的软件工程开发助手,请基于项目分析结果将用户需求拆解为2-6个可执行步骤。
""" + context_section + """
**拆分要求:**
- 只返回一个 JSON 数组,不要任何额外文本
- 每个步骤任务要独立、单一,步骤之间不能有重叠
- 能合并的任务要合并,不要刻意拆分
- 数组元素为对象,且仅包含两个键:title、detail
- 步骤按执行顺序排列
- **如果有现有项目上下文,第一步通常应该是分析现有相关代码**
**拆分步骤的错误示例:**
- 错误的:第一步创建登录页面;第二步给登录页面添加输入校验;第三步优化登录页面加载性能;
- 正确的:生成一个登录页面,要求:对输入进行校验、优化页面加载性能
**基于项目上下文的示例:**
[
{{"title": "分析现有相关代码", "detail": "读取并分析现有的用户管理、页面结构等相关代码"}},
{{"title": "扩展现有功能", "detail": "基于现有代码风格和架构添加新功能,需要添加新功能的入口点(如:超级链接、路由、API接口等)"}},
{{"title": "集成测试", "detail": "确保新功能与现有系统的兼容性"}}
]
"""
让用户确认计划
# 让用户确认是否执行
confirm = input("\n❓ 是否开始执行计划?(y/n): ").strip().lower()
if confirm not in ['y', 'yes', '是']:
print("⏸️ 计划制定完成,等待用户确认执行")
return
让大模型能够像架构师一样思考、拆分开发任务,通过这种方式,系统不仅能清晰规划开发流程,还能确保最终交付结果符合预期。
Exp:

4、常见问题解答
常见问题解答是开发助手的必要功能,不仅能够解答用户的日常开发问题,还要能够针对现有项目的代码结构、实现逻辑及功能依赖提供精准的分析和解答。
def _use_react_agent(self, question: str, model, tools: list) -> str:
"""
使用ReAct Agent处理问题
Args:
question: 用户问题
model: LLM模型
tools: 工具列表
Returns:
回答内容
"""
try:
from langchain.agents import create_react_agent, AgentExecutor
from langchain_core.prompts import PromptTemplate
# 创建智能问答提示模板 - 使用标准ReAct格式
prompt = PromptTemplate.from_template("""
Answer the following questions as best you can. You have access to the following tools:
{tools}
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {input}
Thought: 我需要分析用户问题的类型。如果涉及项目相关内容,我需要查看项目文件;如果是通用编程问题,我可以直接回答。
{agent_scratchpad}
""")
# 创建ReAct Agent
agent = create_react_agent(model, tools, prompt)
# 创建Agent执行器
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=False, # 是否开启详细输出以便调试
max_iterations=150, # 减少迭代次数避免超时
max_execution_time=3000, # 30秒超时
handle_parsing_errors=True,
return_intermediate_steps=False
)
# 执行查询
result = agent_executor.invoke({"input": question})
return result.get("output", "抱歉,未能生成完整的回答。")
except Exception as e:
print(f"⚠️ ReAct Agent执行失败: {e}")
return self._handle_general_question(question)
Exp1:

Exp2:

5、工具能力
1、文件操作工具
- read_file() - 安全读取文件内容,支持UTF-8编码,包含完整的错误处理
- write_file() - 安全写入文件,自动创建父目录,验证文件名和扩展名
- file_exists() - 检查文件是否存在并且是有效文件
- delete_file() - 删除指定文件,包含权限和存在性验证
- list_files() - 列出目录中的所有文件,返回相对路径列表
- get_file_info() - 获取文件详细信息,包括大小、修改时间、类型等元数据
- get_project_tree() - 获取目录树状结构,支持深度控制和隐藏文件显示
2、Git操作工具
- is_git_available() - 检查Git是否安装并可用
- is_git_repo() - 检查当前目录是否为Git仓库
- init_repo() - 初始化Git仓库,如果已存在则返回相应提示
- add_files() - 添加文件到暂存区,支持添加指定文件或全部文件,包含路径安全验证
- commit() - 提交更改到本地仓库,自动设置默认用户信息,验证提交信息长度(最大200字符)
- push() - 推送到远程仓库,自动获取当前分支名或使用指定分支
- get_status() - 获取Git工作区状态,使用porcelain格式显示未提交的更改
- full_commit_and_push() - 执行完整的添加、提交、推送流程,支持预演模式显示将要执行的命令
3、Shell 执行工具
- execute() - 同步执行Shell命令,返回(返回码, 标准输出, 标准错误)元组,支持超时控制和自动进程清理
- execute_with_realtime_output() - 执行Shell命令并实时显示输出,使用多线程处理stdout和stderr流,适合长时间运行的命令
6、ReAct Agent的实现
def _execute_with_tools(
self,
model: Any,
tools: List,
task_content: str,
step: Dict[str, str],
history: str
) -> str:
"""
使用ReAct Agent执行步骤
Args:
model: LLM模型
tools: 工具列表
task_content: 任务内容
step: 步骤信息
history: 历史记录
Returns:
执行结果
"""
try:
from langchain.agents import create_react_agent, AgentExecutor
from langchain_core.prompts import PromptTemplate
print(f"🤖 使用ReAct Agent执行步骤: {step.get('title', '未知步骤')}")
# 分析任务内容
task_analysis = self._analyze_task_content(task_content)
print(f"🎯 任务分析: {task_analysis['original_content']}")
print(f"📋 建议文件类型: {task_analysis['suggested_file_types']}")
# 构建ReAct Agent提示 - 使用标准ReAct格式
react_prompt = PromptTemplate.from_template("""
Answer the following questions as best you can. You have access to the following tools:
{tools}
Use the following format:
Question: the input question you must answer
Thought: you should always think about what to do
Action: the action to take, should be one of [{tool_names}]
Action Input: the input to the action
Observation: the result of the action
... (this Thought/Action/Action Input/Observation can repeat N times)
Thought: I now know the final answer
Final Answer: the final answer to the original input question
Begin!
Question: {input}
Thought: 我需要理解用户的需求,然后分析现有项目结构来完成开发任务。
{agent_scratchpad}
""")
# 创建Agent
agent = create_react_agent(model, tools, react_prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=True,
max_iterations=120, # 迭代次数
max_execution_time=3000, # 50分钟超时
handle_parsing_errors=True,
return_intermediate_steps=True # 返回中间步骤而不是使用early_stopping_method
)
# 构建输入 - 将步骤信息合并到任务内容中
full_task_content = f"""
任务: {task_content}
当前步骤: {step.get('title', '步骤')}
步骤详情: {step.get('detail', '')}
任务分析:
- 是否为页面: {task_analysis['is_page']}
- 是否为组件: {task_analysis['is_component']}
- 是否需要表单: {task_analysis['requires_form']}
- 是否需要数据处理: {task_analysis['requires_data']}
- 是否需要交互功能: {task_analysis['requires_interactive']}
- 建议文件类型: {task_analysis['suggested_file_types']}
"""
agent_input = {
"input": full_task_content.strip()
}
# 执行Agent
result = agent_executor.invoke(agent_input)
final_answer = result.get('output', '任务完成')
# 检查是否因为迭代限制而停止
if "iteration limit" in final_answer.lower() or "time limit" in final_answer.lower():
print(f"⚠️ Agent达到限制: {final_answer}")
# 抛出异常,触发备用方案
raise Exception(f"Agent达到执行限制: {final_answer}")
print(f"✅ Agent执行完成: {final_answer}")
return final_answer
except Exception as e:
print(f"❌ ReAct Agent执行失败: {str(e)}")
print("🔄 回退到直接执行模式")
return self._execute_with_direct_method(model, tools, task_content, step, history)
Exp:

7、自动测试
def launch_and_test_project(self, project_path: str = None) -> str:
"""
启动生成的项目并进行错误检测
Args:
project_path: 项目路径,默认为output目录
Returns:
启动结果和错误修复信息
"""
if not project_path:
project_path = self.output_dir
print(f"🚀 启动项目: {project_path}")
# 检测项目类型并选择启动命令
launch_command = self._detect_launch_command(project_path)
if not launch_command:
return "❌ 无法识别项目类型,无法启动"
print(f"⚙️ 执行启动命令: {launch_command}")
# 执行启动命令(对于服务器类型的项目使用非阻塞启动)
server_commands = [
"server", "serve", "dev", "start",
"http.server", "runserver", "bootRun",
"cargo run", "go run", "dotnet run"
]
is_server_command = any(cmd in launch_command.lower() for cmd in server_commands)
if is_server_command:
# 使用非阻塞方式启动服务器
success, process, message = self.shell_executor.start_server(launch_command, cwd=project_path)
if success:
print("✅ 项目启动成功!")
result = f"项目启动成功: {message}"
# 如果是HTTP服务器,尝试访问验证
if "http.server" in launch_command:
import time
import requests
try:
time.sleep(2) # 等待服务器完全启动
response = requests.get("http://localhost:8000", timeout=5)
if response.status_code == 200:
result += "\n🌐 服务器可正常访问: http://localhost:8000"
else:
result += f"\n⚠️ 服务器响应异常,状态码: {response.status_code}"
except Exception as e:
result += f"\n⚠️ 无法验证服务器访问: {e}"
# 检查是否是由于依赖缺失导致的错误
error_msg = str(e)
if "requests" in error_msg or "ModuleNotFoundError" in error_msg:
print("🔍 检测到依赖缺失,正在生成修复建议...")
errors = self.error_fixer.detect_errors(error_msg)
if errors:
suggestions = self.error_fixer.suggest_fixes(errors)
print(f"💡 修复建议: {suggestions}")
result += f"\n🔧 修复建议: {suggestions}"
# 停止服务器进程
try:
process.terminate()
process.wait(timeout=3)
result += "\n🔄 测试完成,服务器已停止"
except:
process.kill()
result += "\n🔄 测试完成,服务器已强制停止"
return result
else:
print(f"❌ 启动失败: {message}")
# 检测错误并提供修复建议
errors = self.error_fixer.detect_errors(message)
if errors:
print("🔍 检测到错误,正在生成修复建议...")
suggestions = self.error_fixer.suggest_fixes(errors)
print(f"💡 修复建议: {suggestions}")
# 尝试应用修复
fix_result = self.error_fixer.apply_fixes(suggestions)
print(f"🔧 修复应用结果: {fix_result}")
return f"启动失败,已提供修复建议。错误: {message}\n修复建议: {suggestions}"
else:
return f"启动失败: {message}"
else:
# 使用阻塞方式执行普通命令
return_code, stdout, stderr = self.shell_executor.execute(launch_command, cwd=project_path)
if return_code != 0:
print(f"❌ 启动失败: {stderr}")
# 检测错误并提供修复建议
errors = self.error_fixer.detect_errors(stderr)
if errors:
suggestions = self.error_fixer.suggest_fixes(errors)
self.error_fixer.apply_fixes(suggestions)
return f"启动失败,已提供修复建议。错误: {stderr}"
else:
return f"启动失败: {stderr}"
print("✅ 项目启动成功!")
return f"项目启动成功: {stdout}"
Exp:

四、日志
系统会自动记录每次任务执行的完整链路日志,可随时回溯AI的推理过程与执行细节。

总结
我们完整构建了一个AI辅助开发助手:从底层的任务决策(Task Decision)、计划生成(Task Planning)到ReAct Agent协同执行,展示了如何让大模型从“回答问题”变成能够“自主规划”、“执行任务”的智能体系统。
普通人如何抓住AI大模型的风口?
为什么要学AI大模型
当下,⼈⼯智能市场迎来了爆发期,并逐渐进⼊以⼈⼯通⽤智能(AGI)为主导的新时代。企业纷纷官宣“ AI+ ”战略,为新兴技术⼈才创造丰富的就业机会,⼈才缺⼝将达 400 万!
DeepSeek问世以来,生成式AI和大模型技术爆发式增长,让很多岗位重新成了炙手可热的新星,岗位薪资远超很多后端岗位,在程序员中稳居前列。

与此同时AI与各行各业深度融合,飞速发展,成为炙手可热的新风口,企业非常需要了解AI、懂AI、会用AI的员工,纷纷开出高薪招聘AI大模型相关岗位。
AI大模型开发工程师对AI大模型需要了解到什么程度呢?我们先看一下招聘需求:

知道人家要什么能力,一切就好办了!我整理了AI大模型开发工程师需要掌握的知识如下:
大模型基础知识
你得知道市面上的大模型产品生态和产品线;还要了解Llama、Qwen等开源大模型与OpenAI等闭源模型的能力差异;以及了解开源模型的二次开发优势,以及闭源模型的商业化限制,等等。

了解这些技术的目的在于建立与算法工程师的共通语言,确保能够沟通项目需求,同时具备管理AI项目进展、合理分配项目资源、把握和控制项目成本的能力。
产品经理还需要有业务sense,这其实就又回到了产品人的看家本领上。我们知道先阶段AI的局限性还非常大,模型生成的内容不理想甚至错误的情况屡见不鲜。因此AI产品经理看技术,更多的是从技术边界、成本等角度出发,选择合适的技术方案来实现需求,甚至用业务来补足技术的短板。
AI Agent
现阶段,AI Agent的发展可谓是百花齐放,甚至有人说,Agent就是未来应用该有的样子,所以这个LLM的重要分支,必须要掌握。
Agent,中文名为“智能体”,由控制端(Brain)、感知端(Perception)和行动端(Action)组成,是一种能够在特定环境中自主行动、感知环境、做出决策并与其他Agent或人类进行交互的计算机程序或实体。简单来说就是给大模型这个大脑装上“记忆”、装上“手”和“脚”,让它自动完成工作。
Agent的核心特性
自主性: 能够独立做出决策,不依赖人类的直接控制。
适应性: 能够根据环境的变化调整其行为。
交互性: 能够与人类或其他系统进行有效沟通和交互。

对于大模型开发工程师来说,学习Agent更多的是理解它的设计理念和工作方式。零代码的大模型应用开发平台也有很多,比如dify、coze,拿来做一个小项目,你就会发现,其实并不难。
AI 应用项目开发流程
如果产品形态和开发模式都和过去不一样了,那还画啥原型?怎么排项目周期?这将深刻影响产品经理这个岗位本身的价值构成,所以每个AI产品经理都必须要了解它。

看着都是新词,其实接触起来,也不难。
从0到1的大模型系统学习籽料
最近很多程序员朋友都已经学习或者准备学习 AI 大模型,后台也经常会有小伙伴咨询学习路线和学习资料,我特别拜托北京清华大学学士和美国加州理工学院博士学位的鲁为民老师(吴文俊奖得主)
给大家准备了一份涵盖了AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频 全系列的学习资料,这些学习资料不仅深入浅出,而且非常实用,让大家系统而高效地掌握AI大模型的各个知识点。

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
适学人群
应届毕业生: 无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。
零基础转型: 非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界。
业务赋能突破瓶颈: 传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型。
AI大模型系统学习路线
在面对AI大模型开发领域的复杂与深入,精准学习显得尤为重要。一份系统的技术路线图,不仅能够帮助开发者清晰地了解从入门到精通所需掌握的知识点,还能提供一条高效、有序的学习路径。
- 基础篇,包括了大模型的基本情况,核心原理,带你认识了解大模型提示词,Transformer架构,预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门AI大模型
- 进阶篇,你将掌握RAG,Langchain、Agent的核心原理和应用,学习如何微调大模型,让大模型更适合自己的行业需求,私有化部署大模型,让自己的数据更加安全
- 项目实战篇,会手把手一步步带着大家练习企业级落地项目,比如电商行业的智能客服、智能销售项目,教育行业的智慧校园、智能辅导项目等等

但知道是一回事,做又是另一回事,初学者最常遇到的问题主要是理论知识缺乏、资源和工具的限制、模型理解和调试的复杂性,在这基础上,找到高质量的学习资源,不浪费时间、不走弯路,又是重中之重。
AI大模型入门到实战的视频教程+项目包
看视频学习是一种高效、直观、灵活且富有吸引力的学习方式,可以更直观地展示过程,能有效提升学习兴趣和理解力,是现在获取知识的重要途径

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
海量AI大模型必读的经典书籍(PDF)
阅读AI大模型经典书籍可以帮助读者提高技术水平,开拓视野,掌握核心技术,提高解决问题的能力,同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说,阅读经典书籍是非常有必要的。
600+AI大模型报告(实时更新)
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
AI大模型面试真题+答案解析
我们学习AI大模型必然是想找到高薪的工作,下面这些面试题都是总结当前最新、最热、最高频的面试题,并且每道题都有详细的答案,面试前刷完这套面试题资料,小小offer,不在话下

AI时代,企业最需要的是既懂技术、又有实战经验的复合型人才,**当前人工智能岗位需求多,薪资高,前景好。**在职场里,选对赛道就能赢在起跑线。抓住AI这个风口,相信下一个人生赢家就是你!机会,永远留给有准备的人。
如何获取?
这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

更多推荐


所有评论(0)