AI Agent 工程师入门指南:从原理到实战
1. 什么是 AI AgentAI Agent智能体是一种能够感知环境、做出决策并执行动作的智能系统。与传统的大语言模型LLM不同Agent 不仅仅是生成文本它能够调用工具、访问外部数据、规划任务步骤并在多轮交互中自主完成复杂目标。一个典型的 AI Agent 通常包含以下核心组件大语言模型LLM作为推理和决策的“大脑”负责理解用户意图、生成计划和回复。工具调用Tool CallingAgent 通过调用外部 API、数据库、搜索引擎或代码解释器来获取信息和执行操作。记忆Memory包括短期记忆对话上下文和长期记忆向量数据库、知识库用于跨会话保持状态。规划Planning将复杂任务拆解为多个子步骤并决定执行顺序。执行与反馈Execution Feedback执行动作后观察结果并根据反馈调整下一步策略。简单来说LLM 是“会说话的模型”而 Agent 是“会做事的系统”。2. 环境准备在开始编写 Agent 之前需要准备好开发环境。推荐使用 Python 3.10 及以上版本并安装必要的依赖库。# 创建虚拟环境 python -m venv agent_env source agent_env/bin/activate # Windows 下使用 agent_env\Scripts\activate 安装核心依赖 pip install openai langchain langchain-openai python-dotenv 验证安装 python -c import openai; print(OpenAI SDK 版本:, openai.version)接下来在项目根目录创建.env文件存放 API 密钥OPENAI_API_KEYsk-your-api-key-here OPENAI_BASE_URLhttps://api.openai.com/v1使用python-dotenv加载环境变量from dotenv import load_dotenv import os load_dotenv() api_key os.getenv(OPENAI_API_KEY) base_url os.getenv(OPENAI_BASE_URL) print(API Key 已加载:, bool(api_key))3. 第一个 Agent调用工具工具调用Function Calling是 Agent 的核心能力。下面我们实现一个简单的天气查询 Agent它能够根据用户输入的城市名称调用天气 API。首先定义一个模拟的天气查询函数import json import random def get_weather(city: str) - str: 模拟查询城市天气 weather_data { 北京: {温度: 25, 天气: 晴}, 上海: {温度: 28, 天气: 多云}, 广州: {温度: 30, 天气: 小雨}, } if city in weather_data: data weather_data[city] return json.dumps({城市: city, **data}, ensure_asciiFalse) return json.dumps({错误: f未找到城市 {city} 的天气数据}, ensure_asciiFalse)然后定义工具描述并让模型决定何时调用from openai import OpenAI client OpenAI(api_keyapi_key, base_urlbase_url) tools [ { type: function, function: { name: get_weather, description: 查询指定城市的实时天气, parameters: { type: object, properties: { city: {type: string, description: 城市名称如北京、上海} }, required: [city] } } } ] def run_agent(user_input: str): messages [{role: user, content: user_input}] response client.chat.completions.create( modelgpt-4o, messagesmessages, toolstools, tool_choiceauto ) assistant_message response.choices[0].message 如果模型决定调用工具 if assistant_message.tool_calls: for tool_call in assistant_message.tool_calls: if tool_call.function.name get_weather: args json.loads(tool_call.function.arguments) result get_weather(args[city]) messages.append(assistant_message) messages.append({ role: tool, tool_call_id: tool_call.id, content: result }) # 将工具结果返回给模型生成最终回复 final_response client.chat.completions.create( modelgpt-4o, messagesmessages ) return final_response.choices[0].message.content return assistant_message.content 测试 print(run_agent(北京今天天气怎么样))运行上述代码Agent 会自动识别需要调用get_weather工具获取天气数据后生成自然语言回复。4. 使用 LangChain 构建 AgentLangChain 提供了更高层的抽象让 Agent 开发更加便捷。下面使用 LangChain 的create_tool_calling_agent构建一个支持多工具的 Agent。from langchain_openai import ChatOpenAI from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.tools import tool from langchain_core.prompts import ChatPromptTemplate 初始化模型 llm ChatOpenAI( modelgpt-4o, api_keyapi_key, base_urlbase_url, temperature0 ) 定义工具 tool def add(a: float, b: float) - float: 计算两个数字的和 return a b tool def multiply(a: float, b: float) - float: 计算两个数字的乘积 return a * b tool def get_weather(city: str) - str: 查询城市天气 weather_map {北京: 晴 25°C, 上海: 多云 28°C} return weather_map.get(city, 暂无数据) 创建提示模板 prompt ChatPromptTemplate.from_messages([ (system, 你是一个乐于助人的 AI 助手可以调用工具来完成任务。), (human, {input}), (placeholder, {agent_scratchpad}) ]) 创建 Agent tools [add, multiply, get_weather] agent create_tool_calling_agent(llm, tools, prompt) agent_executor AgentExecutor(agentagent, toolstools, verboseTrue) 运行 Agent result agent_executor.invoke({input: 北京天气怎么样顺便算一下 23 乘以 4 等于多少}) print(result[output])LangChain 自动处理了工具调用的循环逻辑包括多轮工具调用、错误处理和结果汇总大大简化了开发流程。5. 为 Agent 添加记忆记忆能力让 Agent 能够记住对话历史实现多轮交互。LangChain 提供了多种记忆实现下面演示使用ConversationBufferMemory和向量数据库实现短期与长期记忆。5.1 短期记忆对话缓冲from langchain.memory import ConversationBufferMemory from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.prompts import ChatPromptTemplate memory ConversationBufferMemory( memory_keychat_history, return_messagesTrue ) prompt ChatPromptTemplate.from_messages([ (system, 你是一个有帮助的助手。), (placeholder, {chat_history}), (human, {input}), (placeholder, {agent_scratchpad}) ]) agent create_tool_calling_agent(llm, tools, prompt) agent_executor AgentExecutor( agentagent, toolstools, memorymemory, verboseTrue ) 第一轮对话 agent_executor.invoke({input: 我叫小明请记住我的名字。}) 第二轮对话Agent 能记住用户名字 result agent_executor.invoke({input: 我叫什么名字}) print(result[output])5.2 长期记忆向量数据库对于跨会话的长期记忆可以使用向量数据库存储和检索信息。下面使用 Chroma 作为向量存储pip install chromadb langchain-communityfrom langchain_openai import OpenAIEmbeddings from langchain_community.vectorstores import Chroma from langchain.text_splitter import CharacterTextSplitter 初始化嵌入模型 embeddings OpenAIEmbeddings( api_keyapi_key, base_urlbase_url, modeltext-embedding-3-small ) 创建向量数据库 vectorstore Chroma( collection_nameagent_memory, embedding_functionembeddings, persist_directory./chroma_db ) 存储记忆 def save_memory(content: str): 将重要信息存入长期记忆 vectorstore.add_texts([content]) vectorstore.persist() def retrieve_memory(query: str, k: int 3) - list: 检索相关记忆 results vectorstore.similarity_search(query, kk) return [doc.page_content for doc in results] 示例保存用户偏好 save_memory(用户小明喜欢简洁的回答风格偏好 Python 技术栈。) save_memory(用户小明的项目是电商平台使用 Django 框架。) 检索记忆 memories retrieve_memory(用户喜欢什么技术栈) print(检索到的记忆:, memories)6. Agent 规划能力ReAct 模式ReActReasoning Acting是一种经典的 Agent 规划模式它让模型交替进行“思考”和“行动”从而解决复杂问题。LangChain 的create_react_agent实现了这一模式。from langchain.agents import create_react_agent, AgentExecutor from langchain_core.prompts import PromptTemplate react_prompt PromptTemplate.from_template( 你是一个智能助手请按照以下步骤解决问题 问题{input} 请逐步思考 分析问题需要哪些信息 决定调用哪个工具 根据工具结果继续推理 可用工具 {tools} 工具名称列表{tool_names} 思考过程{agent_scratchpad} ) react_agent create_react_agent(llm, tools, react_prompt) react_executor AgentExecutor( agentreact_agent, toolstools, verboseTrue, max_iterations5 # 限制最大迭代次数防止死循环 ) result react_executor.invoke({ input: 计算 (15 27) * 3 的结果并查询上海的天气 }) print(result[output])ReAct 模式的核心优势在于可解释性每一步推理过程都可以被追踪和审计便于调试和优化。7. 实战构建一个数据分析 Agent下面综合运用前面所学构建一个能够读取 CSV 文件、执行数据分析并生成报告的多工具 Agent。import pandas as pd import json from langchain_openai import ChatOpenAI from langchain.agents import create_tool_calling_agent, AgentExecutor from langchain_core.tools import tool from langchain_core.prompts import ChatPromptTemplate 模拟销售数据 data { 月份: [1月, 2月, 3月, 4月, 5月, 6月], 销售额: [12000, 15000, 13000, 18000, 22000, 25000], 订单数: [300, 380, 320, 450, 520, 600] } df pd.DataFrame(data) df.to_csv(sales_data.csv, indexFalse) tool def load_data(file_path: str) - str: 加载 CSV 数据文件并返回基本信息 df pd.read_csv(file_path) info { 列名: list(df.columns), 行数: len(df), 数据预览: df.head(3).to_dict(orientrecords) } return json.dumps(info, ensure_asciiFalse) tool def calculate_statistics(column: str) - str: 计算指定列的统计指标均值、最大值、最小值 df pd.read_csv(sales_data.csv) if column not in df.columns: return f列 {column} 不存在 stats { 列: column, 均值: float(df[column].mean()), 最大值: float(df[column].max()), 最小值: float(df[column].min()) } return json.dumps(stats, ensure_asciiFalse) tool def find_best_month() - str: 找出销售额最高的月份 df pd.read_csv(sales_data.csv) best_idx df[销售额].idxmax() return json.dumps({ 最佳月份: df.loc[best_idx, 月份], 销售额: float(df.loc[best_idx, 销售额]) }, ensure_asciiFalse) 创建 Agent analysis_tools [load_data, calculate_statistics, find_best_month] analysis_llm ChatOpenAI(modelgpt-4o, api_keyapi_key, base_urlbase_url) prompt ChatPromptTemplate.from_messages([ (system, 你是一个数据分析助手使用工具分析销售数据并给出专业结论。), (human, {input}), (placeholder, {agent_scratchpad}) ]) agent create_tool_calling_agent(analysis_llm, analysis_tools, prompt) executor AgentExecutor(agentagent, toolsanalysis_tools, verboseTrue) 执行分析任务 result executor.invoke({ input: 请分析 sales_data.csv 的销售数据告诉我哪个月销售额最高以及整体销售趋势如何 }) print(result[output])这个 Agent 能够自主完成数据加载、统计计算、趋势分析并生成一份包含结论的自然语言报告。8. 部署与最佳实践将 Agent 部署到生产环境时需要注意以下几个方面8.1 使用 FastAPI 封装 APIpip install fastapi uvicornfrom fastapi import FastAPI, HTTPException from pydantic import BaseModel import uvicorn app FastAPI(titleAI Agent API) class AgentRequest(BaseModel): input: str session_id: str default class AgentResponse(BaseModel): output: str 全局 Agent 执行器生产环境建议使用连接池 agent_executor None def get_executor(): global agent_executor if agent_executor is None: # 初始化 Agent复用前面的代码 agent_executor create_agent_executor() return agent_executor app.post(/agent, response_modelAgentResponse) async def run_agent(request: AgentRequest): try: executor get_executor() result executor.invoke({input: request.input}) return AgentResponse(outputresult[output]) except Exception as e: raise HTTPException(status_code500, detailstr(e)) app.get(/health) async def health_check(): return {status: ok} if name main: uvicorn.run(app, host0.0.0.0, port8000)8.2 最佳实践清单限制迭代次数设置max_iterations防止 Agent 陷入死循环。错误处理为每个工具添加异常捕获返回友好的错误信息。日志记录记录每次工具调用的输入输出便于审计和调试。安全控制对工具权限进行严格管理避免 Agent 执行危险操作。成本控制使用max_tokens限制输出长度合理选择模型规格。缓存机制对频繁查询的结果进行缓存降低 API 调用成本。并发处理使用异步框架如 FastAPI处理高并发请求。9. 总结与进阶方向本文从零开始介绍了 AI Agent 的核心概念、开发环境和实战案例。通过工具调用、记忆管理、规划模式和部署实践你已经掌握了构建一个生产级 Agent 的基础能力。接下来可以继续探索以下进阶方向多 Agent 协作使用 LangGraph 构建多个 Agent 协同工作的复杂系统。RAG 增强结合检索增强生成让 Agent 访问私有知识库。多模态 Agent支持图像、音频、视频等多模态输入输出。自主规划框架研究 AutoGPT、BabyAGI 等自主 Agent 的规划策略。评估与优化建立 Agent 的自动化评估体系持续优化提示词和工具设计。AI Agent 是当前人工智能领域最具潜力的方向之一掌握这项技术将为你的职业发展打开新的空间。建议从简单的工具调用开始逐步构建复杂的多工具、多记忆、多规划能力的 Agent 系统在实践中不断积累经验。

