Python+大模型=AI Agent:三步打造能读写文件的智能助手!

简介

本文详解了AI Agent的核心原理与实现方法,指出其本质是"循环+LLM+工具函数"的简单结构。文章以Gemini 3为例,展示了如何构建一个能读写文件、理解需求的命令行助手,包括基础API调用、工具函数定义、Agent类扩展和命令行包装等步骤。理解了Agent的四个组成部分(模型、工具、上下文工作记忆、循环),就能轻松创建出看似"有生命"的智能助手。


很多人第一次看到 AI Agent 自己编辑文件、跑代码、修 bug,还能一直运行下去的时候,都觉得挺神奇。其实远没有想象中那么复杂。这里没什么秘密算法,也没有什么"智能体大脑"这种玄学概念。

AI Agent核心就三件事:循环 + LLM + 工具函数

如果你会写个while True循环?那基本就算成功一半了。

这篇文章会完整展示怎么用 Gemini 3 搭一个真正能用的 Agent:从最基础的 API 调用,到一个能读写文件、理解需求的命令行助手。

Agent 到底是什么

传统程序就是流程图那一套:步骤 A → 步骤 B → 步骤 C → 结束。

而Agent 不一样,它会根据当前状况决定下一步干什么。可以理解成围绕 LLM 搭的一个小系统,比如说:

  • 规划任务
  • 执行操作
  • 根据结果调整
  • 循环往复直到搞定

所以不是写死的脚本,更像是个会思考的循环。

不管多复杂的 Agent,都逃不开这四个部分:

1、模型 负责思考

这里用的是Gemini 3 Pro。它可以分析用户需求,决定接下来该做什么。

2、工具 负责执行

就是一堆函数:读文件、列目录、发邮件、调 API…想加什么加什么。

3、上下文工作记忆

模型当前能看到的所有信息,怎么管理这块内容,业内叫Context Engineering

4、循环 运转机制

观察 → 思考 → 行动 → 重复,一直到任务完成。

就这么四块,没别的了。

循环的运行逻辑

几乎所有 Agent 都是这个流程:

先把可用的工具描述给模型看,然后把用户请求和工具定义一起发给模型。模型会做决策:要么直接回复,要么调用某个工具并传参数。

但是你要写代码负责在 Python 里执行这个工具。

执行完把结果喂回给 Gemini。

模型拿到新信息后继续判断下一步。

就这样循环,直到模型觉得任务完成了。

下面我们开始写:

第一步:基础聊天机器人

先写个 Gemini 3 API 的简单封装 ,其实就是个能记住对话的类。

from google import genai from google.genai import types class Agent: def __init__(self, model: str): self.model = model self.client = genai.Client() self.contents = [] def run(self, contents: str): self.contents.append({"role": "user", "parts": [{"text": contents}]}) response = self.client.models.generate_content( model=self.model, contents=self.contents ) self.contents.append(response.candidates[0].content) return response agent = Agent(model="gemini-3-pro-preview") response1 = agent.run( "Hello, what are the top 3 cities in Germany to visit? Only return the names." ) print(response1.text)

上面代码能跑,但是就是个聊天机器人。它啥也干不了,因为没有"手"。

第二步:加入工具函数

工具其实就是 Python 函数 + 一段 JSON schema 描述。描述是给 Gemini 看的,让它知道这个函数能干啥。

这里加三个简单的:

  • read_file- 读文件
  • write_file- 写文件
  • list_dir- 列目录

先写定义:

read_file_definition = { "name": "read_file", "description": "Reads a file and returns its contents.", "parameters": { "type": "object", "properties": { "file_path": {"type": "string"} }, "required": ["file_path"], }, } list_dir_definition = { "name": "list_dir", "description": "Lists the files in a directory.", "parameters": { "type": "object", "properties": { "directory_path": {"type": "string"} }, "required": ["directory_path"], }, } write_file_definition = { "name": "write_file", "description": "Writes contents to a file.", "parameters": { "type": "object", "properties": { "file_path": {"type": "string"}, "contents": {"type": "string"}, }, "required": ["file_path", "contents"], }, }

