当前位置: 首页 > article >正文

2026年AI Agent实战(一):用200行Python从零搭建一个能自主完成任务的智能体

本文是AI Agent实战系列的第一篇。我们将从零开始用Python实现一个基于ReAct框架的智能体它能自主思考、调用工具、完成任务。全文含完整可运行代码约3500字。目录一、什么是AI Agent二、ReAct框架思考-行动-观察循环三、核心架构设计四、从零实现完整代码五、运行效果演示六、局限性讨论总结一、什么是AI Agent普通的AI对话是这样的你问一个问题AI回答一个答案。一问一答AI不会主动做任何事情。AI Agent的区别在于它能自主规划和执行多步骤任务。举个例子普通AI对话 用户今天北京天气怎么样 AI我无法获取实时天气数据建议你查看天气应用。 AI Agent 用户今天北京天气怎么样 Agent思考我需要调用天气API获取北京的天气数据 Agent行动调用get_weather(北京) Agent观察{temp: 28, condition: 晴, humidity: 45} Agent回答北京今天晴天气温28°C湿度45%适合出行。关键区别Agent有工具使用能力和自主决策能力。需要说明的是Agent不是万能的。它受限于工具的能力和大模型的推理水平。本文实现的是一个基础但完整的Agent框架后续文章会逐步增强能力。二、ReAct框架思考-行动-观察循环ReActReasoning Acting是目前最主流的Agent框架核心思路很简单循环 { Thought思考分析当前状态决定下一步 Action行动调用一个工具 Observation观察获取工具返回结果 } 直到任务完成为什么这个框架有效因为它模拟了人类解决问题的过程你先想想要做什么Thought你去做某个动作Action你看结果怎么样Observation基于结果继续思考下一步与纯推理的区别方式特点适用场景纯推理CoT只思考不行动数学题、逻辑分析纯行动只执行不思考简单脚本ReAct思考行动结合需要外部信息的复杂任务三、核心架构设计我们的Agent由4个核心组件构成┌─────────────────────────────────┐ │ Agent Core │ │ ┌───────────┐ ┌─────────────┐ │ │ │ Planner │ │ Executor │ │ │ │ (思考规划) │ │ (执行动作) │ │ │ └───────────┘ └─────────────┘ │ │ ┌───────────┐ ┌─────────────┐ │ │ │ Memory │ │ Tools │ │ │ │ (记忆存储) │ │ (工具集) │ │ │ └───────────┘ └─────────────┘ │ └─────────────────────────────────┘Planner调用大模型进行推理生成Thought和ActionExecutor执行工具调用返回ObservationMemory保存对话历史和中间结果Tools可供调用的工具集合四、从零实现完整代码4.1 定义工具基类# tools/base.pyfromabcimportABC,abstractmethodfromtypingimportAnyclassTool(ABC):工具基类所有工具必须实现name、description和run方法propertyabstractmethoddefname(self)-str:工具名称Agent通过名称调用...propertyabstractmethoddefdescription(self)-str:工具描述告诉Agent什么时候该用这个工具...abstractmethoddefrun(self,**kwargs)-str:执行工具返回字符串结果...defget_prompt(self)-str:生成工具描述供大模型理解returnf-{self.name}:{self.description}4.2 实现具体工具# tools/calculator.pyfromtools.baseimportToolimportmathclassCalculatorTool(Tool):计算器工具执行数学运算propertydefname(self)-str:returncalculatorpropertydefdescription(self)-str:return执行数学计算。输入一个数学表达式如 23*4返回计算结果。defrun(self,expression:str,**kwargs)-str:try:allowedset(0123456789-*/.() )ifnotall(cinallowedforcinexpression):return错误表达式包含不允许的字符resulteval(expression,{__builtins__:{}},{math:math})returnf{expression}{result}exceptExceptionase:returnf计算错误{e}classWeatherTool(Tool):天气工具模拟天气查询实际项目中替换为真实APIpropertydefname(self)-str:returnget_weatherpropertydefdescription(self)-str:return查询指定城市的天气。输入城市名称返回天气信息。defrun(self,city:str,**kwargs)-str:mock_data{北京:晴天28°C湿度45%,上海:多云25°C湿度60%,深圳:阵雨30°C湿度75%,}returnmock_data.get(city,f未找到{city}的天气数据)classSearchTool(Tool):搜索工具模拟搜索实际项目中替换为真实搜索APIpropertydefname(self)-str:returnsearchpropertydefdescription(self)-str:return搜索互联网信息。输入搜索关键词返回相关结果摘要。defrun(self,query:str,**kwargs)-str:returnf[模拟搜索结果] 关于{query}的信息4.3 Agent核心实现# agent.pyfromopenaiimportOpenAIfromdotenvimportload_dotenvfromtypingimportOptionalimportre load_dotenv()classReActAgent:基于ReAct框架的AI Agentdef__init__(self,tools:list,model:strdeepseek-chat,max_steps:int5):self.tools{tool.name:toolfortoolintools}self.modelmodel self.max_stepsmax_steps self.clientOpenAI()tools_desc\n.join(tool.get_prompt()fortoolintools)self.system_promptf你是一个AI智能体能够通过思考和调用工具来完成任务。 可用工具{tools_desc}请严格按照以下格式回复 Thought: 分析当前情况决定下一步行动 Action: tool_name(query) 当你认为已经获得足够信息时 Thought: 我已经获得了足够的信息 Answer: 你的最终回答 注意 - 每次只调用一个工具 - 仔细分析观察结果后再决定下一步 - 不要编造工具返回的数据self.conversation[]def_parse_action(self,response:str)-Optional[tuple]:matchre.search(rAction:\s*(\w)\(([^)]*)\),response)ifmatch:returnmatch.group(1),match.group(2).strip().strip().strip()returnNonedef_is_final_answer(self,response:str)-Optional[str]:matchre.search(rAnswer:\s*(.),response,re.DOTALL)returnmatch.group(1).strip()ifmatchelseNonedefrun(self,task:str)-str:self.conversation[{role:system,content:self.system_prompt},{role:user,content:task},]forstepinrange(self.max_steps):responseself.client.chat.completions.create(modelself.model,messagesself.conversation,temperature0.3,max_tokens1000,)replyresponse.choices[0].message.content final_answerself._is_final_answer(reply)iffinal_answer:returnfinal_answer actionself._parse_action(reply)ifnotaction:self.conversation.append({role:assistant,content:reply})self.conversation.append({role:user,content:请使用Thought和Action格式继续。})continuetool_name,argumentaction toolself.tools.get(tool_name)observationtool.run(queryargument)iftoolelsef工具{tool_name}不存在self.conversation.append({role:assistant,content:reply})self.conversation.append({role:user,content:fObservation:{observation}})return达到最大步数限制任务未完成。if__name____main__:fromtools.calculatorimportCalculatorTool,WeatherTool,SearchTool agentReActAgent(tools[CalculatorTool(),WeatherTool(),SearchTool()],max_steps5,)resultagent.run(北京今天天气怎么样如果出去玩需要带伞吗)print(f最终结果:{result})五、运行效果演示执行上面的代码你会看到类似这样的输出 任务: 北京今天天气怎么样如果出去玩需要带伞吗 --- 步骤 1 --- 模型回复: Thought: 用户想知道北京的天气情况我需要调用天气查询工具 Action: get_weather(北京) 工具调用: get_weather(北京) 观察结果: 晴天28°C湿度45% --- 步骤 2 --- 模型回复: Thought: 已经获取到北京天气数据晴天28°C不需要带伞 Answer: 北京今天是晴天气温28°C湿度45%。天气很好 不需要带伞可以放心出门建议做好防晒。 最终答案: 北京今天是晴天气温28°C湿度45%。天气很好 不需要带伞可以放心出门建议做好防晒。关键观察第一步Agent正确选择了天气工具第二步基于观察结果晴天给出了合理的回答自主决策没有人工指定先查天气再分析Agent自己规划了步骤六、局限性讨论老实说这个基础Agent有不少限制工具调用解析依赖正则如果模型输出格式不规范就会失败。生产环境建议用Function Calling API没有长期记忆每次对话都是独立的不记得上次交互错误处理简单工具失败时缺乏重试和恢复机制单工具调用每步只能调用一个工具复杂任务效率不高成本不可控没有token计数和预算限制这些问题会在本系列后续文章中逐步解决。总结本文实现了一个基于ReAct框架的AI Agent核心要素Thought-Action-Observation循环Agent的核心运行模式工具抽象统一的工具接口方便扩展对话历史管理通过messages维护上下文代码量不到200行但包含了Agent的核心要素。理解这个基础框架比直接用LangChain等框架更有价值——因为你知道底层在做什么。下一篇《AI Agent实战二给智能体加上工具使用和记忆能力》将实现Function Calling集成和持久化记忆系统。本文由AI辅助整理经作者亲自验证和编辑。代码在Python 3.12 DeepSeek API环境下测试通过。如有问题欢迎评论区交流。最后更新2026年5月

