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

用100行Python代码理解AI Agent的本质

“想搞懂 AI Agent 的运行原理,面对那些动辄数万行代码的庞大框架,容易迷失在复杂的封装里。nanoAgent 用最原始的方式还原了 Agent 的核心逻辑——整个项目仅仅约 100 行 Python 代码,却完整实现了基于 OpenAI 函数调用的智能体循环。”


一、为什么需要 nanoAgent?

1.1 当前AI Agent开发的痛点

在2025-2026年,AI Agent技术呈现爆发式增长。从 LangGraph 到 CrewAI,从 OpenAI Agents SDK 到 AutoGPT,各种框架层出不穷。但对于初学者来说,这些框架往往存在以下问题:

  • 封装过度:底层逻辑被层层包裹,难以看清Agent到底在做什么
  • 学习曲线陡峭:需要同时掌握框架API、概念体系和最佳实践
  • 调试困难:出现问题时,难以定位是逻辑错误还是框架bug

1.2 nanoAgent的设计哲学

nanoAgent是由开发者sanbuphy开源的一个极简Agent实现项目 。它的核心理念是:

“用最少的代码,展示Agent最核心的逻辑”

  • ✅ 仅约100行Python代码
  • ✅ 零框架依赖,直接使用OpenAI API
  • ✅ 完整实现Agent Loop(智能体循环)
  • ✅ 支持Function Calling(函数调用)
  • ✅ 包含基础系统操作工具(文件读写、命令执行)

正如技术博主评价:“这是理解 Agent 本质的最佳入门项目” 。


二、AI Agent的核心概念科普

在深入代码之前,我们需要理解AI Agent的三个核心组成部分:

2.1 什么是AI Agent?

AI Agent(人工智能代理)是一个能够自主感知环境、做出决策并执行动作的系统。与传统的一次性问答不同,Agent具备以下特征:

特征说明
自主性能在没有人类干预的情况下持续运行
工具使用可以调用外部工具(如搜索、计算、文件操作)
记忆能力能记住之前的交互历史
目标导向围绕特定目标进行多步骤推理

2.2 Agent的核心架构

一个最小化的AI Agent包含四个关键组件 :

2.3 什么是Function Calling?

Function Calling(函数调用)是现代LLM(如GPT-4、Claude)的核心能力。它允许模型:

  1. 识别何时需要调用外部工具
  2. 生成符合预定义格式的调用参数
  3. 暂停文本生成,等待工具执行结果
  4. 继续基于工具返回结果进行推理

这就像是给LLM装上了"手",让它从"只会说话"变成"能动手做事"。


三、nanoAgent代码深度解析

3.1 项目结构概览

nanoAgent的代码结构极其简洁:

nanoAgent/├── agent.py # 核心Agent类(约100行)├── tools.py # 工具定义(文件读写、命令执行)├── config.py # 配置管理└── main.py # 入口程序

3.2 核心Agent类实现

nanoAgent的核心是一个简单的循环结构,完美诠释了“Agent = LLM + 工具 + 循环”的公式 :

class Agent: def __init__(self, tools): self.client = OpenAI() # 初始化OpenAI客户端 self.tools = tools # 注册可用工具 self.messages = [] # 对话历史(短期记忆) def run(self, goal, max_turns=10): """Agent主循环""" self.messages.append({"role": "user", "content": goal}) for i in range(max_turns): # 1. 调用LLM进行推理 response = self.client.chat.completions.create( model="gpt-4", messages=self.messages, tools=self.tools.schemas # 告诉模型有哪些工具可用 ) message = response.choices[0].message # 2. 检查是否需要调用工具 if message.tool_calls: # 执行工具并获取结果 tool_results = self.execute_tools(message.tool_calls) # 将结果加入对话历史 self.messages.extend(tool_results) else: # 3. 直接输出结果,任务完成 return message.content return "达到最大轮次限制"

3.3 工具系统的实现

nanoAgent定义了几个基础但实用的工具 :