然后是实际的 Python 实现:

def read_file(file_path: str) -> dict: with open(file_path, "r") as f: return f.read() def write_file(file_path: str, contents: str) -> bool: with open(file_path, "w") as f: f.write(contents) return True def list_dir(directory_path: str) -> list[str]: return os.listdir(directory_path)

打包一下就搞定了:

file_tools = { "read_file": {"definition": read_file_definition, "function": read_file}, "write_file": {"definition": write_file_definition, "function": write_file}, "list_dir": {"definition": list_dir_definition, "function": list_dir}, }

第三步:真正的 Agent

现在把 Agent 类扩展一下,让它能:

  • 识别工具调用
  • 在 Python 里执行对应的函数
  • 把结果传回 Gemini
  • 继续循环直到完成
class Agent: def __init__(self, model: str, tools: dict, system_instruction="You are a helpful assistant."): self.model = model self.client = genai.Client() self.contents = [] self.tools = tools self.system_instruction = system_instruction def run(self, contents): # Add user input to history if isinstance(contents, list): self.contents.append({"role": "user", "parts": contents}) else: self.contents.append({"role": "user", "parts": [{"text": contents}]}) config = types.GenerateContentConfig( system_instruction=self.system_instruction, tools=[types.Tool( function_declarations=[ tool["definition"] for tool in self.tools.values() ] )], ) response = self.client.models.generate_content( model=self.model, contents=self.contents, config=config ) # Save model output self.contents.append(response.candidates[0].content) # If model wants to call tools if response.function_calls: functions_response_parts = [] for tool_call in response.function_calls: print(f"[Function Call] {tool_call}") if tool_call.name in self.tools: result = {"result": self.tools[tool_call.name]["function"](**tool_call.args)} else: result = {"error": "Tool not found"} print(f"[Function Response] {result}") functions_response_parts.append( {"functionResponse": {"name": tool_call.name, "response": result}} ) # Feed tool results back to the model return self.run(functions_response_parts) return response

这样就可以跑一下试试了:

agent = Agent( model="gemini-3-pro-preview", tools=file_tools, system_instruction="You are a helpful Coding Assistant. Respond like Linus Torvalds." ) response = agent.run("Can you list my files in the current directory?") print(response.text)

如果没问题,Gemini 会调工具,拿到结果,然后给出最终回复。

到这一步,一个能用的 Agent 就搭好了。

第四步:包装成命令行工具

最后我们在再套个输入循环就行:

agent = Agent( model="gemini-3-pro-preview", tools=file_tools, system_instruction="You are a helpful Coding Assistant. Respond like Linus Torvalds." ) print("Agent ready. Type something (or 'exit').") while True: user_input = input("You: ") if user_input.lower() in ['exit', 'quit']: break response = agent.run(user_input) print("Linus:", response.text, "\n")

代码很少但是效果已经相当不错了。

总结

搭 Agent 一开始看着挺唬人,但理解了结构之后,会发现简单得有点无聊。往简单了说,它就是个循环。一个里面跑着聪明模型的循环。明白这点之后,你就能造出看起来"有生命"的 Agent 了。

如果想继续扩展的话,可以加这些:

网络搜索、数据库查询、执行 shell 命令、调用云服务、长期记忆、工作流编排、任务调度、多步规划…

但不管怎么加,底层还是那个简单结构:

观察 → 思考 → 行动 → 重复

这就是现代 Agent 的核心。

如何学习AI大模型?

大模型时代,火爆出圈的LLM大模型让程序员们开始重新评估自己的本领。 “AI会取代那些行业?”“谁的饭碗又将不保了?”等问题热议不断。

不如成为「掌握AI工具的技术人」,毕竟AI时代,谁先尝试,谁就能占得先机!

