从 0 到 1 开发一个 AI Agent:完整实战指南
1. 引言大模型时代AI Agent智能体已经成为最热门的技术方向之一。从简单的聊天机器人到能自主调用工具、规划任务、完成复杂工作的智能助手Agent 正在重塑我们与软件交互的方式。很多开发者想从零开始开发一个属于自己的 AI Agent却常常被各种概念和技术栈搞得一头雾水Agent 到底是什么它和普通的大模型 API 调用有什么区别需要掌握哪些技术从哪里开始写第一行代码这篇文章将带你从 0 到 1 完整走一遍 AI Agent 的开发流程。我会从核心概念讲起逐步拆解 Agent 的架构组成然后手把手带你搭建开发环境、编写核心代码、接入工具调用最后给出一个可运行的完整示例并分享一些进阶优化思路。2. 什么是 AI Agent在动手写代码之前先搞清楚概念。AI Agent 是一个能够感知环境、做出决策并采取行动的智能系统。它不只是简单地一问一答而是能围绕一个目标自主地规划步骤、调用工具、评估结果并在必要时自我纠错直到完成任务。2.1 Agent 与普通 LLM 应用的区别维度普通 LLM 应用AI Agent交互模式单轮问答多轮自主推理与行动能力边界只能生成文本可调用工具、访问外部数据任务处理一次生成规划-执行-观察-再规划的循环自主性低完全依赖用户提示高可自主拆解并完成任务2.2 Agent 的核心能力一个完整的 Agent 通常具备以下四种核心能力规划Planning把复杂任务拆解成可执行的子步骤。记忆Memory记住对话历史、中间结果和长期知识。工具使用Tool Use调用外部 API、数据库、代码解释器等完成实际操作。反思与纠错Reflection根据执行结果评估进展失败时调整策略重试。3. Agent 的架构组成理解了概念之后我们来看一个典型 Agent 的架构。它通常由以下几个核心模块组成是否用户输入Agent 核心LLM是否需要调用工具工具调用执行结果生成最终回复输出给用户3.1 核心组件拆解LLM 大脑负责理解意图、推理决策、生成回复。这是 Agent 的思考中枢。提示词Prompt定义 Agent 的角色、能力边界、工作流程和输出格式。工具集ToolsAgent 可以调用的外部能力如搜索引擎、计算器、数据库查询、HTTP 请求等。记忆系统Memory短期记忆保存当前任务的上下文长期记忆保存跨会话的知识。编排器Orchestrator控制 Agent 的循环流程——思考、行动、观察结果、再思考。4. 技术选型与开发环境准备4.1 技术栈选择对于初学者我推荐以下技术栈生态成熟、上手快语言Python 3.10LLM 框架LangChain 或 LlamaIndex封装了 Agent 的常用组件大模型 APIOpenAI、DeepSeek、通义千问等支持 OpenAI 兼容接口即可依赖管理pip venv 或 Poetry4.2 安装依赖首先创建项目目录和虚拟环境mkdirmy-agentcdmy-agent python-mvenv venvsourcevenv/bin/activate# Windows 下用 venv\Scripts\activate然后安装核心依赖pipinstalllangchain langchain-openai python-dotenv4.3 配置环境变量在项目根目录创建.env文件填入你的 API KeyOPENAI_API_KEYsk-xxxxxxxxxxxxxxxx# 如果使用其他兼容 OpenAI 接口的服务可配置# OPENAI_API_BASEhttps://api.deepseek.com/v1# OPENAI_MODEL_NAMEdeepseek-chat5. 从零编写第一个 Agent下面我们从一个最简单的 Agent 开始逐步增加能力。5.1 最小可运行的 Agent先写一个最基础的版本——它只有一个 LLM能根据用户输入生成回复importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAI load_dotenv()# 初始化大模型llmChatOpenAI(modelos.getenv(OPENAI_MODEL_NAME,gpt-4o-mini),temperature0.7,)# 最简单的对话responsellm.invoke(你好请用一句话介绍你自己)print(response.content)运行这段代码你就拥有了一个最原始的Agent 雏形。但它还称不上 Agent因为它没有规划能力也不能调用工具。5.2 给 Agent 添加工具调用能力工具调用是 Agent 与普通 LLM 应用的关键区别。下面我们定义一个简单的计算器工具并让 Agent 学会使用它importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_tool_calling_agent,AgentExecutorfromlangchain.toolsimporttoolfromlangchain_core.promptsimportChatPromptTemplate load_dotenv()# 1. 定义工具tooldefadd(a:float,b:float)-float:计算两个数字的和。returnabtooldefmultiply(a:float,b:float)-float:计算两个数字的乘积。returna*b# 2. 初始化 LLMllmChatOpenAI(modelos.getenv(OPENAI_MODEL_NAME,gpt-4o-mini),temperature0,)# 3. 创建提示词模板promptChatPromptTemplate.from_messages([(system,你是一个智能助手可以调用工具来帮助用户解决问题。),(human,{input}),(placeholder,{agent_scratchpad}),])# 4. 创建 Agenttools[add,multiply]agentcreate_tool_calling_agent(llm,tools,prompt)agent_executorAgentExecutor(agentagent,toolstools,verboseTrue)# 5. 运行resultagent_executor.invoke({input:请计算 (23 45) * 2 的结果})print(result[output])运行后你会看到 Agent 的完整推理过程它先调用add计算 234568再调用multiply计算 68×2136最后给出答案。这就是一个真正的 Agent 循环。5.3 理解 Agent 的执行循环上面的例子背后Agent 实际上经历了一个思考-行动-观察的循环否是接收用户任务LLM 思考需要哪个工具生成工具调用指令执行工具把结果返回给 LLM任务完成了吗生成最终答案6. 构建一个完整的实战项目掌握了基础之后我们来构建一个更完整的 Agent一个能联网搜索并总结信息的智能助手。6.1 项目结构my-agent/ ├── .env ├── requirements.txt ├── main.py └── agent/ ├── __init__.py ├── tools.py # 自定义工具 ├── memory.py # 记忆管理 └── agent.py # Agent 组装6.2 定义工具集# agent/tools.pyimportrequestsfromlangchain.toolsimporttooltooldefsearch_web(query:str)-str:在互联网上搜索信息返回前几条搜索结果摘要。# 这里以 DuckDuckGo 为例实际可替换为 SerpAPI、Bing 等urlhttps://api.duckduckgo.com/params{q:query,format:json}resprequests.get(url,paramsparams,timeout10)dataresp.json()results[]fortopicindata.get(RelatedTopics,[])[:5]:ifTextintopic:results.append(topic[Text])return\n.join(results)ifresultselse未找到相关结果。tooldefget_current_time()-str:获取当前日期和时间。fromdatetimeimportdatetimereturndatetime.now().strftime(%Y-%m-%d %H:%M:%S)6.3 添加记忆能力为了让 Agent 能记住多轮对话的上下文我们给它加上记忆# agent/memory.pyfromlangchain.memoryimportConversationBufferMemoryfromlangchain_core.chat_historyimportInMemoryChatMessageHistorydefbuild_memory():构建对话记忆。returnConversationBufferMemory(chat_memoryInMemoryChatMessageHistory(),return_messagesTrue,memory_keychat_history,)6.4 组装 Agent# agent/agent.pyimportosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportcreate_tool_calling_agent,AgentExecutorfromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholderfromagent.toolsimportsearch_web,get_current_timefromagent.memoryimportbuild_memory load_dotenv()defcreate_agent():创建并返回一个带记忆和工具的 Agent。# 初始化 LLMllmChatOpenAI(modelos.getenv(OPENAI_MODEL_NAME,gpt-4o-mini),temperature0.3,)# 工具集tools[search_web,get_current_time]# 提示词promptChatPromptTemplate.from_messages([(system,你是一个乐于助人的 AI 助手。你可以使用工具获取实时信息。回答要简洁、准确并注明信息来源。),MessagesPlaceholder(variable_namechat_history),(human,{input}),MessagesPlaceholder(variable_nameagent_scratchpad),])# 组装 Agentagentcreate_tool_calling_agent(llm,tools,prompt)executorAgentExecutor(agentagent,toolstools,memorybuild_memory(),verboseTrue,handle_parsing_errorsTrue,)returnexecutor6.5 主程序入口# main.pyfromagent.agentimportcreate_agentdefmain():agentcreate_agent()print(AI Agent 已启动输入 exit 退出。\n)whileTrue:user_inputinput(你)ifuser_input.lower()in(exit,quit):breakresponseagent.invoke({input:user_input})print(fAgent{response[output]}\n)if__name____main__:main()运行python main.py你就可以和这个 Agent 对话了。试试问它今天几号“或帮我搜索一下 LangChain 的最新版本”它会自动调用对应工具来回答。7. 进阶优化方向完成一个能跑通的 Agent 只是第一步。要把它做成生产级应用还需要关注以下几个方面7.1 规划能力增强ReAct 模式让模型先思考Reason再行动Act交替进行提升复杂任务的处理能力。Plan-and-Execute先让 LLM 生成完整计划再逐步执行适合步骤明确的长任务。任务分解把大任务拆成多个子任务分别交给不同的子 Agent 处理。7.2 记忆系统升级向量数据库用 Chroma、FAISS 等存储长期记忆支持语义检索。摘要记忆当对话过长时自动总结历史压缩上下文。分层记忆区分工作记忆、情景记忆和语义记忆按需调用。7.3 工具生态扩展代码解释器让 Agent 写代码并执行处理数据分析任务。API 集成接入企业内部的业务系统 API。多模态工具支持图像生成、语音合成等能力。7.4 安全与可靠性权限控制限制 Agent 可调用的工具范围敏感操作需人工确认。输出校验对 Agent 的最终输出做格式和内容校验。成本控制设置 token 上限、超时机制避免无限循环。日志与审计记录 Agent 的每一步决策和工具调用便于排查问题。8. 常见问题与排查8.1 Agent 不调用工具怎么办检查工具的描述是否清晰LLM 需要理解什么时候该用这个工具。适当降低temperature让模型更稳定地遵循指令。在系统提示词中明确说明当需要实时信息时必须调用搜索工具。8.2 工具调用报错确认工具函数的参数类型标注正确LLM 依赖类型信息生成调用参数。在工具内部做好异常捕获返回友好的错误信息。开启handle_parsing_errorsTrue让 Agent 在解析失败时能自我纠正。8.3 上下文过长使用摘要记忆压缩历史对话。限制单轮工具返回结果的长度。必要时切换支持更长上下文的模型。9. 总结从 0 到 1 开发一个 AI Agent核心路径可以概括为四步理解概念明确 Agent 与普通 LLM 应用的区别掌握规划、记忆、工具、反思四大能力。搭建环境选好技术栈配置好 LLM API 和依赖。编写核心从最小可运行版本开始逐步加入工具调用、记忆和编排逻辑。持续优化在规划能力、记忆系统、工具生态和安全可靠性上不断迭代。AI Agent 的开发是一个实践性很强的领域最好的学习方式就是动手写代码。建议你先跑通本文的示例然后尝试给它添加新的工具、接入自己的业务场景在实践中逐步深入。希望这篇文章能帮你迈出 AI Agent 开发的第一步。如果你在实践过程中遇到问题欢迎在评论区交流讨论。