工具名称功能使用场景
execute执行系统命令(如lspwd探索环境、运行程序
read_file读取文件内容查看代码、配置文件
write_file写入文件内容创建代码、保存结果

工具的定义采用OpenAI标准的JSON Schema格式:

tools = [ { "type": "function", "function": { "name": "execute", "description": "执行系统命令", "parameters": { "type": "object", "properties": { "command": { "type": "string", "description": "要执行的命令" } }, "required": ["command"] } } }, # ... 其他工具定义]

3.4 Agent Loop的运行流程

让我们通过一个具体例子,看看nanoAgent是如何工作的:

用户输入“请帮我查看当前目录下有哪些文件,然后创建一个名为hello.py的文件,写入print(‘Hello, nanoAgent!’)”

运行过程

第1轮:LLM思考:用户想看文件列表,我应该调用execute工具执行"ls"→ 调用工具:execute("ls")→ 工具返回:["agent.py", "tools.py", "config.py", "main.py"]→ 观察结果加入历史第2轮:LLM思考:现在我需要创建hello.py文件,使用write_file工具→ 调用工具:write_file("hello.py", "print('Hello, nanoAgent!')")→ 工具返回:文件写入成功→ 观察结果加入历史第3轮:LLM思考:任务已完成,不需要再调用工具,直接回复用户→ 最终输出:已完成!我查看了当前目录包含agent.py等文件,并创建了hello.py。

这个循环展示了Agent的自主决策能力:模型自己决定何时停止思考、何时调用工具、何时给出最终答案。


四、动手实践:从零运行nanoAgent

4.1 环境准备

# 克隆项目git clone https://github.com/sanbuphy/nanoAgent.gitcd nanoAgent# 创建虚拟环境python -m venv venvsource venv/bin/activate # Windows: venv\Scripts\activate# 安装依赖pip install openai python-dotenv

4.2 配置API密钥

创建.env文件:

OPENAI_API_KEY=your_api_key_here

4.3 运行示例

from agent import Agentfrom tools import Tools# 初始化工具和Agenttools = Tools()agent = Agent(tools)# 运行Agentresult = agent.run("创建一个简单的待办事项应用,包含添加和查看功能")print(result)

4.4 实际应用场景

nanoAgent虽然简单,但能完成许多实用任务:

场景1:代码生成与调试

输入:帮我写一个Python脚本,计算斐波那契数列前20项→ Agent会:创建文件 → 写入代码 → 执行验证 → 返回结果

场景2:文件管理与分析

输入:分析当前目录下所有.py文件的行数,并生成统计报告→ Agent会:列出文件 → 逐个读取 → 统计行数 → 生成报告文件

场景3:自动化工作流

输入:检查系统磁盘使用情况,如果超过80%则记录到warning.log→ Agent会:执行df命令 → 分析输出 → 条件判断 → 写入日志

五、总结与思考

7.1 nanoAgent的价值

nanoAgent的最大价值不在于它的功能强大,而在于它的教育意义

  1. 去神秘化Agent:证明Agent并不复杂,核心是"循环+工具调用"
  2. 建立直觉:通过阅读100行代码,建立对Agent工作机制的直观理解
  3. 降低门槛:让初学者敢于动手修改和实验

正如Tessl.io播客中Yaniv Aknin所说:“在100行代码中,你能得到一个真正工作的Agent。如果你让它做一个待办应用,它真的能做出一个能点击、能用的应用” 。

7.2 一些建议

  1. 先读源码,再跑程序:花30分钟逐行阅读agent.py,理解每一行的作用
  2. 动手修改:尝试添加新工具(如网络搜索、数据库查询)
  3. 对比学习:阅读后用LangGraph重写同样功能,体会框架的价值
  4. 关注本质:无论框架如何变化,Agent的核心始终是"观察-思考-行动"的循环

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

http://www.jsqmd.com/news/636063/

相关文章:

  • 1、说说你对 TypeScript 的理解?与 JavaScript 的区别?
  • Spring Boot + MyBatis-Plus 多租户实战:从数据隔离到权限控制的完整方案
  • 【YOLOv11】010、YOLOv11训练流程详解:从数据加载到模型保存的完整步骤
  • AI大模型背后的关键单位,你真的了解它吗?
  • cpp算法编程中可能用到的几何知识
  • 2026年青岛发电车租赁公司推荐榜:市南区/市北区/黄岛区/崂山区/李沧区/城阳区/即墨区/胶州市/平度市发电车租赁公司选择指南 - 海棠依旧大
  • 模型、Harness与记忆如何帮助Agent持续学习(Continual Learning)?
  • 高效稳定LDO芯片选型指南:从原理到实战应用
  • VutronMusic:你的跨平台音乐播放器终极解决方案
  • 2026年大模型从入门到精通:AI风口必学,高薪技能速成!错过等不起!
  • Java: File
  • 前端创新技术探索
  • LeetCode Hot100 - 4. 移动零(Java 题解)
  • 009、Python流程控制:条件判断(if/elif/else)
  • 函数用法记录——MATLAB符号计算
  • uniapp Uview框架中u-search组件实现动态搜索与数据过滤
  • Tiktokenizer高性能架构设计:深入解析Token可视化引擎的实现原理
  • WPF DataContext实战:三种绑定方式深度解析
  • 构建“私有第二大脑”:基于 Graph-RAG 的本地知识图谱 Agent 搭建指南
  • OpenClaw:AI Agent引擎驱动的企业全流程智能助手
  • “一眼识万物”:用Rokid AI Glasses与灵珠平台打造植物百科助手
  • AIAgent为何总“好心办坏事”?SITS2026首席科学家解密价值对齐的5个隐性断层及实时干预协议
  • mPDF终极指南:PHP PDF生成库的深度技术解析与实战应用
  • 【RJ 45连接器】RJ45 网络连接器 3D 模型 3 零件装配体 SolidWorks 源文件 含 STEP/IGS 通用格式
  • Python 函数完全指南:参数、返回值与高级用法
  • 告别模糊截图:html-to-image 终极高清图像生成指南
  • PCILeech DMA攻击工具深度实战指南:掌握无驱动内存取证核心技术
  • 网络攻防实践五 20252901程宇
  • 终极指南:使用icloudpd命令行工具轻松备份你的iCloud照片库
  • OpCore Simplify终极指南:三分钟完成黑苹果完美配置