想正式转到一些新兴的 AI 行业,不仅需要系统的学习AI大模型。同时也要跟已有的技能结合,辅助编程提效,或上手实操应用,增加自己的职场竞争力。

但是LLM相关的内容很多,现在网上的老课程老教材关于LLM又太少。所以现在小白入门就只能靠自学,学习成本和门槛很高

那么针对所有自学遇到困难的同学们,我帮大家系统梳理大模型学习脉络,将这份LLM大模型资料分享出来:包括LLM大模型书籍、640套大模型行业报告、LLM大模型学习视频、LLM大模型学习路线、开源大模型学习教程等, 😝有需要的小伙伴,可以扫描下方二维码领取🆓↓↓↓

学习路线

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

👉获取方式:
😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1118624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PLC跟另外的PLC、智能仪表数据交互的几种方式(1)

PLC通讯智能网关模块包含IGT-SER、IGT-DSER、IGT-WSER等多种型号,支持西门子、罗克韦尔AB,以及三菱、欧姆龙、倍福(BECKHOFF)等各种品牌的PLC之间通讯,也支持PLC与Modbus协议的工业机器人、智能仪表、变频器等设备通讯。网关有多个网口、串口…

网络运维和网络安全运维虽然同属IT领域,但存在显著差异,从零基础入门到精通,收藏这一篇就够了!

网络运维和网络安全运维虽然同属IT领域,但存在显著差异 网络运维和网络安全运维虽然同属IT领域,但存在显著差异。以下从技术侧重点、核心职责、技能要求及就业前景等方面进行对比分析。 行业趋势: 一、技术维度对比分析 网络运维&#xff…

还在用公共仓库?3个理由让你立刻搭建Docker私有仓库

第一章:Docker私有仓库的核心价值在企业级容器化部署中,镜像的管理与分发效率直接影响开发与运维流程的稳定性。Docker私有仓库作为内部镜像存储中心,提供了安全、可控且高效的镜像分发机制,是构建私有云和混合云架构的重要基础设…

多家媒体测评:2026年最新招聘管理系统口碑TOP10重磅发布!

时光荏苒,2025 年已悄然落幕。回望这一年,中国企业数字化转型迈入深水区,招聘作为企业人才战略的核心环节,其数字化、智能化水平迎来质的飞跃。在市场竞争日趋激烈、人才争夺愈发白热化的背景下,企业对招聘管理系统的需…

JS远程下载文件流自定义文件名保存本地

