Python构建AI智能体:ReAct、Plan-and-Solve与Reflection三大范式实战

发布时间:2026/7/27 14:16:06

Python构建AI智能体:ReAct、Plan-and-Solve与Reflection三大范式实战
1. 智能体开发基础与核心概念在当今AI技术快速发展的背景下构建能够自主思考和行动的智能体已成为开发者关注的热点。作为一名长期从事AI开发的工程师我将分享如何用Python构建三类典型智能体的实战经验。1.1 智能体的本质特征智能体的核心在于其自主性。一个真正的智能体应当具备感知能力通过传感器获取环境信息决策能力基于感知信息进行推理和规划执行能力通过执行器对环境产生影响学习能力从经验中改进自身行为在代码层面这通常表现为一个持续运行的循环不断接收输入、处理信息、产生输出。现代LLM大语言模型为智能体提供了强大的认知基础但需要开发者精心设计交互机制。1.2 开发环境准备构建智能体首先需要配置开发环境。以下是关键组件# 基础环境配置 python -m venv agent-env source agent-env/bin/activate # Linux/Mac # agent-env\Scripts\activate # Windows # 核心依赖安装 pip install google-generativeai openai python-dotenv typing-extensions ollama不同模型API的调用方式存在差异这是新手常见的踩坑点。例如# Gemini调用示例 import google.generativeai as genai genai.configure(api_keyYOUR_API_KEY) model genai.GenerativeModel(gemini-1.5-flash) # OpenAI标准调用 from openai import OpenAI client OpenAI(api_keysk-xxx) # 第三方中转API调用需注意base_url client OpenAI( api_keysk-xxxx, base_urlhttps://api.xxx.com/v1 # 必须以/v1结尾 ) # 本地Ollama调用无需API key import ollama response ollama.chat(modelllama3, messages[...])关键提示API密钥等敏感信息应存储在.env文件中通过python-dotenv加载切勿硬编码在脚本中。2. 智能体三大范式实现2.1 ReAct范式动态思考与行动ReActReasoning and Acting是最接近人类思考过程的智能体范式。其核心在于建立思考-行动-观察的循环class ReActAgent: def __init__(self, llm_client, tool_executor, max_steps5): self.llm_client llm_client self.tool_executor tool_executor self.max_steps max_steps self.history [] def run(self, question: str): while len(self.history) self.max_steps: # 1. 生成思考 prompt self._build_prompt(question) response self.llm_client.think(prompt) # 2. 解析行动 thought, action self._parse_response(response) if action.startswith(Finish): return self._handle_finish(action) # 3. 执行工具 tool_name, tool_input self._parse_action(action) observation self._execute_tool(tool_name, tool_input) # 4. 更新历史 self._update_history(thought, action, observation)2.1.1 提示词工程ReAct的成功很大程度上依赖于精心设计的提示词模板REACT_PROMPT_TEMPLATE 你是一个可以调用外部工具的智能助手。可用工具 {tools} 请严格按以下格式回应 Thought: 你的思考过程 Action: 要采取的行动格式为 - {{tool}}[{{input}}] 调用工具 - Finish[{{answer}}] 结束任务 当前问题{question} 历史记录{history} 2.1.2 实战技巧历史压缩当历史记录过长时可以总结前几步的关键信息避免超出模型上下文限制错误恢复当工具调用失败时应让模型有机会尝试替代方案超时控制设置最大步数防止无限循环2.2 Plan-and-Solve先规划后执行与ReAct的动态调整不同Plan-and-Solve强调先制定完整计划再执行class PlanAndSolveAgent: def __init__(self, llm_client): self.planner Planner(llm_client) self.executor Executor(llm_client) def run(self, question: str): plan self.planner.plan(question) return self.executor.execute(question, plan)2.2.1 规划阶段规划器的核心是让模型将复杂任务分解为可执行的子步骤PLANNER_PROMPT 你是一个规划专家。请将问题分解为可执行的步骤列表。 输出必须为Python列表格式 python [步骤1, 步骤2, ...]问题{question} #### 2.2.2 执行阶段 每个步骤执行时都会获得完整上下文 python EXECUTOR_PROMPT 你是一个执行专家。请解决当前步骤 问题{question} 计划{plan} 已完成步骤{history} 当前步骤{current_step} 只需回答当前步骤的结果 2.3 Reflection迭代优化Reflection范式通过自我评审不断改进输出质量class ReflectionAgent: def __init__(self, llm_client, max_iters3): self.llm_client llm_client self.memory Memory() self.max_iters max_iters def run(self, task: str): code self._initial_execute(task) for _ in range(self.max_iters): feedback self._reflect(task, code) if 无需改进 in feedback: break code self._refine(task, code, feedback) return code2.3.1 记忆管理记忆模块记录完整的迭代轨迹class Memory: def __init__(self): self.records [] def add_record(self, record_type: str, content: str): self.records.append({type: record_type, content: content}) def get_trajectory(self) - str: return \n.join( f{r[type]}: {r[content]} for r in self.records )3. 实战问题与解决方案3.1 常见错误排查API调用失败检查API密钥是否正确验证网络连接是否正常确认服务端是否可用解析错误添加更健壮的解析逻辑在提示词中强调输出格式要求实现自动修正机制无限循环设置最大迭代次数检测重复操作实现超时机制3.2 性能优化技巧缓存机制对相同工具的重复调用结果进行缓存并行执行当多个步骤无依赖关系时可并行处理精简上下文定期清理无关的历史记录模型选择简单任务使用轻量级模型3.3 高级应用模式多智能体协作不同特长的智能体分工合作混合范式结合ReAct的灵活性和Plan-and-Solve的系统性长期记忆引入向量数据库存储历史经验工具学习让智能体自主发现和掌握新工具4. 开发心得与建议在实际开发中有几个关键点值得注意逐步验证先构建最小可行智能体再逐步添加复杂功能监控指标跟踪每一步的成功率、耗时等关键指标异常处理为每个可能失败的点设计恢复策略用户反馈收集最终用户对智能体决策的反馈用于改进一个典型的开发迭代周期包括设计智能体架构实现核心循环构建测试用例运行评估指标分析失败案例优化提示词和逻辑对于资源有限的团队建议从Ollama本地模型开始待验证核心逻辑后再接入商用API。同时可以复用开源的智能体框架如LangChain、AutoGen加速开发。

