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



文章目录:
Python入门:从零开始写你的第一个AI智能体,30分钟搞定!
你是否想过,用不到100行Python代码,就能打造一个能自动思考、自主决策的AI智能体?这篇文章带你从零开始,一步步实现!
一、什么是AI智能体(Agent)?
在人工智能领域,Agent(智能体) 是一个能够感知环境、自主思考并采取行动的程序。与传统程序不同,Agent具备以下核心特征:
| 特征 | 传统程序 | AI Agent |
|---|---|---|
| 决策方式 | 预设规则 | 自主推理 |
| 环境感知 | 被动接收输入 | 主动获取信息 |
| 行动能力 | 固定流程 | 灵活调用工具 |
| 学习能力 | 无 | 可反馈优化 |
| 适应性 | 特定场景 | 通用任务 |
简单来说,如果说传统程序是一个"执行命令的士兵",那么AI Agent就是一个"能独立思考的将军"。
二、环境准备
在开始编码之前,请确保你的电脑已经安装好以下环境:
# 安装Python(建议3.10+)
python --version
# 创建虚拟环境
python -m venv agent_env
source agent_env/bin/activate # Windows用: agent_env\Scripts\activate
# 安装必要的库
pip install openai
你需要一个OpenAI API Key(或其他兼容的大模型API),可以在 OpenAI官网 申请。
三、最小Agent架构:感知-思考-行动
一个最简单的Agent由三个核心部分组成:
┌─────────────┐
│ 感知环境 │ ← 接收用户输入 / 获取外部信息
└──────┬──────┘
▼
┌─────────────┐
│ 思考推理 │ ← 大模型分析、规划、决策
└──────┬──────┘
▼
┌─────────────┐
│ 采取行动 │ ← 调用工具、返回结果
└─────────────┘
让我们用代码实现这个循环:
import json
from openai import OpenAI
class SimpleAgent:
"""一个最简的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助手。你可以帮助用户回答问题。"
}
]
def perceive(self, user_input: str) -> None:
"""感知:接收用户输入"""
self.messages.append({"role": "user", "content": user_input})
def think(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})
return reply
def act(self, user_input: str) -> str:
"""行动:完整的感知-思考-行动循环"""
self.perceive(user_input)
return self.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添加计算器和天气查询功能:
import json
from openai import OpenAI
# 定义工具函数
def calculator(expression: str) -> str:
"""安全计算数学表达式"""
try:
allowed = set("0123456789+-*/.() ")
if all(c in allowed for c in expression):
return str(eval(expression))
return "错误:表达式包含非法字符"
except Exception as e:
return f"计算错误:{e}"
def get_weather(city: str) -> str:
"""模拟天气查询(实际项目中调用真实API)"""
weather_db = {
"北京": "晴天,25°C",
"上海": "多云,28°C",
"深圳": "小雨,30°C",
"成都": "阴天,22°C",
}
return weather_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,
}
class ToolAgent:
"""带工具调用能力的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助手,可以帮用户计算和查询天气。"}
]
def run(self, user_input: str) -> str:
"""运行Agent主循环"""
self.messages.append({"role": "user", "content": user_input})
while True:
# 思考:调用大模型
response = self.client.chat.completions.create(
model=self.model,
messages=self.messages,
tools=tools,
tool_choice="auto"
)
msg = response.choices[0].message
# 如果模型想调用工具
if msg.tool_calls:
self.messages.append(msg)
for tool_call in msg.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)
return msg.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+ 环境下测试通过。完整代码可在文末获取。
更多推荐



所有评论(0)