2026/10/1 21:13:18

AI Agent 工程师入门指南:核心概念、代码实战与进阶路线

AI Agent 工程师入门指南:核心概念、代码实战与进阶路线 摘要本文从 AI Agent 的核心概念讲起系统梳理 LLM、工具调用、记忆与规划四大能力并通过可运行的代码示例带你实现单轮 Agent、函数调用 Agent、带记忆的对话 Agent 和 ReAct 推理 Agent最后总结调试评估方法与进阶学习路线适合想成为 AI Agent 工程师的开发者。1. AI Agent 是什么AI Agent 是一种能够自主观察环境、做出决策、执行动作并不断调整策略的智能体。与传统聊天机器人不同它不只是回答一句文本而是围绕一个目标持续运行读取信息、调用工具、记住上下文、规划下一步直到完成用户任务。一个典型的 AI Agent 循环可以抽象为下面四个步骤观察读取用户输入、系统状态、工具返回结果等信息。思考利用大语言模型理解意图并决定下一步怎么做。行动调用函数、查询数据库、发送请求、操作文件或执行代码。反馈把行动结果放回上下文继续循环直到任务完成。例如用户说“帮我查一下北京天气如果明天有雨就提醒我”Agent 不会一次性猜答案而是先调用天气工具再根据返回结果决定是否调用提醒工具。这个“调用工具并解释结果”的能力是 AI Agent 工程师需要重点掌握的核心。2. 核心概念LLM、工具、记忆、规划AI Agent 的底座通常是一个大语言模型但光有模型还不够。一个完整的 Agent 至少包含四块能力能力作用常见实现方式LLM 推理理解自然语言进行逻辑推理与内容生成OpenAI、Claude、DeepSeek、Qwen 等大模型 API工具调用让模型执行搜索、计算、查库、发邮件等真实动作Function Calling、模型上下文协议、自定义 API记忆保存短期对话和长期偏好让多轮协作更稳定消息数组、向量数据库、Redis、MySQL规划分解复杂任务动态决定执行顺序与重试策略ReAct、Plan-and-Execute、多 Agent 协作入门阶段建议先把前三个能力打通让模型会理解、会调用工具、能记住上下文。学完这三个再学习规划与多 Agent就能构建比较完整的智能体系统。3. 技术栈与学习路线AI Agent 工程师通常需要掌握以下技术Python绝大多数 Agent 框架和 AI 生态都以 Python 为主建议熟悉函数、类、类型提示、异步编程。大模型 API至少熟悉一家主流模型服务的 Chat Completions、Function Calling、流式输出与错误处理。Prompt Engineering会写系统提示、结构化输出、少样本示例和防注入约束。数据结构与存储消息队列、SQLite/PostgreSQL、Redis、向量数据库。框架先从原生 SDK 理解底层原理再学习 LangChain、LlamaIndex、AutoGen、CrewAI 等框架。工程能力日志、配置、环境变量、测试、评估、Docker 部署和可观测性。建议学习路线是先跑通一个最简 Agent 循环再实现工具调用、记忆和 ReAct最后用框架复现并对比避免一上来就陷入框架细节。4. 环境准备本文代码基于 Python 3.10 以上版本并依赖 OpenAI SDK。建议使用虚拟环境管理依赖python -m venv venv source venv/bin/activate # Windows 使用 venv\Scripts\activate pip install openai python-dotenv在项目根目录创建.env文件保存你的 API KeyOPENAI_API_KEY你的真实密钥下面的示例为了聚焦 Agent 逻辑会简略环境变量加载过程。实际使用时请勿把密钥提交到版本库。5. 从 0 到 1实现一个最简 Agent 循环先从一个只调用大模型回答问题的基础 Agent 开始。它不调用工具但已经具备 Agent 的核心骨架输入、模型推理、输出。import os from openai import OpenAI client OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def run_agent(prompt: str) - str: messages [{role: user, content: prompt}] response client.chat.completions.create( modelgpt-4o-mini, messagesmessages, temperature0.2, ) return response.choices[0].message.content if __name__ __main__: answer run_agent(请用一句话解释什么是 AI Agent) print(answer)运行这段代码你会得到一句关于 AI Agent 的解释。虽然功能简单但从这里开始后续所有示例都只是在messages和动作处理上做扩展。6. 工具调用让 Agent 会使用函数真正的 Agent 必须能调用外部工具。以查询天气为例我们定义一个天气函数然后通过 Function Calling 让模型在需要时返回函数名和参数。import json import os from openai import OpenAI client OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def get_weather(city: str) - str: # 模拟天气数据实际项目可替换为真实天气 API weather_db { 北京: 晴18 到 26 摄氏度, 上海: 小雨20 到 24 摄氏度, 深圳: 多云24 到 30 摄氏度, } return weather_db.get(city, f暂时没有 {city} 的天气数据) tools [ { type: function, function: { name: get_weather, description: 查询某个城市今天的天气情况, parameters: { type: object, properties: { city: {type: string, description: 城市名称例如北京、上海} }, required: [city], }, }, } ] def run_tool_agent(user_question: str) - str: messages [{role: user, content: user_question}] response client.chat.completions.create( modelgpt-4o-mini, messagesmessages, toolstools, tool_choiceauto, temperature0, ) message response.choices[0].message if not message.tool_calls: return message.content or tool_call message.tool_calls[0] function_name tool_call.function.name arguments json.loads(tool_call.function.arguments) if function_name get_weather: result get_weather(arguments[city]) else: result 未知工具 messages.append(message) messages.append( { role: tool, tool_call_id: tool_call.id, content: result, } ) final_response client.chat.completions.create( modelgpt-4o-mini, messagesmessages, temperature0, ) return final_response.choices[0].message.content if __name__ __main__: print(run_tool_agent(上海今天天气怎么样))这段代码演示了工具调用的完整闭环模型识别需要查天气返回函数名与参数程序执行函数得到真实结果再把结果作为tool消息回传给模型生成最终回答。实际项目中get_weather里可以替换为真实 API 调用。7. 记忆系统多轮对话与长期记忆如果每次请求只发送单条用户消息Agent 会丢失上下文。最简单的记忆就是把完整的messages列表保存在程序里在多轮对话中持续追加。import os from openai import OpenAI client OpenAI(api_keyos.getenv(OPENAI_API_KEY)) system_prompt ( 你是一个 AI Agent 助手。回答尽量简洁并记住用户之前说过的内容。 ) messages [{role: system, content: system_prompt}] def chat_with_memory(user_input: str) - str: messages.append({role: user, content: user_input}) response client.chat.completions.create( modelgpt-4o-mini, messagesmessages, temperature0.3, ) reply response.choices[0].message.content messages.append({role: assistant, content: reply}) return reply if __name__ __main__: print(chat_with_memory(我叫小明我喜欢研究 AI Agent。)) print(chat_with_memory(你还记得我叫什么吗)) print(chat_with_memory(我最喜欢研究什么))运行后第二个问题可以得到“小明”第三个问题能回答“AI Agent”。这就是短期记忆。长期记忆通常需要把对话摘要、用户偏好或关键事实存入数据库和向量库下次启动时重新加载。入门阶段先把多轮消息管理做好即可。8. 规划与推理ReAct 模式实战ReAct 是 Reason Act 的缩写基本思想是让模型交替输出“思考”和“行动”直到得出最终答案。在代码里我们可以用 Function Calling 模拟 ReAct允许模型多次调用工具每次把结果放回上下文继续思考。import json import os from openai import OpenAI client OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def multiply(a: float, b: float) - float: # 模拟一个计算工具实际项目可以是搜索、查库或调用其他服务 return a * b tools [ { type: function, function: { name: multiply, description: 计算两个数字的乘积, parameters: { type: object, properties: { a: {type: number, description: 第一个数字}, b: {type: number, description: 第二个数字}, }, required: [a, b], }, }, } ] def run_react_agent(question: str, max_steps: int 5) - str: messages [ { role: system, content: 你可以使用工具完成用户问题。先判断是否需要工具需要时调用 multiply不需要时直接回答。, }, {role: user, content: question}, ] for step in range(max_steps): response client.chat.completions.create( modelgpt-4o-mini, messagesmessages, toolstools, tool_choiceauto, temperature0, ) message response.choices[0].message if not message.tool_calls: return message.content or 未能给出答案 tool_call message.tool_calls[0] args json.loads(tool_call.function.arguments) if tool_call.function.name multiply: result str(multiply(args[a], args[b])) else: result 未知工具 messages.append(message) messages.append( { role: tool, tool_call_id: tool_call.id, content: result, } ) return 达到最大执行步数任务未完成 if __name__ __main__: print(run_react_agent(请计算 12 乘以 15 等于多少)) print(run_react_agent(你好你是谁))这个示例展示了 ReAct 的核心模型可以在循环中多次调用工具根据前一步结果决定下一步。实际应用中你还可以把搜索、数据库查询、代码执行等工具都注册进去并加入终止条件和异常重试。9. 构建一个完整的 AI Agent 项目天气助手下面把工具调用、记忆和 ReAct 三项能力整合到一个“天气助手”里。用户既可以查询天气也能进行多轮对话模型会自动判断何时调用工具。import json import os from openai import OpenAI client OpenAI(api_keyos.getenv(OPENAI_API_KEY)) def get_weather(city: str) - str: weather_db { 北京: 晴18 到 26 摄氏度, 上海: 小雨20 到 24 摄氏度, 深圳: 多云24 到 30 摄氏度, } return weather_db.get(city, f暂时没有 {city} 的天气数据) tools [ { type: function, function: { name: get_weather, description: 查询某个城市今天的天气情况, parameters: { type: object, properties: { city: {type: string, description: 城市名称例如北京、上海} }, required: [city], }, }, } ] class WeatherAgent: def __init__(self): self.messages [ { role: system, content: 你是一个天气助手。用户询问天气时调用 get_weather如果用户闲聊可以直接回答并记住对方偏好。, } ] def run(self, user_input: str) - str: self.messages.append({role: user, content: user_input}) for _ in range(5): response client.chat.completions.create( modelgpt-4o-mini, messagesself.messages, toolstools, tool_choiceauto, temperature0, ) message response.choices[0].message if not message.tool_calls: self.messages.append({role: assistant, content: message.content}) return message.content or tool_call message.tool_calls[0] args json.loads(tool_call.function.arguments) if tool_call.function.name get_weather: result get_weather(args.get(city, )) else: result 未知工具 self.messages.append(message) self.messages.append( { role: tool, tool_call_id: tool_call.id, content: result, } ) return 超过最大工具调用次数请简化问题后重试 if __name__ __main__: agent WeatherAgent() print(agent.run(上海今天天气怎么样)) print(agent.run(帮我再看看北京呢)) print(agent.run(我平时住在深圳以后默认深圳可以吗))这个项目已经具备一个基础 Agent 的完整能力工具调用、多轮记忆、循环决策。你可以把get_weather替换成真实第三方天气 API并增加更多工具例如新闻搜索、日程提醒、数据库查询等。10. 多 Agent 与进阶方向当单个 Agent 的逻辑变得复杂时可以把任务拆给多个 Agent 协作完成。常见模式包括主从模式一个 Planner Agent 负责拆解任务多个 Worker Agent 负责执行子任务。辩论模式多个 Agent 从不同角度生成答案再由裁判 Agent 汇总和评分。流水线模式每个 Agent 负责一个固定环节前一个 Agent 的输出是后一个 Agent 的输入。工具增强模式把搜索、代码执行、浏览器自动化、文件读写等工具接入 Agent形成更大的自主能力。进阶学习建议关注 Anthropic 的 Model Context Protocol、OpenAI 的 Agent Builder 与 Responses API、LangGraph 的状态图调度、CrewAI 的角色式多 Agent 协作以及 AutoGen 的多智能体对话编程模型。11. 调试、评估与最佳实践AI Agent 的开发难点在于不确定性模型可能选错工具、传错参数、生成多余内容或陷入死循环。工程上需要建立一套评估和观测机制。日志记录记录每一轮模型