这是一篇关于如何构建Agent的12个关键思想的指南,基于原作者 humanlayer 的基础上,我调整成了新手更友好的指南方式。
智能体和AI编程pdf(可以加文末微信领取
借此机会,结合原文,梳理下构建 Agent 的技巧:
前言
什么是AI代理?从零开始了解智能软件的未来
你有没有想过,未来的软件可以像人类一样“思考”,自己决定如何完成任务?这就是 AI代理(Agent) 的魅力!本文将用最简单的语言,带你从零基础了解AI代理是什么,它的历史、原理、问题,以及如何在现实中应用。无论你是对编程一窍不通的小白,还是对AI感兴趣的初学者,这篇文章都会让你有所收获!
1 AI代理是什么?像一个聪明的助手
想象一下,你有一个超级聪明的助手,你只需要告诉它:“帮我把网站上线。” 这个助手会自己分析情况,决定先做什么(比如部署代码、运行测试),甚至在出错时调整计划。这就是 AI代理——一种能自主决策的智能软件。
普通软件需要程序员写好每一步的指令,比如“如果用户点击按钮A,就显示页面B”。但AI代理不同,它利用大语言模型(LLM)(像ChatGPT这样的技术)来动态决定下一步做什么。这意味着程序员写更少的代码,软件也能更灵活地应对复杂任务。
2 从流程图到AI代理:软件的进化史
要理解AI代理,我们先来看看软件是怎么一步步发展到今天的。
- 60年前:软件像一张地图
很久以前,程序员用 流程图 来设计软件。流程图就像一张地图,上面有:
节点:表示一个个任务(比如“读取文件”)。
箭头:表示任务的顺序(比如“读取文件后保存”)。
这种结构被称为有向图(Directed Graph),因为箭头有方向,指示任务的流程。软件本质上就是一张有向图,程序按照箭头一步步执行。
- 20年前:DAG让工作流更清晰
大约20年前,程序员开始用有向无环图(DAG,Directed Acyclic Graph) 来管理复杂的工作流。DAG是一种特殊的图,没有循环(比如你不会从任务A到B再回到A)。
一些工具(比如 Airflow 和 Prefect)让DAG变得流行。它们像一个超级管家,把任务安排得井井有条。比如:
一个数据处理任务可能包括“读取数据 → 清洗数据 → 保存结果”。
DAG工具会自动监控每个步骤,确保任务按顺序完成,还能重试失败的任务。
这些工具让软件更模块化、更容易管理。
- 10-15年前:机器学习加入DAG
到了10-15年前,机器学习(ML) 技术变得更好用。程序员开始在DAG中加入ML模型。比如:
“把一篇文章总结成几句话。”
“根据用户反馈,判断问题是紧急还是普通。”
但这些仍然是确定性软件,每一步都由程序员提前写好,ML模型只是其中一个工具。
3 AI代理的“大承诺”:摆脱固定流程
AI代理带来了一个革命性的想法:我们不需要提前写好每一步!
传统软件就像一本详细的菜谱,程序员必须写清楚“先放油,再加菜,炒3分钟”。但AI代理更像一个会做饭的厨师,你只需要说“做一道辣炒鸡”,它会自己决定:
用哪些食材(工具)。
按什么顺序烹饪(步骤)。
甚至在鸡肉炒焦时换个方法重试。
AI代理的工作方式是:
你给它一个目标(比如“部署网站”)。
提供一些工具(比如“部署代码”“运行测试”)。
让大语言模型(LLM) 实时决定用哪些工具、按什么顺序完成任务。
这样做的好处:
更少的代码:程序员不用为每种情况写规则。
更灵活:出错时,代理可以换个方法继续。
创新性:LLM可能会找到人类没想到的解决方案。
4 AI代理怎么工作?一个简单的循环
AI代理的核心是一个循环,就像一个不断思考的机器人。它的步骤是:
- LLM 决定下一步:LLM 查看当前情况,输出一个 JSON(一种数据格式),说明要做什么。比如:
这表示“调用部署后端的工具,版本是4af9ec0”。
执行工具:普通代码(叫“确定性代码”)按照JSON的指示运行工具,比如真的去部署后端。
记录结果:工具运行的结果(比如“后端部署成功”)被加到上下文窗口(一个记录所有步骤的地方)。
重复或结束:LLM 再看新的上下文,决定下一步。如果任务完成,它会说“done”;否则,继续循环。
这个过程就像一个智能助手在不断思考和行动。
5 AI代理的问题:迷失在长对话中
虽然 AI 代理听起来很厉害,但它有一个大问题:上下文窗口过长。
每次循环,上下文都会增加(每个步骤和结果)。当上下文太长时,LLM就像一个记性不好的助手,忘了最初的任务,可能会:反复尝试错误的方案。
想象你和朋友聊了100句话,话题早就跑偏了。AI代理也一样,通常在10-20次循环后,表现就会变差。
6 微代理:更聪明、更可靠的解决方案
为了解决长上下文的问题,开发者发明了微代理(Micro Agents)。它的核心思路是:
- 把大任务拆成小任务。
- 每个小任务用一个独立的微代理处理,上下文保持短小。
- 微代理嵌入到一个更大的、确定性DAG 中,确保整体流程清晰可控。
微代理的优点:
- 短上下文:每个微代理只处理一个小任务,确保 LLM 不会迷失。
- 确定性 DAG:像一个总导演,安排好大任务的整体流程。
- 人类反馈:微代理擅长处理需要人类参与的场景,比如用户说“先部署后端”。
举个例子:部署机器人(Deploybot)
有一个微代理叫“Deploybot”,专门负责软件部署:
- 程序员把代码合并到GitHub。
- 确定性代码自动部署到测试环境,运行测试。
- 微代理接手生产环境部署,初始任务是“部署版本4af9ec0”。
- 代理调用工具deploy_frontend(),询问人类是否批准。
- 人类说:“先部署后端!”
- 代理理解反馈,调用deploy_backend()。
- 人类批准后,代码执行后端部署。
- 代理再部署前端,确认任务完成。
这个微代理只处理“生产环境部署”这一小块,上下文简单,LLM能保持专注。
7 AI代理的四个核心部分
一个AI代理由以下四部分组成,简单但强大:
- 提示(Prompt):告诉LLM它有哪些工具和如何决策。
比如:“你是一个部署助手,可以调用deploy_backend和deploy_frontend。”
- 开关语句(Switch Statement):根据LLM的JSON输出,决定调用哪个工具。
比如,如果JSON说“deploy_backend”,就运行后端部署代码。
- 累积上下文(Accumulated Context):记录所有步骤和结果,供LLM参考。
- 循环(For Loop):不断重复,直到LLM说“任务完成”。
这些部分让AI代理既有 灵活性(LLM动态决策),又有可控性(确定性代码管理流程)。
8 AI代理在现实中的应用
微代理已经在很多领域发挥作用,比如:
- 软件部署:像Deploybot这样,管理复杂的部署流程,处理人类反馈。
- 客服聊天机器人:理解用户的问题,调用工具(比如查询订单、退货)解决问题。
- 数据处理:自动整理数据,遇到问题时请教人类。
这些场景中,微代理的短上下文和人类反馈能力让它特别有用。
9 给初学者的建议:如何开始探索AI代理
如果你对 AI 代理感兴趣,但完全没基础,别担心!以下是一些简单的起步建议:
了解基础概念:
看看什么是有向图和 DAG。
了解大语言模型(LLM),比如 DeepSeek 是怎么工作的。
尝试简单代码:
使用 Cursor ,试着写一个简单的代理循环(参考文章中的描述)。
网上有很多 LLM 的API(比如 OpenRouter ),可以用它们实验。
实现一个微代理:
找一个简单的任务,比如“整理文件夹”或“自动回复简单问题”。用 LLM 处理决策,普通代码执行任务。
小结:AI 代理是未来的方向。AI 代理是智能软件的未来,它让软件更像一个会思考的助手,而不是死板的机器。通过结合大语言模型和确定性流程,AI代理既灵活又可靠。微代理尤其适合现实场景,因为它能保持上下文简单,轻松处理人类反馈。
从60年前的流程图,到今天的微代理,软件的进化一直在让我们的生活更简单。
加入高质量
AI 编程社群
审核/邀请/学员
第一章
从自然语言到AI代理
——让软件听懂你的话
1.1 自然语言到工具调用:让 AI 听懂你的指令
想象一下,你对一个助手说:“帮我创建一个750美元的支付链接,给shadow ,用于赞助5月份的 Mixlab AI Agent 聚会。” 这个助手不仅能听懂你的话,还能把它变成一个明确的指令,交给支付系统去执行。这就是 AI 代理的核心能力之一:将自然语言转化为结构化的工具调用。
什么是“工具调用”?
“工具调用”就像给软件下达一个具体的命令。比如,你说“创建一个支付链接”,AI 代理会把这句话翻译成一个结构化对象(就像一张填好的订单),告诉支付系统做什么。
来看一个例子:
AI代理翻译成:
这个 JSON 对象就像一份详细的指令单:
- function:告诉系统要调用哪个工具(这里是“创建支付链接”)。
- parameters:包含具体的细节,比如金额(750美元)、客户ID、产品ID、备注等。
为什么这很强大?这种能力让 AI 代理像一个超级翻译官,把你随意的语言变成计算机能懂的指令:
- 你不需要懂编程,AI代理会帮你把想法变成行动。
- 程序员可以少写很多代码,因为AI代理自动填好了指令的细节。
- 代理可以处理复杂任务,比如创建支付链接、发送邮件、查询数据库等。
1.2 背后的魔法:大语言模型(LLM)在工作
这个翻译过程是怎么实现的?答案是大语言模型(LLM),比如 DeekSeek 或 Claude 这样的技术。LLM 就像一个超级聪明的语言专家,能理解你的话,并输出结构化的指令。
代码怎么实现?来看一个简单的代码例子,展示 AI 代理如何把自然语言变成工具调用:
代码解释:
- 输入指令:你用自然语言告诉 AI 代理要做什么(比如“创建支付链接”)。
- LLM 处理:LLM 分析你的话,输出一个 JSON,说明要调用哪个工具和具体参数。
- 执行工具:普通代码(叫“确定性代码”)根据 JSON 调用对应的工具,比如用 Stripe 的 API 创建支付链接。
- 处理其他情况:如果 LLM 输出的工具不认识,代码可以选择报错或尝试其他操作。
现实中更复杂一点,在真实场景中,创建支付链接可能需要更多步骤。比如:
- 代理可能先查询 Stripe 的客户列表,找到“shadow”的 ID。
- 再查询产品列表,找到“ Mixlab AI Agent 聚会赞助”的产品 ID。
- 最后组合这些信息,生成正确的 JSON。
这些步骤可能在 LLM 的 提示(Prompt) 或上下文窗口中提前提供。但核心思路不变:LLM把你的语言变成结构化的指令,交给代码去执行。
1.3 它是怎么融入 AI 代理的?
你可能注意到,上面的代码只完成了一个步骤:把语言翻译成工具调用,执行后就结束了。但完整的AI代理通常会循环,不断处理结果,直到任务彻底完成。
比如,创建支付链接后,代理可能:
把这个结果加到上下文。
LLM再看上下文,决定下一步(比如“告诉用户链接已创建”)。
这个循环的过程我们会在后面的章节详细讲(比如“代理的循环机制”)。现在,你只需要知道:自然语言到工具调用是 AI 代理的第一步,也是最重要的一步。
如果你完全不懂编程,别担心!以下是这节的关键点:
- AI 代理像一个翻译官:它把你说的话(比如“创建支付链接”)变成计算机能懂的指令(JSON)。
- 大语言模型(LLM)是核心:它负责理解你的语言,生成指令。
- 工具调用是行动:JSON告诉软件做什么(比如调用支付系统)。
这个模式很强大:它让普通人可以用日常语言控制软件,程序员也能少写代码。
想试试看?如果你对编程有点兴趣,可以试试以下简单实验:
打开 Cursor ,给它一个简单的指令,比如“帮我写一个发送邮件的JSON”。看看它输出的JSON长什么样,试着理解它的结构。
如果你想更进一步,可以要求 Cursor 帮你写 Python,用代码调用 API,真的发送一封邮件!
接下来,我们会深入探讨:
上下文窗口:AI代理如何记住之前的步骤?
循环机制:代理如何不断思考和行动,直到任务完成?
微代理:如何让代理更可靠、更适合现实场景?
准备好了吗?让我们继续探索AI代理的魔法世界!
第二章
掌控你的提示
——让AI代理听你的指挥
在上一章,我们了解了 AI 代理如何将你的自然语言变成具体的工具调用,就像一个聪明的翻译官。现在,我们要深入探讨一个关键部分:提示(Prompt)。提示是你和AI代理的“对话脚本”,它决定了代理能不能听懂你的指令、做出正确的决定。这一章将用最简单的语言,带零基础的你了解如何“掌控你的提示”,让AI代理更听话、更可靠!
2.1 什么是提示?AI代理的“说明书”
提示(Prompt)就像你给 AI 代理的一份“说明书”,告诉它:
- 你是谁(比如“一个管理软件部署的助手”)。
- 你的目标(比如“确保部署安全顺利”)。
- 它有哪些工具(比如“部署后端”“检查状态”)。
- 它应该怎么思考(比如“先检查环境,再部署”)。
一个好的提示能让 AI 代理像一个训练有素的员工,清楚地知道该做什么。而一个模糊的提示可能会让代理“摸不着头脑”,做出错误的决定。
2.2 框架的“黑箱”提示:方便但有局限
很多AI代理框架(就像现成的工具包)提供了一种“黑箱”方式,让你快速创建代理。代码可能长这样:
这种方式有什么好处?
简单快速:你只需要填几个参数(角色、目标、工具),框架会帮你生成一个提示。
适合新手:不用自己写复杂的提示,框架内置了高质量的“模板”。
但它也有问题:
像个黑箱:你不知道框架到底生成了什么提示,AI代理收到的具体指令是隐藏的。
难以调整:如果代理表现不好,你很难改提示,因为它是框架自动生成的。
不够透明:你无法完全理解代理为什么做了某个决定。
限制创新:框架的模板可能不支持一些高级技巧(比如特殊的提示设计)。
想象你买了一个智能机器人,但它的说明书是锁在盒子里的。你能用它,但没法改它的行为。这就是“黑箱”提示的局限。
2.3 掌控你的提示:把提示当代码写
与其依赖框架的“黑箱”,更好的办法是自己写提示,并把它当做代码一样管理。来看一个例子,展示如何为一个“部署助手”写提示:
代码解释:
- 函数定义:DetermineNextStep 是一个函数,输入是用户说的话(thread,比如“部署网站”),输出是下一步的工具调用(比如DeployBackend 或 RequestMoreInformation)。
- 提示内容:
系统角色:告诉AI它是一个“部署助手”,有明确的目标和工具。
检查清单:列出部署前必须检查的事项(环境、版本、状态)。
工具列表:说明AI可以使用哪些工具。
思考顺序:给AI一个清晰的决策流程(先检查,再部署)。
用户输入:把用户的话(thread)加到提示末尾,询问下一步。
- 工具输出:AI会返回一个结构化的指令,比如“调用deploy_backend”或“请求更多信息”。
这种写法,可以让你完全控制提示的内容。
2.4 掌控提示的好处:让AI代理更听话
自己写提示就像给 AI 代理量身定制一份说明书。以下是这么做的4大好处:
- 完全控制:你可以精确地告诉AI要做什么,不会被框架的“黑箱”限制。比如,你可以添加特殊的指令(“总是先检查状态”)或删除不必要的部分。
- 像代码一样测试:你可以为提示写测试用例,确保 AI 在不同情况下都能正确响应。
- 快速迭代:如果AI表现不好,你可以直接改提示,马上看到效果。比如,AI总是忘了请求批准?你可以在提示里加一句“敏感操作必须请求批准”。
- 透明性:你知道AI收到的每一条指令,不用猜框架做了什么。这让调试问题变得更容易。
这些技巧可能让 AI 表现更好,但框架的“黑箱”通常不支持。
为什么这些很重要?
提示是你和 AI 之间的“桥梁”。一个好的提示能让 AI 像一个得力助手,精准完成任务。而一个不合适的提示可能让 AI “跑偏”,浪费时间和资源。掌控提示就意味着你有无限的灵活性,可以尝试各种方法,直到找到最好的那个。
如果你完全不懂编程,别担心!以下是这节的核心要点:
- 提示是AI的说明书:它告诉AI你是谁、目标是什么、怎么做决定。
- 框架的“黑箱”方便但不灵活:它们自动生成提示,但你没法细调。
- 自己写提示更好:你可以精确控制AI的行为,像写代码一样测试和改进。
- 好处是控制和透明:你知道AI在干什么,能让它更听话。
想试试看?即使你不会编程,也可以玩玩提示设计:
- 找一个 AI 聊天工具(比如DeekSeek)。
- 试着写一个简单的提示,比如:
看看AI怎么回答,试着改提示(比如加一句“总是先问客人有没有过敏”),观察变化。
这一节我们学会了如何“掌控提示”,让AI代理更听你的指挥。提示是你和AI之间的“对话脚本”,掌控它就意味着掌控AI的行为。接下来,我们会探讨:
上下文窗口:AI如何记住之前的步骤?
工具调用:提示如何生成结构化的指令?
微代理:如何用提示打造更可靠的AI助手?
让我们继续探索AI代理的魔法世界!
第三章
掌控你的上下文窗口
——让AI代理记住关键信息
在上一章,我们学会了如何通过“提示(Prompt)”告诉 AI 代理该做什么,就像给它一份清晰的说明书。但 AI 代理不仅需要知道“做什么”,还需要记住“之前发生了什么”。这就引出了一个关键概念:上下文窗口(Context Window)。这一章将用最简单的语言,带零基础的你了解上下文窗口是什么,为什么它重要,以及如何掌控它,让AI代理更聪明、更可靠!
3.1 什么是上下文窗口?AI代理的“记忆本”
上下文窗口就像 AI 代理的“记忆本”,记录了任务进行到哪一步,以及所有相关的信息。每次你问 AI 代理“下一步做什么?”,它会翻开这个记忆本,查看:
- 你说了什么(比如“部署后端”)。
- 之前做了什么(比如“检查了版本列表”)。
- 结果怎么样(比如“找到了版本v1.2.3”)。
- 其他相关信息(比如外部数据或错误日志)。
为什么需要上下文窗口?
AI代理的大语言模型(LLM)是“无状态”的,就像一个每次都从零开始思考的机器人。它不会自动记住之前的对话或操作。要让它知道“现在的情况”,你必须把所有相关信息塞进上下文窗口,作为输入给 LLM 。
简单来说:上下文窗口 = 过去发生的一切 + 当前任务。一个好的上下文窗口能让 AI 代理做出更准确的决定,就像一个记性好的助手。
3.2 上下文窗口包含什么?你的“信息拼盘”
上下文窗口就像一个信息拼盘,包含以下几种内容:
- 提示和指令:告诉AI它是谁、目标是什么、怎么决策(我们在第二章讲过)。
比如:“你是一个部署助手,先检查状态再部署。”
- 外部数据:从数据库、文件或搜索中获取的信息(也叫RAG,检索增强生成)。比如:“当前版本列表:v1.2.3, v1.2.2, v1.2.1。”
- 历史记录:之前的所有步骤、工具调用和结果。比如:“用户说'部署后端’ → 调用了list_git_tags → 得到版本列表。”
- 相关记忆:其他对话或事件的相关信息(比如之前的用户反馈)。比如:“用户上周说优先部署后端。”
- 输出格式指令:告诉AI应该返回什么格式的数据(比如JSON)。比如:“返回一个工具调用的JSON,包含intent和parameters。”
- 核心原则:上下文窗口的质量决定了AI代理的表现。给LLM更好的输入(清晰、简洁、相关),就能得到更好的输出。
3.3 标准上下文格式:简单但不完美
大多数 AI 代理使用一种标准的消息格式来组织上下文窗口,看起来像这样:
这种格式的优点:
- 简单通用:大多数LLM客户端都支持这种格式,像聊天记录一样直观。
- 结构清晰:用role(系统、用户、助手、工具)和content区分不同信息。
但它也有局限:
- 不够高效:JSON格式可能包含很多重复或不必要的字段,浪费“令牌”(Token,LLM处理文本的单位)。
- 不够灵活:标准格式可能不适合你的具体需求,比如需要特殊的数据结构。
- 注意力分散:长而复杂的消息列表可能让 LLM 难以抓住重点。为了让AI代理发挥最大潜力,你需要一种更高效、更定制化的上下文格式。
3.4 掌控上下文窗口:定制你的“记忆本”
与其依赖标准格式,你可以自己设计上下文窗口,根据任务需求优化信息结构。来看一个例子,把所有上下文塞进一条用户消息:
这个格式有什么特别?
- 像XML的结构:用<tag>标记不同类型的事件(比如<slack_message>、<list_git_tags>),清晰易读。
- 单条消息:把所有上下文塞进一条 user 消息,减少 JSON 的冗余字段。
- 定制化:你可以根据任务调整格式,比如只包含关键信息,忽略无关细节。
- 明确问题:最后一句“下一步做什么?”清楚地告诉LLM你的期望。
这个 XML 风格只是一个例子。你可以用 YAML 、纯文本,甚至完全自定义的格式,关键是让上下文更高效、更适合你的任务。
3.5 掌控上下文窗口的好处
自己设计上下文窗口就像给 AI 代理量身定制一个“记忆本”。以下是五大好处:
- 信息密度高:用紧凑的格式(比如XML或YAML)组织信息,让 LLM 更容易抓住重点。
- 错误处理:把错误信息(比如“部署失败”)结构化地加入上下文,帮助AI决定如何恢复(比如询问人类)。
- 安全性:你可以过滤敏感数据(比如用户密码),只把必要信息传给 LLM。
- 灵活性:根据任务调整上下文格式,实验哪种结构效果最好。
- 令牌效率:优化格式,减少不必要的文本,节省 LLM 的“令牌”预算(令牌越少,处理越快、成本越低)。
3.6 上下文工程的原则:打造最佳输入
上下文工程的核心是给 LLM 最好的输入。以下是一些实用原则:
- 一切都是上下文工程:提示、外部数据、历史、工具调用、记忆,都是上下文的一部分。
- 优化令牌效率:用简洁的格式传递信息,减少浪费。
- 清晰结构化:用标记(如<tag>)或分层结构让信息一目了然。
- 包含错误信息:让AI知道哪里出错,才能聪明地恢复。
- 过滤敏感数据:确保不把隐私信息传给 LLM。
- 实验不同格式:尝试 XML、YAML、纯文本,找到最适合你的格式。
- 反复出现的主题:没人知道最好的上下文格式是什么,但你需要灵活性去尝试一切!
如果你完全不懂编程,别担心!以下是这节的核心要点,用最简单的语言总结:
- 上下文窗口是AI的记忆本:它记录了任务的所有信息(用户说了什么、做了什么、结果如何)。
- 标准格式简单但不高效:像聊天记录一样,但可能浪费空间或不够灵活。
- 自定义上下文更好:你可以设计自己的格式(比如XML),让AI更容易理解。
- 好处是效率和控制:节省空间、处理错误、保护隐私、适应不同任务。
想试试看?玩玩上下文设计:
用 DeekSeek,试着给它一个“历史记录”+问题,比如:
看看AI怎么回答,试着改上下文(比如加一句“错误发生在昨天”),观察变化。
这一节我们学会了如何“掌控上下文窗口”,让AI代理记住关键信息并做出聪明决定。上下文窗口是你和AI之间的“记忆桥梁”,优化它能显著提升代理的表现。接下来,我们会探讨:
工具调用:上下文如何生成结构化的指令?
循环机制:AI如何基于上下文不断行动?
微代理:如何用上下文打造可靠的AI助手?
让我们继续探索~
如果你对AI应用充满好奇?想知道如何用 AI 打造属于自己的“多Agent工厂”?欢迎加入我们的付费微信群!在这里,你会遇到一群志同道合的小伙伴,一起分享经验、碰撞想法,探索AI的无限可能。