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:08 阅读更多 →
数据中心固态变压器:AI算力时代供电架构的底层重构

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

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

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

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

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

2026/8/1 0:40:08 阅读更多 →

最新新闻

为什么Etcher成为开发者制作系统启动盘的首选工具?

为什么Etcher成为开发者制作系统启动盘的首选工具?

为什么Etcher成为开发者制作系统启动盘的首选工具? 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher 如果你曾经尝试过为树莓派安装操作系统&#xff0…

2026/8/1 1:13:17 阅读更多 →
KeyboardChatterBlocker终极指南:彻底解决机械键盘连击问题的高效方案

KeyboardChatterBlocker终极指南:彻底解决机械键盘连击问题的高效方案

KeyboardChatterBlocker终极指南:彻底解决机械键盘连击问题的高效方案 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否…

2026/8/1 1:12:17 阅读更多 →
UPC-A条形码:从编码原理到系统集成的完整实战指南

UPC-A条形码:从编码原理到系统集成的完整实战指南

1. 项目概述:从条形码到数据桥梁如果你在超市收银台、仓库货架或者任何一件商品包装上停留过目光,大概率会看到一串黑白相间的竖条和底部的一排数字。这串看似简单的图形,就是我们今天要深入拆解的“UPC-A”条形码。它绝不仅仅是一个印刷图案…

2026/8/1 1:12:17 阅读更多 →
Wayback Machine网页时光机:三步解决网页消失难题的终极免费方案

Wayback Machine网页时光机:三步解决网页消失难题的终极免费方案

Wayback Machine网页时光机:三步解决网页消失难题的终极免费方案 【免费下载链接】wayback-machine-webextension A web browser extension for Chrome, Firefox, Edge, and Safari 14. 项目地址: https://gitcode.com/gh_mirrors/wa/wayback-machine-webextensio…

2026/8/1 1:12:17 阅读更多 →
Python构建高校职业推荐系统:算法与架构实践

Python构建高校职业推荐系统:算法与架构实践

1. 项目概述高校学生职业推荐系统是一个利用Python技术栈构建的智能匹配平台,旨在解决大学生面临的职业选择困惑。这个系统通过分析学生的专业背景、技能特长、兴趣爱好等多维度数据,结合就业市场动态信息,为学生提供个性化的职业发展建议。我…

2026/8/1 1:12:17 阅读更多 →
上市公司支付宝渗透度数据分析与应用

上市公司支付宝渗透度数据分析与应用

1. 项目背景与数据价值上市公司支付宝渗透度数据(2013-2024)是一份记录中国上市企业移动支付应用情况的珍贵数据集。作为国内最早普及的第三方支付平台,支付宝在企业端的应用程度直接反映了三个关键维度:一是企业数字化转型的进程…

2026/8/1 1:12:17 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

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

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

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