相关文章:

2026年AI Agent实战(一):用200行Python从零搭建一个能自主完成任务的智能体

本文是AI Agent实战系列的第一篇。我们将从零开始,用Python实现一个基于ReAct框架的智能体,它能自主思考、调用工具、完成任务。全文含完整可运行代码,约3500字。 目录 一、什么是AI Agent二、ReAct框架:思考-行动-观察循环三、核…...

SAP采购订单税码自动化:除了BADI,还有这3种配置方案你可能没想到

SAP采购订单税码自动化:超越BADI的3种高效配置方案 每次手工输入税码的痛苦,只有经历过采购订单高峰期的人才能真正体会。想象一下,面对数百行物料清单,重复输入相同的税码,不仅效率低下,还容易出错。作为S…...

信息安全工程师-入侵检测系统核心原理与体系架构

一、引言(一)核心概念定义入侵检测系统(Intrusion Detection System, IDS)是网络安全纵深防御体系的核心组件,通过收集操作系统、网络流量、应用程序日志等多源信息,识别系统中违背安全策略或危及系统安全的…...

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南 时间序列分析中,平稳性检验是绕不开的关键步骤。很多数据分析师一提到平稳性检验,第一反应就是ADF检验(Augmented Dick…...

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案 【免费下载链接】1fichier-dl 1Fichier Download Manager. 项目地址: https://gitcode.com/gh_mirrors/1f/1fichier-dl 1Fichier下载管理器是一款专为1Fichier文件分享平台设计的智能下载工具&a…...

直接序列扩频技术原理与PSoC实现详解

1. 直接序列扩频技术基础解析直接序列扩频(DSSS)是一种通过伪随机码(PN序列)扩展信号频谱的无线通信技术。1941年由好莱坞女星Hedy Lamarr和作曲家George Antheil首次提出(美国专利#2,292,387),这项技术如今已广泛应用于蜂窝电话、无线局域网…...

别再暴力finetune了!(Python轻量化微调的3种范式切换策略——精度不降、显存直降68%)

更多请点击: https://intelliparadigm.com 第一章:暴力微调的困局与轻量化微调的必要性 在大语言模型(LLM)落地实践中,全参数微调(Full Fine-tuning)常被称作“暴力微调”——它要求加载全部模…...

碾压传统搜索:大模型 Advanced RAG 架构设计与 FAISS 向量检索性能调优

这一篇,我们要聊聊目前 AI 领域最火、也是最有商业价值的落地架构。 随着大语言模型(LLM)的爆发,很多企业发现直接把 PDF 丢给 GPT 问问题,经常会出现“幻觉”或者回答不准确。为了解决这个问题,RAG&#x…...

GraphRAG 实战最大的坑:一个实体,七种身份

当你以为 GraphRAG 最难的是"建图",实际上最难的是"给实体定类型"——哪怕你已经预定义了严格的类型 schema。一、先看一组真实数据 我们拿 3GPP TS 23.502(5G 核心网信令流程规范)跑了一次 GraphRAG 的实体抽取。这份文…...

为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案

更多请点击: https://intelliparadigm.com 第一章:为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案 2024年3月起施行的《金融人工智能模型监管指引(试行)》明确要求:所有面向信…...

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测 在量化交易的江湖里,有一个公开的秘密:价格不是平滑移动的,而是由一笔笔限价单(Limit Orders)的挂单、撤单和市价单(Mark…...

量子计算编程框架QUASAR:强化学习优化汇编代码生成

1. 量子计算与汇编代码的碰撞 量子计算正在从实验室走向实际应用,但编写量子程序仍然是个技术活。传统量子编程需要开发者同时理解量子物理原理和特定硬件架构,这种双重门槛让很多潜在开发者望而却步。我在量子计算领域摸爬滚打多年,亲眼见过…...

Otter.ai CLI工具:为开发者与AI智能体打造自动化会议管理方案

1. 项目概述:一个为开发者与AI智能体打造的Otter.ai命令行工具 如果你和我一样,每天要处理大量的会议录音和转录文本,那么Otter.ai这个工具你一定不陌生。它确实是个会议记录的神器,能自动识别不同说话人,生成带时间戳…...

分布式系统自适应路由优化:RouteMoA架构解析

1. 项目背景与核心价值在分布式系统架构中,混合代理模式已成为处理高并发、异构网络环境的主流方案。但传统静态路由策略在面对动态网络拓扑和波动性流量时,常常出现资源分配不均、响应延迟等问题。RouteMoA项目的核心创新在于实现了基于实时网络状态的自…...

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App 想象一下,你的无人机不仅能按照预设航线飞行,还能实时识别电力塔上的绝缘子破损、安防区域内的异常人员活动——这就是智能巡检系统的魅力所在。本文将带你从零开始…...

避坑指南:为什么我总劝新手安装Anaconda时别勾选‘添加到PATH’?

为什么Anaconda安装时不该勾选"添加到PATH"?深度解析环境变量陷阱 第一次安装Anaconda时,那个看似无害的"Add Anaconda to my PATH environment variable"选项就像潘多拉魔盒——勾选它可能打开一连串意想不到的问题。作为处理过数百…...

微众银行年营收363亿:同比降4.8% 净利110亿 不良贷款率1.41%

雷递网 雷建平 5月3日微众银行(WeBank)日前发布2025年的年报,年报显示,微众银行2025年营收为362.84亿元,较上年同期的381.28亿元下降4.8%。微众银行2023年营收为393.6亿元,这意味着,微众银行的营…...

诚益生物冲刺港股:年亏损4460万美元 业务深度绑定阿斯利康

雷递网 雷建平 5月3日诚益生物开曼有限公司(简称:“诚益生物”)日前更新招股书,准备在港交所上市。诚益生物于2025年12月向FDA提交ECC4703作为司美格鲁肽辅助治疗肥胖症╱超重的IIa期试验的IND申请,并于2026年1月收到F…...

Python日志把磁盘写爆了?一个真实案例教你用logrotate和find命令优雅管理日志文件

Python日志管理实战:如何用logrotate和find命令避免磁盘爆满 1. 从真实案例看日志管理的痛点 那天凌晨三点,监控系统突然报警——生产环境的核心服务全部宕机。紧急登录服务器排查,发现磁盘空间被日志文件占满,Python应用抛出OSEr…...

网商银行年营收206亿:净利33亿 万向三农与复星卖老股

雷递网 雷建平 5月3日网商银行日前公布2025年的年报。年报显示,网商银行2025年营收为205.63亿元,较上年同期的213.14亿元下降3.5%。网商银行2025年运营利润为33.22亿元,较上年同期的34亿元下降2.3%;净利为32.93亿元,较…...

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 想要完全掌控夜之城的…...

ai赋能开发:在idea社区版中集成快马ai实现智能编程辅助

AI赋能开发:在IDEA社区版中集成快马AI实现智能编程辅助 最近在尝试将AI能力集成到日常开发工具中,发现IDEA社区版结合快马平台的AI模型可以打造一个相当实用的智能编程助手。这个项目原型主要实现了代码质量自动审查、智能补全和自然语言转代码等功能&a…...

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’ 在Chiplet架构成为半导体行业新宠的今天,UCIe(Universal Chiplet Interconnect Express)作为开放标准正逐步统一异构芯片的互连…...

别再只装不用了!用Docker Compose一键部署Neo4j,并导入你的第一个电影关系图谱

用Docker Compose快速搭建Neo4j并构建电影关系图谱 在数据关系日益复杂的今天,传统关系型数据库在处理多层级关联时常常力不从心。图数据库以其直观的节点-关系模型,成为解决这类问题的利器。Neo4j作为图数据库领域的佼佼者,凭借其强大的Cyph…...

告别localhost!Vite+Vue3项目打包后,直接双击index.html就能运行的保姆级教程

告别localhost!ViteVue3项目打包后直接双击运行的终极指南 每次开发完Vue项目,最尴尬的时刻莫过于把打包好的dist文件夹发给产品经理,对方却打不开index.html。作为前端开发者,我们都经历过这种窘境——明明在开发环境运行得好好的…...

提升直播平台开发效率:用快马AI一键生成fenghud.live核心模块代码

最近在开发一个类似fenghud.live的直播平台项目时,发现很多功能模块其实都有现成的解决方案,但自己从头写不仅耗时还容易踩坑。后来尝试用InsCode(快马)平台的AI生成代码功能,意外发现能快速产出可直接集成的高质量模块代码,效率提…...

用python开发的工具【Excel智能合并工具】:1分钟合并15个文件×多Sheet,经常处理Excel的你注意啦!

🌈 Hi,~小工具继续,领取方法在文末~📌 常处理Excel的小伙伴此工具不要错过啦!🛠️ 前面分享了【照片批量加水印】-【Excel表格自动合并/拆分】-【批量生成二维码】-【Word自动生成】-【PDF信息提取】-【Exc…...

基于强化学习的GPU内核生成技术优化实践

1. GPU内核生成技术概述GPU内核生成是现代高性能计算中的核心技术,它通过优化计算密集型任务的并行执行效率来提升整体性能。与传统的CPU编程不同,GPU编程需要充分利用硬件的并行计算能力,将计算任务分解为多个线程块(Thread Block)和线程网格…...

企业级AI模型安全部署:NVIDIA NIM微服务架构解析

1. 企业级AI模型安全部署的核心挑战 在金融、医疗、政务等高度敏感的行业领域,AI模型部署面临三重矛盾:创新效率与合规要求的矛盾、数据价值与隐私风险的矛盾、技术迭代与系统稳定的矛盾。以某跨国银行为例,其AI团队在测试开源LLM时发现&…...

别再折腾CUDA版本了!手把手教你用Anaconda+Python3.10一键搞定PaddlePaddle-GPU 2.6.0

深度学习环境配置革命:用Anaconda三分钟搞定PaddlePaddle-GPU 每次看到"CUDA版本不兼容"的报错提示,是不是感觉血压瞬间飙升?作为过来人,我完全理解那种在NVIDIA驱动、CUDA、cuDNN版本地狱里反复挣扎的痛苦。但今天我要…...