当前位置:首页>python>手搓智能体|ReAct框架实操指南(附Python代码)

手搓智能体|ReAct框架实操指南(附Python代码)

  • 2026-10-11 08:34:44
手搓智能体|ReAct框架实操指南(附Python代码)

手搓智能体,说起来有点狂妄,实际也不是不可能!🤔

要达到手搓智能体这一步,我们还差一个重要的知识点——智能体的“骨架”:ReAct框架。

前面聊过的RAG、Function Calling、MCP、Skills,是智能体的血肉;大语言模型是它的“大脑”;而ReAct这个骨架,才能真正撑起AI这个庞然大物。

🔍 什么是ReAct框架?

ReAct 全称 Reasoning + Acting(推理 + 行动),是普林斯顿 & 谷歌 2022 年提出的 AI 大模型智能体核心架构,也是当前 LLM Agent 最主流、最基础的设计范式。

它精准解决了原生LLM的痛点:只会空想、不会查外部信息、容易幻觉、无法分步解决复杂问题,让大模型像人类一样,循环解决问题:

📌 三大核心组件(TAO循环)

完整循环:Thought → Action → Observation → 重复,直到任务结束输出Answer。

1. Thought(思考/推理):LLM内部逻辑分析、任务拆解、规划下一步,比如理解用户问题、判断缺什么信息、制定计划。

2. Action(行动/执行):把思考变成可执行操作,调用工具(搜索网页、查数据库、API调用、代码执行等)。

3. Observation(观察/反馈):工具执行后的客观结果,作为下一轮思考的输入依据。

💡 不用从零搭建!

大家熟知的OpenClaw小龙虾,就是一个标准的智能体,直接使用AI 能力来完成任务的“数字员工”或助手。包括我前面用到的OpenCode也是,还有比较有影响力的Claude Code,一般我们直接去使用这些智能体就行了。

但某些专业领域或者企业,可能需要自己搭建智能体,定制用于专属领域或专属目的,就需要自己搭建智能体。
即使需要搭建智能体,也是不需要从0到1的写,早就有人封装了ReAct框架等AI部件,实现了智能体的一些功能,你直接调用就行了。比如LangChain, 是一个供开发者使用的代码框架,可以基于它来开发AI应用;再如Dify,是一个面向更广泛用户的低代码应用开发平台,可以快速搭建出应用,开箱即用。

🔥 实操环节:纯手写ReAct智能体(核心版)

今天不调用LangChain和Dify,直接按ReAct思想,实现一个超萌版智能体,看懂它的工作原理!

标准ReAct完整流程:

① Thought:大模型思考(比如“需要查XX,无实时信息,必须搜索”)

② Action:调用Search工具,搜索关键词

③ Observation:获取工具返回的真实数据

④ Thought:分析结果,信息足够则总结

⑤ Final Answer:输出最终答案

💻 纯Python手写核心代码(可直接复制运行)

import requests# ===================== 配置 =====================ALIYUN_API_KEY = "sk-3fa"  #需要申请大模型api-keyBOCHA_API_KEY = "sk-ddb"   #需要申请web搜索api-keyALIYUN_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"BOCHA_URL = "https://api.bocha.cn/v1/web-search"# ===================== 思考函数 =====================def think(question: str, history: str) -> str:    print("🤖 正在思考...")    payload = {        "model": "qwen3.6-plus",        "messages": [{            "role": "user",            "content": f"""你是ReAct智能体,按格式输出下一步思考与行动。用户问题:{question}历史记录:{history}规则:1. 若信息不足 → 输出:Action: Search[查询词]2. 若信息足够 → 输出:Finish: [最终答案]"""        }],        "temperature": 0    }    headers = {        "Authorization": f"Bearer {ALIYUN_API_KEY}",        "Content-Type": "application/json"    }    resp = requests.post(ALIYUN_URL, headers=headers, json=payload)    return resp.json()["choices"][0]["message"]["content"].strip()# ===================== 搜索 ============================def web_search(query: str) -> str:    print(f"🔍 正在搜索:{query}")    headers = {        "Authorization": f"Bearer {BOCHA_API_KEY}",        "Content-Type": "application/json"    }    data = {        "query": query,        "summary": True,        "freshness": "noLimit",        "count": 2    }    resp = requests.post(BOCHA_URL, headers=headers, json=data)    # 只取1000字符,加快处理    return str(resp.json())[:1000]# ===================== ReAct 主循环 =====================def react_agent(question: str):    history = ""    print(f"\n📌 问题:{question}\n")    for step in range(1, 4):        print(f"=== 第 {step} 轮 ReAct ===")        thought = think(question, history)        print(f"思考结果:{thought}")        if "Finish:" in thought:            ans = thought.split("Finish:")[-1].strip()            print(f"\n✅ 最终答案:{ans}")            return        try:            query = thought.split("Search[")[1].split("]")[0]        except:            query = question        res = web_search(query)        print(f"搜索结果:{res}\n")        history += f"\n{thought}\n搜索结果:{res}"# ===================== 启动 =====================if __name__ == "__main__":    user_q = input("请输入问题:")    react_agent(user_q)

📝 运行测试

运行后,输入问题:“华为手机最新的型号是什么?”,经过两轮ReAct循环,即可输出答案。

小遗憾:目前仅能搜索到2025年信息,若添加“获取当前时间”工具,带上2026年时间查询,结果会更精准~

其实只要再增加工具调用、MCP调用、数据库调用,这个简单的智能体,就能升级成能处理复杂任务的“超级助手”!

智能体的厉害之处,就在于它会不停循环“思考→行动→观察→再思考”,给它一个目标,不达目的不罢休,比优秀员工还靠谱!💪

你想让这个智能体解决什么问题?评论区留言~一起解锁智能体的更多玩法!

#AI智能体 #ReAct框架 #Python实操 #手搓AI智能体 #LLMAgent

最新文章

随机文章