相关新闻

rxjs-spy完全指南:从安装到高级调试的10个实用技巧

rxjs-spy完全指南:从安装到高级调试的10个实用技巧

2026/7/27 14:06:05

rxjs-spy完全指南:从安装到高级调试的10个实用技巧 【免费下载链接】rxjs-spy A debugging library for RxJS 项目地址: https://gitcode.com/gh_mirrors/rx/rxjs-spy rxjs-spy是一款专为RxJS打造的调试库,它能帮助开发者轻松追踪、分析和调试RxJ…

司替戊醇填补国内Dravet综合征治疗空白

司替戊醇填补国内Dravet综合征治疗空白

2026/7/27 14:06:05

Dravet综合征是一种罕见的严重发育性癫痫性脑病,90%以上的患儿由SCN1A基因功能缺失突变致病,多在1岁内以反复热性惊厥起病,随年龄增长逐渐出现无热全面性强直阵挛、肌阵挛、不典型失神等多种难治性发作,常规抗癫痫药物单药应答率不…

Jellium Desktop字幕基础教程:掌握字幕设置的终极指南

Jellium Desktop字幕基础教程:掌握字幕设置的终极指南

2026/7/27 14:06:05

Jellium Desktop字幕基础教程:掌握字幕设置的终极指南 【免费下载链接】jellium-desktop An unofficial desktop client for Jellyfin 项目地址: https://gitcode.com/GitHub_Trending/je/jellium-desktop Jellium Desktop是一款非官方的Jellyfin桌面客户端&…

Agent 工具调用与记忆:为什么你的 AI 编程助手在团队协作中频频越权?

Agent 工具调用与记忆:为什么你的 AI 编程助手在团队协作中频频越权?

2026/7/27 15:06:08

