🎁个人主页:我滴老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。接下来可以探索的方向:
- 多轮对话记忆— 添加长期记忆,让Agent记住之前的对话
- RAG检索增强— 让Agent能查询你的私有文档
- 多Agent协作— 多个Agent分工合作完成复杂任务
- ReAct模式— 让Agent学会"推理-行动"交替循环
本文代码已在 Python 3.10+ 环境下测试通过。完整代码可在文末获取。