const saveBlob = (blob: Blob, filename: string) => {const url = window.URL.createObjectURL(blob);const link = document.createElement(a);link.href = url;link.setAttribute(download, filename); // 自定…

模型解释性增强:用自然语言描述黑箱内部运作

模型解释性增强:用自然语言描述黑箱内部运作 在当前AI系统日益深入教育、科研与工程实践的背景下,一个根本性问题正被越来越多开发者和研究者关注:我们是否真的“理解”模型是如何得出结论的?尤其在数学推导、算法设计这类高精度推…

数字记忆守护者:GetQzonehistory如何重塑我们的社交数据遗产

数字记忆守护者:GetQzonehistory如何重塑我们的社交数据遗产 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory 在信息爆炸的时代,我们每天都在创造海量的数字记忆&…

经营分析必看,如何撰写经营分析报告(附模板)

微信公众号:木木自由,更多数据分析,经营分析、财务分析、商业分析、数据治理、数据要素、数据资产干货以及资料分享在企业管理的日常工作里,经营分析报告是反映企业运营状况的重要工具。一份好的经营分析报告,能为企业…

体积表面电阻率测试仪哪家价格便宜?2025年度实力厂家排名 - 品牌推荐大师

随着中国新材料、高端装备制造及“双碳”战略的深入推进,体积电阻率测定仪作为绝缘材料性能检测的关键设备,其市场需求正迎来结构性增长。2026至2030年,中国体积电阻率测定仪市场预计将以年均复合增长率约7.2%至8.5…

NBTExplorer黑科技秘籍:5分钟成为Minecraft数据编辑大师

NBTExplorer黑科技秘籍:5分钟成为Minecraft数据编辑大师 【免费下载链接】NBTExplorer A graphical NBT editor for all Minecraft NBT data sources 项目地址: https://gitcode.com/gh_mirrors/nb/NBTExplorer 还在为Minecraft存档数据混乱而烦恼吗&#xf…

Git工作树在Docker环境中的应用,99%开发者忽略的关键细节

第一章:Git工作树在Docker环境中的核心价值在持续集成与持续部署(CI/CD)流程中,Git工作树与Docker容器的协同运作成为提升开发效率和部署稳定性的关键技术。通过将Git工作树挂载到Docker容器中,开发者能够在隔离环境中…

Docker + eBPF 部署避坑指南(99%新手都会忽略的8个关键细节)

第一章:Docker eBPF 技术融合的背景与挑战容器化技术的快速发展推动了 Docker 成为企业级应用部署的核心工具。与此同时,eBPF(extended Berkeley Packet Filter)作为 Linux 内核的一项革命性技术,能够在不修改内核源码…

必看!2025年拖链电缆意向厂家排行榜,耐火电缆如何选择 - 百誉集团

本文将围绕2025年拖链电缆制造商进行深入分析,帮助您快速了解各个公司的优势和特点。通过对四川新超、沧州会友、内蒙古金乐达、豪迈科技及哈尔滨跃龙等五家公司的比较,我们能更清晰地看到在拖链电缆行业中的不同表现…

羧基化Fe3O4磁性纳米颗粒(100nm),Fe3O4-COOH磁性纳米颗粒(100nm),氨基化Fe3O4磁性纳米颗粒

羧基化Fe3O4磁性纳米颗粒(100nm),Fe3O4-COOH磁性纳米颗粒(100nm),氨基化Fe3O4磁性纳米颗粒Fe3O4 磁性纳米颗粒(Magnetite nanoparticles, MNPs)是一类常用的磁性功能材料&#xff0c…

面试问题预测机:根据公司风格生成高频考题

面试问题预测机:根据公司风格生成高频考题 在技术求职竞争日益激烈的今天,刷题早已成为程序员的“必修课”。但面对 LeetCode 上动辄上千道题目,很多人陷入了一个尴尬境地:刷得不少,命中率却不高。为什么?因…

2026年中国航空机库门市场竞争格局与核心企业分析报告 - 深度智识库

根据QYResearch的行业调研数据,2025年全球航空机库门市场规模约为0.14亿美元,市场呈现稳定增长态势。在中国市场,随着低空经济被定位为国家战略性新兴产业以及航空基础设施的持续升级,航空机库门行业正从满足基本功…

实用指南:网络编程套接字

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

AI Agent输出质量不稳定?揭秘自我优化技巧,让AI Agent自己“回头看”,提升性能!

简介 反思模式(Reflection Pattern)通过Producer-Critic模型实现AI Agent的自我评估与迭代优化,将一次性输出升级为迭代改进。该方法适用于代码生成、内容创作、数据分析等场景,通过职责分离避免认知偏见,设置合理的迭代上限和停止条件&…

CAS号:855751-82-5,CO荧光探针,一氧化碳荧光探针

CAS号:855751-82-5,CO荧光探针,一氧化碳荧光探针CAS号 855751-82-5 的 CO 荧光探针是一类专门用于检测一氧化碳(CO)的功能分子,能够通过荧光信号的变化实现对 CO 的高灵敏检测。这类探针在化学生物学研究中…

【收藏必备】从零开始学RAG:嵌入模型如何提升大模型应用效果

Augmented Generation(RAG)眼下是构建生成式 AI 应用最火热的框架。企业和组织之所以钟爱它,是因为它能利用自身的专有数据来回答用户问题,使得大模型给出的答案更准确、最新且与问题高度相关。 根据我构建 RAG 应用的经验&#x…