这篇我按“先跑起来、再讲取舍”的方式写《一次Agent项目复盘,问题最后出在流程而不是模型》。概念会讲,但重点放在代码怎么组织、哪里容易踩坑。摘要最近团队里接入 Codex 和 Claude Code 进行辅助开发,看似代码生成速度翻倍,但 …

DP83849I以太网PHY芯片RMII弹性缓冲器配置与端口映射实战

DP83849I以太网PHY芯片RMII弹性缓冲器配置与端口映射实战

2026/7/27 15:06:08

1. 项目概述与核心价值在嵌入式网络设备开发中,以太网物理层(PHY)芯片的选择与配置往往是决定通信稳定性的关键一环。DP83849I作为德州仪器(TI)旗下的一款经典10/100M自适应以太网PHY芯片,以其高集成度和丰…

MySQL JDBC SSL加密配置与避坑指南

MySQL JDBC SSL加密配置与避坑指南

2026/7/27 15:06:08

1. 项目背景与核心需求最近在给某金融系统做安全加固时,客户要求所有数据库连接必须启用SSL加密传输。原本以为只是改个连接字符串的小事,结果在MySQL 8.0安全版(Enterprise Edition)上踩了一堆坑。这里把JDBC配置SSL的完整方案和…

Pixeval终极指南:如何快速掌握这款免费高效的Pixiv第三方客户端?

Pixeval终极指南:如何快速掌握这款免费高效的Pixiv第三方客户端?

2026/7/27 15:06:08

Pixeval终极指南:如何快速掌握这款免费高效的Pixiv第三方客户端? 【免费下载链接】Pixeval Wow. Yet another Pixiv client! 项目地址: https://gitcode.com/gh_mirrors/pi/Pixeval 你是否曾为Pixiv官方客户端的功能限制而烦恼?想要更…

包络追踪技术解析:LM3291如何提升射频功率放大器效率

包络追踪技术解析:LM3291如何提升射频功率放大器效率

2026/7/27 15:06:08

1. 项目概述:为什么我们需要包络追踪? 在移动通信设备里,射频功率放大器(PA)是出了名的“电老虎”。尤其是在3G和4G LTE时代,为了支持更高的数据速率和更复杂的调制方式(比如QAM)&am…

基于U-Net的乳腺癌病理图像分割技术实践

基于U-Net的乳腺癌病理图像分割技术实践

2026/7/27 14:56:07

1. 项目背景与核心挑战 乳腺癌病理图像分割是医学影像分析领域的重要研究方向。作为一名长期从事医学AI项目研发的技术人员,我深知这项工作的临床价值和技术难点。传统的人工标注方式不仅耗时耗力(单个病例平均需要2-3小时),而且受…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/27 8:45:59

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/27 8:42:17

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/27 14:56:57

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计

2026/7/27 0:05:04

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计 一、多模态对话的「首字节延迟」:上传与流式的协同鸿沟 多模态 AI 应用的前端体验,往往卡在"首字节延迟"上。用户上传一张图片,提一个问题,然后盯着空白对…

【微科普】网红水晶香薰真相拆解:透明固体香薰并非香精结晶,一文理清各类无火香薰释香机理

【微科普】网红水晶香薰真相拆解:透明固体香薰并非香精结晶,一文理清各类无火香薰释香机理

2026/7/27 0:05:04

文章目录第一章 大众普遍存在的认知误区:水晶香薰是芳香烃结晶产物1.1 聚丙烯酸钠凝胶水晶珠体系(市面占比90%家用水晶香薰)1.2 无机盐硬质结晶载体:泻盐与钾明矾香薰原石1.3 植物多糖与PVA整块果冻型水晶香膏1.4 唯一特例&#x…

优启通3.7修改版:深度优化的PE系统维护工具

优启通3.7修改版:深度优化的PE系统维护工具

2026/7/27 0:05:04

1. 项目概述今天要跟大家分享的是一个经过深度优化的PE工具——优启通3.7(2025修改版)。这个版本是在原版基础上进行了大量功能增强和兼容性改进的12月最新版本,特别适合系统维护人员和电脑爱好者使用。作为一个长期从事IT运维的老兵&#xf…