别再只写Prompt了!用ReAct框架教你让大模型自己“想”和“做”(附代码实战)

发布时间:2026/5/23 5:15:07

别再只写Prompt了!用ReAct框架教你让大模型自己“想”和“做”(附代码实战) 从Prompt到智能体用ReAct框架打造会思考的AI应用在AI应用开发领域我们正经历着从静态问答到动态智能体的范式转变。许多开发者已经掌握了基础的Prompt编写技巧但当面对需要多步推理、工具调用和动态决策的复杂场景时传统的Prompt工程往往力不从心。这正是ReAct框架大显身手的舞台——它让语言模型真正学会了三思而后行。1. 为什么我们需要超越基础Prompt想象一下这样的场景你需要开发一个智能客服系统用户问我的订单为什么延迟了。基础Prompt可能直接回答由于物流原因而一个具备ReAct能力的AI会先自主执行以下步骤调用订单查询API获取该用户的最新订单状态检索物流公司的异常公告数据库分析天气数据判断是否影响运输路线综合所有信息生成个性化回复这种动态决策能力正是现代AI应用所欠缺的。传统方法面临三个核心痛点幻觉问题模型基于内部知识推理时可能虚构不存在的事实信息滞后无法实时获取外部数据导致回答过时逻辑断裂复杂问题需要多步处理时容易丢失上下文# 传统Prompt与ReAct的对比示例 basic_prompt 回答用户关于订单延迟的问题 react_prompt 思考需要先获取订单详情和物流信息 行动调用orders_api查询订单12345 观察订单状态为运输中发货日期为2023-05-10 思考检查最近一周的物流异常报告 行动搜索顺丰快递 2023年5月异常公告 观察5月12日华南地区暴雨影响部分线路 回答您的订单因5月12日华南暴雨导致物流延迟预计延迟2天 2. ReAct框架核心原理解析ReAct的核心理念是将**推理(Reasoning)和行动(Acting)**交织成一个动态循环。这个框架包含三个关键组件组件功能描述示例Thought内部推理过程需要先验证用户身份Action外部工具调用call[user_auth_API]Observation环境反馈用户VIP等级黄金在LangChain中的典型实现流程from langchain.agents import initialize_agent from langchain.llms import OpenAI # 初始化工具包 tools [...] agent initialize_agent( tools, OpenAI(temperature0), agentreact-docstore, verboseTrue ) # 运行ReAct循环 agent.run(北京和上海哪个城市人均GDP更高)关键设计原则保持思考轨迹完整可追溯每个行动都应有明确目的观察结果必须影响后续推理设置最大迭代次数防止死循环提示在实际开发中建议先用纸笔画出理想的思考-行动流程图再转化为Prompt模板3. 实战构建电商推荐智能体让我们通过一个电商场景具体演示如何实现ReAct。假设我们需要开发一个能理解复杂需求的推荐系统react_template 你是一个电商推荐助手请按照以下步骤工作 1. 分析用户query中的关键需求 2. 根据需要调用合适的产品数据库 3. 比较不同产品的特征 4. 给出推荐理由 当前对话 {chat_history} 用户输入{input} 开始你的思考过程 {agent_scratchpad} tools [ Tool( nameProductSearch, funcsearch_products, description根据关键词搜索商品 ), Tool( nameCompareProducts, funccompare_features, description比较两个产品的参数 ) ]当用户询问我想买一台适合编程的轻薄本预算1万左右时智能体的执行轨迹可能是思考1需要明确编程笔记本的关键参数 行动1ProductSearch[编程笔记本 参数] 观察1重点参数CPUi7, 内存≥16GB, 重量1.5kg 思考2筛选符合预算的轻薄本 行动2ProductSearch[轻薄本 i7 16GB 1万] 观察2找到3款符合条件的笔记本 思考3比较各款的扩展接口和散热性能 行动3CompareProducts[X1 Carbon vs MacBook Pro] 观察3X1 Carbon接口更丰富MacBook散热更好 回答推荐ThinkPad X1 Carbon因为它...4. 高级技巧与避坑指南经过数十个项目的实践验证我们总结了这些宝贵经验性能优化技巧使用思维蒸馏技术压缩历史轨迹对常用工具调用添加本地缓存为不同工具设计专用提示模板# 思维蒸馏示例 def distill_thoughts(thoughts): 压缩重复的思考过程 key_points [] for t in thoughts: if 验证 in t and 用户 in t: key_points.append(用户身份验证流程) elif 搜索 in t and 产品 in t: key_points.append(产品检索条件优化) return | .join(key_points)常见问题解决方案问题现象可能原因解决方案循环执行相同动作观察结果未被正确解析添加结果校验规则过早结束任务finish动作触发太敏感设置最小思考步骤阈值工具选择错误工具描述不够准确重写工具的功能描述注意在测试阶段务必记录完整的ReAct轨迹这是调试的最佳素材在实际项目中我们曾遇到一个典型案例机票预订智能体总是推荐中转航班。分析轨迹发现模型在思考阶段过早排除了直飞选项。通过调整Prompt强调优先考虑直飞航班准确率从68%提升到92%。

相关新闻