相关新闻

Stable Diffusion面部修复神器ADetailer:告别AI绘画脸崩难题

Stable Diffusion面部修复神器ADetailer:告别AI绘画脸崩难题

1. 从“脸崩”到“脸稳”:一个困扰SD玩家的经典难题如果你玩Stable Diffusion(SD)有一段时间了,尤其是热衷于生成全身人像,那你大概率经历过这个令人沮丧的时刻:你精心构思了构图,调整了复杂的提…

2026/10/14 18:46:00 阅读更多 →
南通启益建设集团有限公司网站:见证本土工程实力的成长轨迹与服务承诺

南通启益建设集团有限公司网站:见证本土工程实力的成长轨迹与服务承诺

在这个钢筋水泥构筑的城市丛林里,每一座拔地而起的建筑,背后都流淌着一群建设者的汗水与智慧。对于许多刚刚涉足基建行业,或者正在寻找可靠合作伙伴的企业和个人来说,建立一个直观、透明且充满信任感的窗口至关重要。今天,我想和大家聊聊的,不是那种高高在上、只展示光鲜…

2026/10/13 22:40:56 阅读更多 →
阿里千问开放平台:大模型驱动的生活服务对话式集成开发指南

阿里千问开放平台:大模型驱动的生活服务对话式集成开发指南

