文章目录一、前言二、Agents 技术解析2.1 Agents 介绍2.2 记忆功能2.2.1 短期记忆2.2.2 长期记忆2.2.3 工具记忆2.3 思考和规划2.3.1 链式思考Chain of Thought2.3.2 任务拆解与调度2.3.3 反思与优化2.4 Agent框架介绍2.4.1 LangChain2.4.2 AutoGPT2.4.3 AgentScope三、本章练习题及其答案3.1 选择题3.2 填空题3.3 简答题3.4 实操题四、总结一、前言在人工智能技术飞速发展的今天大语言模型的应用场景不断拓展但单一的模型调用已难以满足复杂任务的需求。传统的“输入-输出”模式虽然在问答、文本生成等任务中表现出色但在面对多步骤、跨系统、需持续交互的现实问题时往往显得力不从心。例如仅靠一次提示词调用模型无法完成“分析销售数据、生成可视化图表、撰写报告并发送邮件”这一系列连贯操作。正是在这样的背景下Agents技术应运而生。作为大语言模型的延伸与升级Agents凭借其自主决策、记忆迭代、工具调用和任务规划能力正在重塑AI系统的构建方式。它不再是一个被动的响应者而是一个能够主动感知环境、制定策略、执行动作并反思优化的智能实体。这种从“静态推理”到“动态行为”的跃迁使Agents成为当前AI领域的研究热点与应用新方向。无论是后端开发者构建智能业务流程前端开发者打造交互式AI应用还是运维人员探索自动化运维方案Agents技术都能提供全新的解决思路。例如在金融领域Agents可自动监控市场动态、分析风险指标并触发交易策略在教育场景中它可以作为个性化学习助手根据学生的学习进度动态调整教学内容在科研工作中Agents能自主检索文献、提取关键信息并辅助撰写综述。本教案面向初级到中级技术从业者、AI爱好者及在校学生将从基础概念入手逐步解析Agents的核心功能、主流框架并配套练习题帮助巩固所学力求让您系统掌握Agents技术的基础原理与实践方法。通过本课程的学习您将不仅理解Agents“能做什么”更将掌握“它是如何做到的”以及“如何自己动手构建”。二、Agents 技术解析2.1 Agents 介绍Agents即智能代理是一类能够感知环境、自主决策并执行动作的AI实体。与传统大语言模型的“输入-输出”模式不同Agents具备闭环能力它可以根据用户需求或环境反馈主动调用工具、调整策略直至完成复杂任务。这种闭环机制使其能够在没有人工干预的情况下持续推进任务进程直到达成目标。从技术架构来看一个基础的Agents系统通常包含感知模块、决策模块、执行模块三个核心部分感知模块负责接收外部信息包括用户指令、环境数据、工具返回结果等。它是Agents的“感官系统”确保Agent对当前状态有准确的认知。例如在处理用户咨询时感知模块不仅要接收用户的最新提问还需整合历史对话记录、系统状态信息等上下文形成完整的环境画像。决策模块基于感知到的信息和内置逻辑判断下一步需要执行的动作例如是否调用工具、调用哪类工具、是否需要向用户提问以获取更多信息。该模块是Agents的“大脑”通常由大语言模型驱动结合规则引擎或强化学习策略进行综合判断。决策过程可能涉及任务拆解、优先级排序、风险评估等多个维度。执行模块将决策转化为具体行动如调用API、运行代码、生成自然语言回复、保存文件等。它是Agents的“执行器官”连接着AI逻辑与现实世界的接口。执行结果会再次反馈给感知模块形成“感知-决策-执行”的闭环循环。Agents的典型应用场景包括智能客服机器人能够处理多轮复杂咨询如退换货流程、订单状态查询、个性化推荐等无需人工转接即可完成全流程服务代码助手不仅能回答语法问题还能自动调试代码、运行测试用例、提出性能优化建议科研助手可自主检索学术数据库如PubMed、arXiv、筛选相关论文、提取核心观点并整理成分析报告个人数字助理根据用户日程安排会议、预订餐厅、跟踪快递信息并在关键时刻主动提醒。其核心优势在于将AI的“被动响应”升级为“主动解决问题”从而显著提升任务完成效率与用户体验。2.2 记忆功能记忆是Agents区别于普通大语言模型的关键特性之一它让Agents能够在多轮交互中保留上下文信息实现连贯的任务处理。没有记忆的Agent就像一个健忘的助手每次对话都需重新介绍背景难以完成长期或复杂的任务。而具备记忆能力的Agent则能记住用户的偏好、任务进展、历史决策等信息实现真正的个性化与持续性服务。根据记忆的存储周期和用途可分为短期记忆、长期记忆和工具记忆三类2.2.1 短期记忆短期记忆也称为上下文记忆主要用于存储当前会话或任务的即时信息例如用户的最新提问、刚刚执行的动作结果、中间推理步骤等。它通常依赖大语言模型的上下文窗口实现所有信息以文本形式拼接后送入模型进行处理。由于上下文窗口存在长度限制如GPT-3.5为16k tokensGPT-4为32k或更高当会话过长时旧的信息会被覆盖或截断。因此有效的短期记忆管理策略至关重要常见的做法包括滑动窗口机制只保留最近N条交互记录摘要压缩将早期对话内容压缩为简要摘要减少token占用关键信息提取仅保留任务相关的实体、参数和状态变更。以下是基于Python实现的简单短期记忆示例classShortTermMemory:def__init__(self,max_length10):# 初始化记忆队列限制最大存储条数self.memory_queue[]self.max_lengthmax_lengthdefadd_memory(self,content):# 添加新记忆超过最大长度时移除最早的记忆iflen(self.memory_queue)self.max_length:self.memory_queue.pop(0)self.memory_queue.append(content)defget_memory(self):# 获取所有短期记忆拼接为字符串return\n.join(self.memory_queue)# 示例使用memoryShortTermMemory()memory.add_memory(用户帮我分析一份销售数据)memory.add_memory(Agent已获取数据正在分析)print(memory.get_memory())该实现适用于轻量级任务但在生产环境中通常会结合LLM的上下文管理机制动态决定哪些信息应保留、哪些可压缩或丢弃。2.2.2 长期记忆长期记忆用于存储跨会话、跨任务的持久化信息例如用户的历史偏好、任务的长期目标、通用知识、行为模式等。它通常通过外部数据库如向量数据库实现使得Agents可以在不同时间、不同任务之间共享知识。长期记忆的核心挑战在于高效检索——如何从海量信息中快速找到与当前任务最相关的内容。为此主流做法是采用语义嵌入向量检索的方式将文本内容转换为高维向量利用向量相似度匹配实现“意图级”检索而非简单的关键词匹配。以下是基于FAISS向量数据库实现的简单长期记忆示例importfaissimportnumpyasnpfromsentence_transformersimportSentenceTransformerclassLongTermMemory:def__init__(self):# 初始化句子编码器和向量数据库self.encoderSentenceTransformer(all-MiniLM-L6-v2)self.indexfaiss.IndexFlatL2(384)# 编码器输出维度为384self.memory_store[]# 存储原始文本内容defadd_memory(self,content):# 将文本编码为向量添加到向量数据库和原始存储embeddingself.encoder.encode([content])self.index.add(np.array([embedding]))self.memory_store.append(content)defretrieve_memory(self,query,top_k3):# 根据查询语句检索最相关的记忆query_embeddingself.encoder.encode([query])distances,indicesself.index.search(np.array([query_embedding]),top_k)# 返回检索到的原始文本内容return[self.memory_store[i]foriinindicesifilen(self.memory_store)]# 示例使用long_memoryLongTermMemory()long_memory.add_memory(用户偏好喜欢简洁风格的数据可视化图表)long_memory.add_memory(历史任务2026年3月完成过月度销售数据报告)print(long_memory.retrieve_memory(用户之前的数据报告需求))该示例展示了如何将自然语言内容向量化并建立索引后续可通过语义查询如“用户喜欢什么样的图表”精准召回相关信息。在实际应用中长期记忆还可结合时间戳、标签分类、访问频率等元数据进一步提升检索精度与效率。2.2.3 工具记忆工具记忆用于存储Agents调用外部工具的历史记录包括工具名称、输入参数、返回结果、调用时间、成功率等。它不仅有助于避免重复调用无效工具还能支持更高级的决策优化例如失败归因分析某次API调用失败后Agent可回溯历史调用记录判断是否为参数错误、网络问题或服务不可用工具选择优化当多个工具可完成同一任务时如不同天气APIAgent可根据历史成功率、响应速度等指标选择最优工具缓存机制若某次查询结果短期内不会变化如城市经纬度可直接从工具记忆中读取避免重复请求。工具记忆通常以结构化日志或数据库表的形式存储便于后续分析与审计。它是实现Agent“经验积累”与“自我进化”的重要基础。2.3 思考和规划思考与规划能力是Agents实现复杂任务的核心它让Agents能够将复杂目标拆解为多个子任务并制定合理的执行顺序。这一过程模拟了人类解决问题的思维方式使AI具备更强的逻辑性与适应性。常见的思考与规划策略包括以下几种2.3.1 链式思考Chain of Thought链式思考是指Agents通过逐步推理的方式解决问题将大问题拆解为多个小步骤每一步的结论作为下一步的输入。这种方法显著提升了模型在数学推理、逻辑判断、复杂决策等任务中的表现。例如在解决数学应用题时Agents会先分析题目条件再列出计算公式最后代入数值求解。这种“展示思维过程”的方式不仅提高了准确性也增强了结果的可解释性。以下是链式思考的代码示例defchain_of_thought(problem):# 定义思考步骤steps[f分析问题{problem},拆解问题将问题分解为已知条件和求解目标,制定方案根据已知条件选择合适的解决方法,执行计算代入数据进行计算,验证结果检查计算过程和结果是否正确]# 模拟逐步思考过程fori,stepinenumerate(steps,1):print(f思考步骤{i}{step})return问题已解决# 示例使用chain_of_thought(某商店上月销售额为5万元本月销售额比上月增长20%本月销售额是多少)输出结果将清晰展示每个推理阶段便于调试与验证。在真实Agent系统中这些思考步骤通常作为“思维草稿”scratchpad传递给模型指导其生成最终答案。2.3.2 任务拆解与调度对于更复杂的任务Agents需要将其拆解为多个独立的子任务并根据任务优先级、依赖关系进行调度。这一过程类似于项目管理中的工作分解结构WBS与甘特图规划。例如生成一份市场分析报告可拆解为以下子任务数据采集从数据库或API获取原始数据数据清洗处理缺失值、异常值可视化分析生成趋势图、分布图报告撰写整合分析结果撰写文字说明文件导出保存为PDF或Word格式邮件发送将报告发送给指定收件人。Agents会根据任务间的依赖关系如必须先完成数据清洗才能进行可视化自动排序执行顺序并在每个子任务完成后更新整体进度。若某环节失败如API调用超时Agent可尝试重试、更换数据源或通知用户。高级Agent系统甚至支持动态重规划当外部环境发生变化如数据源不可用Agent能重新评估任务路径选择替代方案继续推进。2.3.3 反思与优化优秀的Agents具备反思能力能够在任务执行过程中或完成后评估执行效果总结经验教训优化后续的决策逻辑。这种“元认知”能力使其具备一定的自我进化潜力。例如当调用某工具失败时Agents会分析失败原因如参数错误、权限不足调整参数或更换工具后重新尝试在多次任务执行后Agent可统计各工具的成功率、耗时等指标建立“工具效能画像”用于未来决策对用户反馈进行分析识别常见问题模式主动改进响应策略。反思机制可通过日志分析、强化学习、A/B测试等方式实现是构建高可靠性Agent系统的关键环节。2.4 Agent框架介绍为了降低Agents的开发门槛国内外厂商和开源社区推出了多个成熟的Agent开发框架以下是三个主流框架的介绍2.4.1 LangChainLangChain是目前最流行的开源Agent框架之一支持Python和JavaScript两种语言。它提供了丰富的组件库包括记忆模块、工具调用模块、链Chain模块、检索模块等开发者可以通过组合这些组件快速构建自定义Agents。LangChain的核心优势在于其模块化设计和对多种大语言模型的支持。无论是OpenAI的GPT系列还是开源的Llama、Qwen、ChatGLM等模型都能轻松集成。此外LangChain还支持与外部系统如数据库、搜索引擎、API网关无缝对接极大提升了开发效率。以下是使用LangChain构建简单Agent的示例fromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportAgentExecutor,create_tool_calling_agentfromlangchain.toolsimportToolfromlangchain_core.promptsimportChatPromptTemplate# 初始化大语言模型llmChatOpenAI(modelgpt-3.5-turbo,api_keyyour-api-key)# 定义工具一个简单的加法计算器defadd_numbers(a,b):returnab calculator_toolTool(nameCalculator,funcadd_numbers,description用于计算两个数字的和输入参数为两个数字)# 定义Agent提示词promptChatPromptTemplate.from_messages([(system,你是一个智能助手可以调用工具解决问题),(user,{input}),(agent_scratchpad,{agent_scratchpad})])# 创建Agent并执行agentcreate_tool_calling_agent(llm,[calculator_tool],prompt)agent_executorAgentExecutor(agentagent,tools[calculator_tool],verboseTrue)# 示例调用resultagent_executor.invoke({input:计算123加456的结果})print(result[output])该示例展示了如何通过定义工具、提示词和执行器快速搭建一个可调用外部函数的Agent。LangChain的强大之处在于其生态系统丰富社区活跃文档完善适合初学者快速上手。2.4.2 AutoGPTAutoGPT是一款基于GPT-4的开源自主Agent项目它能够根据用户设定的目标自主规划任务、调用工具、搜索信息无需人工干预即可完成复杂任务。与LangChain侧重于组件化开发不同AutoGPT更强调“完全自主运行”。AutoGPT的核心特性包括自主记忆支持短期与长期记忆管理互联网搜索可调用Google Search等工具获取实时信息文件读写可在本地创建、修改、保存文件目标驱动用户只需设定最终目标如“创建一个AI创业计划书”AutoGPT会自动拆解任务并执行。尽管AutoGPT在概念上极具吸引力但其实际应用中仍面临挑战如任务失控、资源消耗过大、结果不可控等。因此更适合用于实验性项目或辅助性任务。2.4.3 AgentScopeAgentScope是由清华大学开发的开源多Agent协作框架专注于构建多Agent系统。它支持多种大语言模型提供了Agent通信、任务分配、协同推理等核心功能适合开发需要多个Agent协作完成的复杂应用如多角色对话系统、分布式任务处理系统、虚拟团队协作平台等。AgentScope的优势在于其对多Agent协作的深度支持。开发者可以轻松定义Agent的角色如“分析师”“编辑”“审核员”、能力和通信方式实现高效的团队协作。例如在撰写报告任务中可设置多个Agent分工合作一个负责数据收集一个负责图表生成一个负责文字润色最后由主Agent整合输出。此外AgentScope还支持消息广播、任务队列、状态同步等机制保障多Agent系统的稳定性与一致性。三、本章练习题及其答案3.1 选择题以下哪项不是Agents的核心模块 A. 感知模块 B. 决策模块 C. 存储模块 D. 执行模块用于存储跨会话持久化信息的记忆类型是 A. 短期记忆 B. 长期记忆 C. 工具记忆 D. 上下文记忆LangChain框架主要支持哪种开发语言 A. 仅Python B. 仅JavaScript C. Python和JavaScript D. Java答案1.C2.B3.C3.2 填空题Agents与传统大语言模型的核心区别在于具备______能力能够主动解决复杂任务。链式思考的核心是将复杂问题______为多个小步骤逐步解决。AutoGPT是一款基于______的开源自主Agent项目。答案1.闭环决策/自主决策2.拆解3.GPT-43.3 简答题简述Agents记忆功能的分类及各自用途。举例说明Agents技术在后端开发中的应用场景。答案分为短期记忆、长期记忆和工具记忆。短期记忆存储当前会话即时信息依赖模型上下文窗口长期记忆存储跨会话持久化信息通过外部数据库实现工具记忆存储工具调用历史帮助优化后续决策。例如构建智能业务流程自动化系统Agents可以根据业务规则自主调用不同的后端API完成数据同步、订单处理、异常告警等任务或作为智能运维助手自动检测系统异常、分析日志并执行修复操作。3.4 实操题使用LangChain框架构建一个简单的代码助手Agent要求具备以下功能能够接收用户的代码问题如Python语法疑问、代码调试需求可以调用Python解释器工具执行代码片段并返回结果能够基于执行结果给出代码优化建议。参考实现代码fromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportAgentExecutor,create_tool_calling_agentfromlangchain.toolsimportToolfromlangchain_core.promptsimportChatPromptTemplateimportsubprocessimportsys# 初始化大语言模型llmChatOpenAI(modelgpt-3.5-turbo,api_keyyour-api-key)# 定义工具Python代码执行器defrun_python_code(code):try:# 执行Python代码捕获输出和错误resultsubprocess.run([sys.executable,-c,code],capture_outputTrue,textTrue,timeout10)ifresult.returncode0:returnf执行成功输出结果\n{result.stdout}else:returnf执行失败错误信息\n{result.stderr}exceptsubprocess.TimeoutExpired:return执行超时请检查代码是否存在死循环exceptExceptionase:returnf执行出错{str(e)}python_executor_toolTool(namePythonExecutor,funcrun_python_code,description用于执行Python代码片段输入为要执行的Python代码字符串)# 定义Agent提示词promptChatPromptTemplate.from_messages([(system,你是一个专业的Python代码助手当用户有代码问题时先分析问题如需验证可调用PythonExecutor工具执行代码最后给出详细解答和优化建议。),(user,{input}),(agent_scratchpad,{agent_scratchpad})])# 创建Agent并执行agentcreate_tool_calling_agent(llm,[python_executor_tool],prompt)agent_executorAgentExecutor(agentagent,tools[python_executor_tool],verboseTrue)# 示例调用whileTrue:user_inputinput(请输入你的Python代码问题输入exit退出)ifuser_input.lower()exit:breakresultagent_executor.invoke({input:user_input})print(助手回复,result[output])四、总结Agents技术作为AI领域的新兴方向通过赋予AI实体自主决策、记忆迭代和任务规划能力打破了传统大语言模型的“输入-输出”局限为复杂任务处理提供了全新的解决方案。它不仅是技术的演进更是范式的转变——从“人主导AI”走向“人机协同”。本教案从Agents的基础概念入手详细解析了记忆功能、思考与规划能力并介绍了LangChain、AutoGPT等主流开发框架配套的练习题帮助巩固所学知识。无论是技术从业者还是AI爱好者掌握Agents技术都能为自身的工作和学习带来新的思路与提升。未来随着技术的不断成熟Agents将在更多领域发挥重要作用在医疗中辅助诊断在教育中实现个性化辅导在企业管理中推动自动化决策。我们正站在智能体时代的门槛上而理解并掌握Agents技术将是通往未来AI世界的重要钥匙。 感谢您耐心阅读到这里 技术成长没有捷径但每一次的阅读、思考和实践都在默默缩短您与成功的距离。 如果本文对您有所启发欢迎点赞、收藏、分享给更多需要的伙伴️ 期待在评论区看到您的想法、疑问或建议我会认真回复让我们共同探讨、一起进步 关注我持续获取更多干货内容 我们下篇文章见