程序员必备技能,AI Agent开发入门教程
AI Agent 是能自主调用工具、分步推理并完成多轮任务的程序,不是简单的对话框。
本文面向零基础程序员,用 Python 和 OpenAI API 带你从环境配置到跑通第一个可调用工具的 Agent,全程给出命令和代码,跟着做就能看到结果。
先搞清楚 Agent 和普通脚本的区别
普通脚本按固定流程执行,Agent 会根据大模型返回的决策动态选择下一步动作。
核心循环是:把用户问题发给模型,模型返回“调用某个工具”的指令,程序执行工具并把结果回传,模型再决定继续调用还是给出最终答案。
判断一个程序算不算 Agent,看它是否具备三个要素:大模型负责决策、有可调用的工具函数、能根据执行结果循环推进。
只调用一次 API 返回文本,那只是普通问答。
准备环境与依赖
本教程使用 Python 3.10 以上版本,先确认版本:
python3 --version
创建独立虚拟环境,避免污染系统包:
python3 -m venv agent-env
source agent-env/bin/activate
Windows 下激活命令为 agent-env\Scripts\activate。
安装依赖:
pip install openai python-dotenv
在项目根目录创建 .env 文件存放密钥,不要把密钥写进代码:
OPENAI_API_KEY=你的密钥
密钥在 OpenAI 控制台的 API Keys 页面创建,建议设置用量上限,避免调试时产生意外费用。
写第一个能调用工具的 Agent
新建 agent.py,先加载环境变量和客户端:
import os, json
from dotenv import load_dotenv
from openai import OpenAI
load_dotenv()
client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
定义一个工具函数,比如查询当前时间:
def get_current_time():
from datetime import datetime
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
把工具描述注册给模型,描述要写清楚用途和参数:
tools = [{
"type": "function",
"function": {
"name": "get_current_time",
"description": "获取当前系统时间",
"parameters": {"type": "object", "properties": {}}
}
}]
主循环负责把模型返回的工具调用真正执行:
messages = [{"role": "user", "content": "现在几点了?"}]
while True:
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=messages,
tools=tools
)
msg = resp.choices[0].message
messages.append(msg)
if not msg.tool_calls:
print(msg.content)
break
for call in msg.tool_calls:
result = get_current_time()
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": result
})
运行 python agent.py,终端会输出当前时间。
这段代码已经具备 Agent 的完整循环:模型决定调用工具,程序执行后把结果回传,模型再生成自然语言回答。
常见报错和处理方式
AuthenticationError 一般是密钥未加载或写错,检查 .env 是否和脚本同目录,或改用 export OPENAI_API_KEY=xxx 临时验证。
RateLimitError 表示请求过于频繁或额度不足,等待片刻重试,并在控制台确认账单状态。
模型返回工具名但程序报 KeyError,说明注册的 name 和实际函数名不一致,两者必须完全匹配。
如果模型一直不调用工具,优先检查 description 是否把用途写清楚,描述太模糊时模型会倾向直接回答。
避坑说明
不要把 API 密钥提交到 Git 仓库,.env 要加入 .gitignore。
工具函数里不要执行删除文件、发送请求等危险操作,Agent 会按模型决策调用,建议先做参数校验。
循环要设置最大轮次,比如 for _ in range(10),防止模型反复调用工具导致死循环和费用增加。
模型名称、接口参数可能随官方更新调整,实际以 OpenAI 官方文档和控制台显示为准。
怎么验证 Agent 真的在工作
在工具函数里加一行 print("tool called"),运行时看到输出说明工具被真实执行,而不是模型编造了时间。
把问题改成“明天这个时间提醒我”,观察模型是否继续调用工具或直接回答无法完成,这能帮你判断它的决策边界。
后续可扩展的方向是给 Agent 增加记忆:把历史 messages 持久化到文件或数据库,下次启动时加载,就能实现跨会话的上下文延续。
掌握这套基础结构后,接入搜索、数据库查询等工具只是替换函数体的事情。