这次我们来看阿里千问开放平台。这不是一个单纯的AI模型,而是一个将大语言模型能力与生活服务深度集成的平台。简单说,它让用户可以通过自然对话,直接完成租房、租车、寄快递等日常任务,无需在多个App间跳转。对于开发者而言&…

2026/10/3 6:12:44 阅读更多 →

最新新闻

AI逆向工程实战:31.2K Star开源项目如何用大模型辅助二进制分析

AI逆向工程实战:31.2K Star开源项目如何用大模型辅助二进制分析

1. 当AI把目光投向二进制:逆向工程的门槛正在被重新定义第一次看到“AI开始搞逆向工程”这个说法,我的反应是:终于有人把这件事摆到台面上了。逆向工程这个领域,长期以来都是少数人的游戏——你得懂汇编,得熟悉PE/ELF文…

2026/10/14 23:16:08 阅读更多 →
ARM架构CentOS 7.6网口bond配置实战与优化指南

ARM架构CentOS 7.6网口bond配置实战与优化指南

1. 项目背景与需求拆解1.1 为什么要在ARM架构的CentOS 7.6上做网口bond在ARM服务器上跑CentOS 7.6,这个组合本身就有点意思。ARM架构的服务器这几年在数据中心里越来越常见,尤其是那些对功耗敏感、需要高密度部署的场景。但ARM平台跟传统的x86平台在硬件…