相关新闻

智算中心供电方案:从兆瓦级UPS到预制化电力模块的架构演进与选型实践

智算中心供电方案:从兆瓦级UPS到预制化电力模块的架构演进与选型实践

AI大模型参数规模的持续膨胀,正将单机柜功率密度从传统的5-8kW推向40kW乃至100kW以上。万卡级GPU集群对供电连续性和电能质量的要求达到前所未有的高度。在此背景下,智算中心供电方案已不再是简单的容量堆叠,而是涉及架构选型、设备集成、交付…

2026/8/1 0:40:23阅读更多 →
数据中心固态变压器:AI算力时代供电架构的底层重构

数据中心固态变压器:AI算力时代供电架构的底层重构

2025年全国算力中心总用电量达1700亿千瓦时,占全社会用电量的1.6%。当单个智算中心的机柜功率密度从传统的6-8kW跃升至30kW乃至50kW以上,GPU集群的瞬时功率波动可达数百兆瓦级别,传统"工频变压器UPS"的供电架构正在逼近其物理极限。…

2026/8/1 0:40:23阅读更多 →
2026客厅投影仪白天清晰吗?客厅投影仪推荐性价比之王

2026客厅投影仪白天清晰吗?客厅投影仪推荐性价比之王

客厅选投影,跟卧室完全是两套逻辑。卧室关灯拉帘看就行,客厅白天采光足、环境光杂,选错了就是白墙一片灰。先把结论撂这儿:两千元出头这个价位,客厅场景最均衡的选择是哈趣K3 Ultra Max——1580CVIA真实亮度、25000:1动…

2026/8/1 0:40:23阅读更多 →
低轨卫星为什么寿命只有3~5年,为什么要不断持续发射补充

低轨卫星为什么寿命只有3~5年,为什么要不断持续发射补充

简单来说,短寿命设计和持续发射补充是主动选择、被动因素和技术经济规律共同作用的结果。下面我为你详细解析。🛰️ 一、低轨卫星寿命为何普遍较短(3~5年)?低轨卫星(LEO)的寿命受多种因素制约&a…

2026/8/1 1:54:46阅读更多 →
SAP认证全解析:从核心模块到技术路径的职业发展指南

SAP认证全解析:从核心模块到技术路径的职业发展指南

1. 项目概述:SAP认证的价值与生态位如果你在ERP、企业信息化或者财务、供应链、生产制造这些领域工作,那么“SAP”和“SAP认证”这两个词,你大概率已经听过无数次了。它们就像行业里的“硬通货”和“敲门砖”,但具体是什么、怎么用…

2026/8/1 1:54:46阅读更多 →
Android应用使用时长统计:基于UsageStatsManager的完整实现指南

Android应用使用时长统计:基于UsageStatsManager的完整实现指南

1. 项目概述:为什么我们需要统计应用使用时长?在Android开发中,尤其是涉及数字健康、家长控制、应用分析或设备管理类的项目时,一个非常核心的需求就是:精确地知道用户在各个应用上花费了多少时间,以及打开…

2026/8/1 1:54:46阅读更多 →
先进化大脑,再塑造形体:智能机器人的五层进阶之路

先进化大脑,再塑造形体:智能机器人的五层进阶之路

在人工智能飞速普及的当下,各类智能机器人已逐步走进大众生活与各行各业,覆盖情感陪伴、家庭服务、场景劳作等多重领域。本文所探讨的机器人,绝非狭义的陪伴机器人,而是覆盖全层级、全场景的人工智能机器体系。纵观行业发展&#…

2026/8/1 1:54:46阅读更多 →
Unity小地图系统开发:从核心原理到性能优化的完整指南

Unity小地图系统开发:从核心原理到性能优化的完整指南

1. 项目概述:从“小地图”到“大世界”的窗口在游戏开发中,尤其是开放世界、RPG、MOBA或战术竞技类游戏,玩家屏幕角落那个不起眼的小地图,其重要性往往超乎想象。它不仅仅是方向指引,更是战场态势感知、资源定位和团队…

2026/8/1 1:54:46阅读更多 →
Spring Boot企业级事务管理实战与优化

Spring Boot企业级事务管理实战与优化

1. 企业级事务设计的核心挑战在Spring Boot企业级应用开发中,事务管理就像建筑中的承重墙,看似基础却决定了整个系统的稳定性。我经历过多个日活百万级的电商和金融项目,90%的生产事故都源于事务设计缺陷。以下是典型问题场景:支付…

2026/8/1 1:52:45阅读更多 →
覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

覆盖国产 + 海外 + 开源模型,OpenClaw 2.7.9 Windows/Mac 双端部署详解

🔹 工具基础介绍 OpenClaw 是开源生态中一款实用性较强的本地智能工具,凭借本地离线运行、可视化图形操作和任务自动化三大核心特性,赢得了众多用户的青睐。与普通在线对话AI工具不同,它属于能够直接操控本机软硬件的智能数字员工…

2026/7/31 20:44:05阅读更多 →
伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

伺服阀焊完微漏毁整机?精密激光焊接三关锁住高压

所谓液压伺服阀体的精密激光焊接,是用激光束对阀座壳体(通常为不锈钢或铝合金)进行密封焊接,使阀体在21-35MPa的高压液压油或压缩气体中长期运行而不发生介质泄漏。液压伺服阀是高端液压系统的"大脑"。从航空航天飞行控…

2026/7/31 17:41:43阅读更多 →
D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南

D2DX:三步实现《暗黑破坏神2》高清宽屏体验的终极指南 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是否还在…

2026/7/31 20:44:05阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →
无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理

无损视频剪辑终极指南:如何实现快速高效的多媒体处理 【免费下载链接】lossless-cut The swiss army knife of lossless video/audio editing 项目地址: https://gitcode.com/gh_mirrors/lo/lossless-cut 在数字媒体创作领域,视频编辑处理的质量损…

2026/8/1 0:00:10阅读更多 →
AI辅助本科论文写作:8大工具评测与高效使用指南

AI辅助本科论文写作:8大工具评测与高效使用指南

1. 本科生论文写作的AI辅助现状本科毕业论文是每个大学生必须跨越的一道坎。记得我当年写论文时,光是文献检索就花了整整两周时间,打印的参考文献堆满了半个书桌。如今AI技术的发展为学术写作带来了革命性变化,合理使用这些工具可以节省80%以…

2026/8/1 0:00:10阅读更多 →
如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手

如何快速配置大麦自动抢票系统:从零开始搭建Python抢票助手 【免费下载链接】ticket-purchase 大麦自动抢票,支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 还在为抢不到热门演唱会门票…

2026/8/1 0:00:10阅读更多 →