news 2026/6/13 21:34:57

Python入门:从零开始写你的第一个AI智能体,30分钟搞定!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python入门:从零开始写你的第一个AI智能体,30分钟搞定!

🎁个人主页:我滴老baby
🎉欢迎大家点赞👍评论📝收藏⭐文章
🔍系列专栏:AI



文章目录:

  • Python入门:从零开始写你的第一个AI智能体,30分钟搞定!
    • 一、什么是AI智能体(Agent)?
    • 二、环境准备
    • 三、最小Agent架构:感知-思考-行动
    • 四、给Agent装上"工具箱"
    • 五、Agent核心循环总结
    • 六、下一步学习方向

Python入门:从零开始写你的第一个AI智能体,30分钟搞定!

你是否想过,用不到100行Python代码,就能打造一个能自动思考、自主决策的AI智能体?这篇文章带你从零开始,一步步实现!

一、什么是AI智能体(Agent)?

在人工智能领域,Agent(智能体)是一个能够感知环境、自主思考并采取行动的程序。与传统程序不同,Agent具备以下核心特征:

特征传统程序AI Agent
决策方式预设规则自主推理
环境感知被动接收输入主动获取信息
行动能力固定流程灵活调用工具
学习能力可反馈优化
适应性特定场景通用任务

简单来说,如果说传统程序是一个"执行命令的士兵",那么AI Agent就是一个"能独立思考的将军"。

二、环境准备

在开始编码之前,请确保你的电脑已经安装好以下环境:

# 安装Python(建议3.10+)python--version# 创建虚拟环境python-mvenv agent_envsourceagent_env/bin/activate# Windows用: agent_env\Scripts\activate# 安装必要的库pipinstallopenai

你需要一个OpenAI API Key(或其他兼容的大模型API),可以在 OpenAI官网 申请。

三、最小Agent架构:感知-思考-行动

一个最简单的Agent由三个核心部分组成:

┌─────────────┐ │ 感知环境 │ ← 接收用户输入 / 获取外部信息 └──────┬──────┘ ▼ ┌─────────────┐ │ 思考推理 │ ← 大模型分析、规划、决策 └──────┬──────┘ ▼ ┌─────────────┐ │ 采取行动 │ ← 调用工具、返回结果 └─────────────┘

让我们用代码实现这个循环:

importjsonfromopenaiimportOpenAIclassSimpleAgent:"""一个最简的AI智能体"""def__init__(self,api_key:str,model:str="gpt-4o-mini"):self.client=OpenAI(api_key=api_key)self.model=model self.messages=[{"role":"system","content":"你是一个有用的AI助手。你可以帮助用户回答问题。"}]defperceive(self,user_input:str)->None:"""感知:接收用户输入"""self.messages.append({"role":"user","content":user_input})defthink(self)->str:"""思考:调用大模型进行推理"""response=self.client.chat.completions.create(model=self.model,messages=self.messages,temperature=0.7)reply=response.choices[0].message.content self.messages.append({"role":"assistant","content":reply})returnreplydefact(self,user_input:str)->str:"""行动:完整的感知-思考-行动循环"""self.perceive(user_input)returnself.think()# 使用示例if__name__=="__main__":agent=SimpleAgent(api_key="your-api-key-here")# 第一轮对话reply=agent.act("你好,请用一句话介绍什么是AI Agent")print(f"Agent:{reply}")# 第二轮对话(Agent有记忆)reply=agent.act("请展开详细解释你刚才说的内容")print(f"Agent:{reply}")

运行结果示例:

Agent: AI Agent(智能体)是一个能够自主感知环境、做出决策并采取行动以实现特定目标的人工智能系统。 Agent: 当然!刚才我提到AI Agent能感知环境、做决策、采取行动。具体来说...

四、给Agent装上"工具箱"

真正的Agent不仅仅是聊天,它还能调用工具。让我们给Agent添加计算器和天气查询功能:

importjsonfromopenaiimportOpenAI# 定义工具函数defcalculator(expression:str)->str:"""安全计算数学表达式"""try:allowed=set("0123456789+-*/.() ")ifall(cinallowedforcinexpression):returnstr(eval(expression))return"错误:表达式包含非法字符"exceptExceptionase:returnf"计算错误:{e}"defget_weather(city:str)->str:"""模拟天气查询(实际项目中调用真实API)"""weather_db={"北京":"晴天,25°C","上海":"多云,28°C","深圳":"小雨,30°C","成都":"阴天,22°C",}returnweather_db.get(city,f"暂无{city}的天气数据")# 工具定义(告诉大模型有哪些工具可用)tools=[{"type":"function","function":{"name":"calculator","description":"计算数学表达式的结果,例如 '2 + 3 * 4'","parameters":{"type":"object","properties":{"expression":{"type":"string","description":"要计算的数学表达式"}},"required":["expression"]}}},{"type":"function","function":{"name":"get_weather","description":"查询指定城市的天气","parameters":{"type":"object","properties":{"city":{"type":"string","description":"城市名称"}},"required":["city"]}}}]# 工具映射TOOL_MAP={"calculator":calculator,"get_weather":get_weather,}classToolAgent:"""带工具调用能力的AI智能体"""def__init__(self,api_key:str,model:str="gpt-4o-mini"):self.client=OpenAI(api_key=api_key)self.model=model self.messages=[{"role":"system","content":"你是一个有用的AI助手,可以帮用户计算和查询天气。"}]defrun(self,user_input:str)->str:"""运行Agent主循环"""self.messages.append({"role":"user","content":user_input})whileTrue:# 思考:调用大模型response=self.client.chat.completions.create(model=self.model,messages=self.messages,tools=tools,tool_choice="auto")msg=response.choices[0].message# 如果模型想调用工具ifmsg.tool_calls:self.messages.append(msg)fortool_callinmsg.tool_calls:func_name=tool_call.function.name func_args=json.loads(tool_call.function.arguments)print(f" [工具调用]{func_name}({func_args})")# 执行工具result=TOOL_MAP[func_name](**func_args)print(f" [工具结果]{result}")# 把结果告诉模型self.messages.append({"role":"tool","tool_call_id":tool_call.id,"content":str(result)})# 继续循环,让模型基于工具结果生成回复else:# 模型直接回复,结束循环self.messages.append(msg)returnmsg.content# 运行示例if__name__=="__main__":agent=ToolAgent(api_key="your-api-key-here")# 测试计算print("用户: 帮我算一下 (128 + 256) * 3 的结果")reply=agent.run("帮我算一下 (128 + 256) * 3 的结果")print(f"Agent:{reply}\n")# 测试天气查询print("用户: 北京今天天气怎么样?适合出门吗?")reply=agent.run("北京今天天气怎么样?适合出门吗?")print(f"Agent:{reply}")

运行结果:

用户: 帮我算一下 (128 + 256) * 3 的结果 [工具调用] calculator({'expression': '(128 + 256) * 3'}) [工具结果] 1152 Agent: (128 + 256) × 3 的结果是 **1152**。 用户: 北京今天天气怎么样?适合出门吗? [工具调用] get_weather({'city': '北京'}) [工具结果] 晴天,25°C Agent: 北京今天是晴天,气温25°C,非常适合出门!

五、Agent核心循环总结

我们把Agent的运行机制总结成下面这张表:

阶段说明代码对应
感知(Perceive)接收用户输入self.messages.append(user_msg)
思考(Think)调用LLM推理client.chat.completions.create()
决策(Decide)判断是否需要工具msg.tool_calls检查
行动(Act)执行工具函数TOOL_MAP[func_name](**args)
反馈(Feedback)将结果返回模型messages.append(tool_result)
输出(Output)生成最终回复return msg.content

六、下一步学习方向

恭喜你!你已经完成了一个完整的AI Agent。接下来可以探索的方向:

  1. 多轮对话记忆— 添加长期记忆,让Agent记住之前的对话
  2. RAG检索增强— 让Agent能查询你的私有文档
  3. 多Agent协作— 多个Agent分工合作完成复杂任务
  4. ReAct模式— 让Agent学会"推理-行动"交替循环

本文代码已在 Python 3.10+ 环境下测试通过。完整代码可在文末获取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/13 21:34:55

毛利和毛利率到底怎么看?一篇讲透毛利分析的底层逻辑

很多人看生意赚不赚钱,第一反应就是看销售额。这个月卖了100万,比上月多了30万,感觉业绩不错。但真正懂经营的人,不会先问“卖了多少”,而会先问一句:毛利多少?毛利率多少?因为销售额…

作者头像 李华
网站建设 2026/6/13 21:33:55

Linux内核学习17--SPI子系统

1 Linux下SPI子系统简介 关于SPI协议细节,之前写过:总线学习3--SPI_spi a0-CSDN博客 这次就不多写了,这次主要关注Linux下的使用,使用的环境是树莓派5。还是先看图吧,毕竟无图无真相。这个图B格看起来有点高。 不过对…

作者头像 李华
网站建设 2026/6/13 21:27:18

i.MX23引脚复用与GPIO配置实战:从原理到避坑指南

1. 项目概述与核心价值在嵌入式硬件开发中,最基础也最关键的环节之一,就是搞定芯片的引脚。这听起来简单,不就是把线连上吗?但当你面对像i.MX23这样一颗集成了LCD、NAND Flash、多个UART、I2C、PWM等丰富外设的应用处理器时&#…

作者头像 李华
网站建设 2026/6/13 21:24:07

LS2088A SEC队列接口调试寄存器深度解析与实战排查指南

1. 项目概述与核心价值 在嵌入式系统,尤其是网络处理器或安全加速器的开发中,最让人头疼的往往不是算法实现,而是当数据流“卡住”或结果异常时,那种无从下手的茫然。硬件加速引擎就像一个黑盒,你把数据描述符&#xf…

作者头像 李华
网站建设 2026/6/13 21:21:04

CGAL泊松重建实战:从点云到网格,手把手教你用C++代码跑通第一个3D模型

CGAL泊松重建实战:从点云到网格的完整开发指南当我在2019年第一次尝试将Kinect扫描的客厅点云数据转换为三维网格时,经历了整整两周的挫败——编译错误、参数调优、法线方向问题接踵而至。这正是我写下这篇指南的初衷:让后来者能避开那些&quo…

作者头像 李华