2026/10/14 23:16:08 阅读更多 →
两级式光伏MMC并网系统故障穿越Simulink仿真模型解析

两级式光伏MMC并网系统故障穿越Simulink仿真模型解析

1. 项目概述与问题背景做光伏并网研究的同学,对"故障穿越"这四个字应该都不陌生。无论你研究的是组串式逆变器、集中式逆变器,还是近几年大热的MMC拓扑,只要涉及并网,就绕不开电网故障时"能不能撑住、撑多久、怎么…

2026/10/14 23:16:08 阅读更多 →
AI Agent实操:五个新工具让AI学会用鼠标干活

AI Agent实操:五个新工具让AI学会用鼠标干活

1. 这次AI的进化方向,是先学会用鼠标Copilot能“直接操作”电脑这个事,让我琢磨了好几天。以前我们聊AI,聊的都是大模型能读多少token、能写多长的代码、能生成多像样的图。但那个层面的能力再强,它也是关在对话框里的——你问它答…

2026/10/14 23:16:08 阅读更多 →
OpenCV特征提取与匹配实战:SIFT、ORB、AKAZE选型与调参指南

OpenCV特征提取与匹配实战:SIFT、ORB、AKAZE选型与调参指南

1. 从一张拍歪的照片说起:为什么特征提取值得花时间搞懂很多人第一次接触OpenCV,都是从读图、灰度化、边缘检测这条线走下来的,觉得图像处理不过如此。直到某天需要把两张不同角度拍的同一场景对齐,或者想让程序在一堆商品图里找出…

2026/10/14 23:16:08 阅读更多 →
用Hermes Agent打造AI数字员工:企业自动化实战全解析

用Hermes Agent打造AI数字员工:企业自动化实战全解析

先交代一下背景,这个教程源自我在某企业内部做的一次 AI 自动化试点总结。当时团队的任务很直接,把重复性高、规则清晰但又需要人肉判断的活儿,逐步交给一套能听指挥、能调用工具、能自己干活的系统。市面上轮子很多,最终敲定用 H…

2026/10/14 23:14:55 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →