【用AI学Agent】Agent入门进阶:Prompt工程
首先欢迎大家点进文章,其次
申明:本系列内容是作者通过AI学习Agent得到的内容,如若有错误之处,欢迎批评指正
在上一篇博客中,我们学习了大模型的核心基础——它是Agent的“大脑”,而上下文窗口、Token、思维链等知识点,是我们理解“大脑”工作原理的关键。
但只有“大脑”还不够,就像一个天赋异禀的人,如果没有清晰的指令引导,也无法高效完成复杂任务。而Prompt工程,就是Agent的“灵魂”——它是连接用户需求与大模型输出的桥梁,是引导大模型生成正确思考过程、精准执行任务的核心手段。
开发Agent时,会遇到这样的问题:调用同一个大模型,有的时候输出精准、符合预期,有的时候却答非所问、逻辑混乱;明明是同样的需求,大模型却给出完全不同的结果。核心原因,就是没有掌握Prompt工程的技巧。
这篇博客,我们就聚焦Prompt工程,从“是什么”“为什么重要”,到“核心技巧”“Agent开发专属用法”,再到“避坑指南”,全是开发中能直接复用的干货,帮你真正掌握Agent的“灵魂技能”,让大模型听话、高效,为后续Agent架构、工具调用打下坚实基础。
一、Prompt工程到底是什么?
通俗来讲,Prompt(提示词)就是你对大模型说的“指令”,而Prompt工程,就是“设计、优化提示词,让大模型精准理解需求、输出符合预期结果”的过程。
举个简单的例子:同样是让大模型帮Agent生成工具调用参数,不同的Prompt,输出效果天差地别。
- 反面示例(无效Prompt):“帮我生成工具调用参数。”
输出可能是:“请告诉我需要调用什么工具、具体参数是什么。”——完全没有达到预期,还需要进一步追问,无法支撑Agent自主执行。
- 正面示例(有效Prompt):“你是一个数据分析Agent,现在需要调用联网工具查询2024年全国GDP数据,请生成JSON格式的工具调用参数,工具名称为search,参数包含keyword(查询关键词)、type(查询类型,设为data),无需多余解释,只输出JSON。”
输出会是:{"tool":"search","parameters":{"keyword":"2024年全国GDP数据","type":"data"}}——精准、简洁,能直接被Agent的工具调用模块识别,支撑自主执行。
这就是Prompt工程的价值:它不是“随便说一句话”,而是“有目的、有结构、有引导”地设计指令,让大模型的输出贴合Agent的开发需求,避免无效输出、减少幻觉,提升Agent的稳定性和效率。
结合上一篇的知识点,我们可以这样理解:大模型是Agent的“大脑”,Prompt就是“大脑的指令系统”——指令越清晰、越规范,大脑的决策和输出就越精准。
二、为什么Prompt工程是Agent的“灵魂”?
很多人觉得“Prompt就是写一句话,没必要花时间学习”,但在Agent开发中,Prompt工程的重要性远超你的想象——它直接决定了Agent的“智商”和“效率”,甚至能弥补大模型的部分缺陷。
核心原因有3点,尤其适合Agent开发场景:
1. 引导大模型生成“思维链”,支撑Agent自主决策
上一篇我们提到,思维链(CoT)是Agent自主决策的关键——让大模型“先思考、再输出”。而Prompt,就是引导大模型生成思维链的核心手段。
如果没有Prompt引导,大模型可能直接输出结果,没有任何推理过程,Agent无法判断结果的合理性,也无法根据思考过程调整下一步行动;而通过Prompt明确要求“先呈现思考过程,再给出结果”,就能让大模型输出清晰的推理链,支撑Agent的“思考→行动→观察→再思考”闭环。
示例Prompt(Agent任务拆解场景):“你是一个任务拆解Agent,用户需求是‘分析近3个月的产品销量,生成可视化报告’。请先呈现你的思考过程,一步步拆解任务,判断需要调用哪些工具,再给出任务拆解步骤,思考过程要详细,步骤要清晰可执行。”
2. 规范输出格式,降低Agent开发成本
Agent的开发中,大模型的输出往往需要被其他模块(如工具调用模块、记忆模块)识别和解析,这就要求输出格式必须规范(如JSON、XML、固定列表)。
通过Prompt工程,我们可以强制大模型输出指定格式的内容,避免输出杂乱无章的文本,减少Agent模块的解析成本,提升开发效率。比如:让大模型输出JSON格式的工具调用参数、输出固定结构的任务步骤、输出标准化的总结报告。
3. 弥补大模型缺陷,提升Agent稳定性
上一篇我们提到,大模型有幻觉、逻辑易出错、不会主动行动等缺陷。而优秀的Prompt,能有效缓解这些问题:
-
缓解幻觉:通过Prompt要求大模型“基于已知信息输出,不确定的内容标注‘未知’,不编造信息”;
-
减少逻辑错误:通过Prompt引导大模型“分步推理,每一步都说明理由”;
-
引导主动行动:通过Prompt明确Agent的角色和职责,让大模型“主动判断是否需要调用工具、是否需要追问用户”。
总结:Prompt工程不是“锦上添花”,而是Agent开发的“必备技能”——没有优秀的Prompt,再强大的大模型,也无法发挥出应有的作用,Agent也无法实现真正的自主执行。
三、Prompt工程核心技巧
Prompt工程没有统一的“标准答案”,但有一些通用的核心技巧,尤其适配Agent开发场景,掌握这些技巧,能让你的Prompt效率翻倍,输出更精准。下面我们结合Agent开发的实际需求,逐一讲解,每个技巧都配示例,方便直接复用。
技巧1:明确Agent角色,给大模型“定身份”
大模型的输出会受“角色设定”的影响——明确Agent的角色,能让大模型快速进入状态,输出符合角色定位的内容。角色设定要具体,不能模糊,要包含“身份”“职责”“能力范围”。
适用场景:Agent的System Prompt(全局指令),用于定义Agent的核心定位。
示例(数据分析Agent角色设定):
你是一个专业的数据分析Agent,负责帮用户完成各类数据查询、分析、可视化任务。你的职责包括:1. 拆解用户的数据分析需求;2. 判断需要调用的工具(销售数据查询工具、Excel分析工具、联网工具);3. 生成规范的工具调用参数;4. 分析工具返回的数据,生成结构化报告。你只能输出与数据分析相关的内容,不回答无关问题,不确定的信息标注“未知”,不编造数据。
避坑点:角色设定不要太模糊(如“你是一个Agent”),要具体到Agent的类型、职责,让大模型明确自己该做什么、不该做什么。
技巧2:结构化Prompt,让需求更清晰
大模型对结构化的信息更敏感,杂乱无章的Prompt容易让大模型误解需求。Agent开发中,建议采用“角色+任务+要求+格式”的结构化Prompt,让大模型快速抓取核心信息。
结构化Prompt模板(可复用):
【角色】你是一个[Agent类型,如:代码开发Agent],负责[核心职责,如:生成Python代码、调试代码、解释代码逻辑]。
【任务】[具体任务,如:生成一段用Pandas读取Excel文件、计算平均值并输出结果的Python代码]。
【要求】1. [核心要求,如:代码简洁、注释清晰、能直接运行];2. [补充要求,如:不使用第三方库,只使用Pandas原生函数];3. [思维链要求,如:先呈现代码的思考过程,再输出代码]。
【输出格式】[指定格式,如:先输出思考过程(分点),再输出代码(用代码块包裹),最后简单解释代码逻辑]。
示例(代码开发Agent结构化Prompt):
【角色】你是一个代码开发Agent,负责生成Python代码、调试代码,专注于数据分析相关的代码开发。
【任务】生成一段Python代码,用Pandas读取本地Excel文件(路径为./data/sales.xlsx),读取“销量”列,计算该列的平均值、最大值、最小值,并将结果输出为JSON格式。
【要求】1. 代码简洁,注释清晰,能直接运行;2. 处理可能的异常(如文件不存在、“销量”列不存在);3. 先呈现代码的思考过程,再输出代码;4. 不使用额外的第三方库。
【输出格式】思考过程(分点)→ 代码(用Python代码块包裹)→ 代码逻辑解释(1-2句话)。
技巧3:加入“思维链引导”,强制大模型“思考”
如前所述,思维链是Agent自主决策的关键,因此在Prompt中,必须明确要求大模型输出思考过程。引导方式有两种,可根据Agent场景选择:
-
方式1:直接要求“先思考,再输出”,适合复杂任务(如任务拆解、工具调用决策);
-
方式2:给出思维链示例,让大模型模仿(少样本学习),适合简单任务(如固定格式输出、简单推理)。
示例1(直接引导,任务拆解场景):
你是一个任务拆解Agent,用户需求是“生成一份2024年Q2产品销售复盘报告”。请先呈现你的思考过程,一步步拆解任务,包括需要获取哪些数据、调用哪些工具、报告的结构的是什么,思考过程要详细,再给出具体的任务拆解步骤,不要跳过任何环节。
示例2(少样本引导,工具调用场景):
你是一个工具调用Agent,负责根据用户需求,生成对应的工具调用参数(JSON格式)。请先呈现思考过程,再输出参数,参考以下示例:
示例:用户需求“查2024年Q2全国GDP数据”
思考过程:用户需要查询2024年Q2全国GDP数据,属于实时数据,需要调用联网工具;工具名称为search,参数需要包含keyword(查询关键词)、time(时间范围),因此生成对应的JSON参数。
输出:{"tool":"search","parameters":{"keyword":"2024年Q2全国GDP数据","time":"2024年4-6月"}}
现在用户需求:“查近3个月A产品的销售数据”,请按照示例格式,先思考,再输出参数。
技巧4:规范输出格式,适配Agent模块
Agent的工具调用模块、记忆模块,往往需要解析大模型的输出,因此Prompt中必须明确输出格式,避免杂乱无章的文本。常用的输出格式包括JSON、XML、固定列表、代码块等,根据Agent模块的需求设定。
关键技巧:用“强制指令”+“格式示例”,确保大模型严格按照格式输出,避免多余内容。
示例(工具调用参数输出,JSON格式):
你是一个工具调用Agent,用户需求是“用Excel工具分析./data/sales.xlsx文件中的销量数据,计算各品类的销量占比”。请生成JSON格式的工具调用参数,工具名称为excel_analysis,参数包含file_path(文件路径)、analysis_type(分析类型,设为proportion)、target_column(目标列,设为“品类”“销量”)。只输出JSON,不添加任何多余解释、不换行,确保能直接被工具调用模块解析。
示例输出:{"tool":"excel_analysis","parameters":{"file_path":"./data/sales.xlsx","analysis_type":"proportion","target_column":["品类","销量"]}}
技巧5:加入“约束条件”,减少无效输出和幻觉
大模型容易出现幻觉、输出无关内容,因此在Prompt中,需要加入约束条件,明确“不能做什么”,提升输出的准确性和规范性。
Agent开发中常用的约束条件:
-
不编造信息:“不确定的内容标注‘未知’,不编造数据、不虚构知识点”;
-
不输出无关内容:“只输出与当前任务相关的内容,不回答无关问题、不添加多余解释”;
-
严格遵循格式:“必须按照指定格式输出,不改变格式、不遗漏参数”;
-
控制输出长度:“输出内容控制在500Token以内,简洁明了”。
示例(带约束条件的Prompt):
你是一个信息检索Agent,负责帮用户查询“2024年Q2A产品的市场占有率”。请调用联网工具,生成工具调用参数(JSON格式),约束条件:1. 不编造任何数据,不确定的参数留空;2. 只输出JSON,不添加任何多余解释;3. 工具名称固定为search,参数包含keyword、time_range两个字段;4. keyword必须精准,包含“2024年Q2”“A产品”“市场占有率”。
四、Agent开发中Prompt的两种核心类型
在Agent开发中,Prompt主要分为两种类型:System Prompt(全局指令)和User Prompt(用户指令),两者分工不同、相辅相成,必须合理设计,才能让Agent高效运行。
1. System Prompt(全局指令)——Agent的“行为准则”
System Prompt是全局生效的指令,用于定义Agent的角色、职责、行为准则、输出规范,相当于Agent的“行为手册”,大模型会全程遵循这个指令处理所有用户需求。
核心要点(必须包含):
-
Agent的角色和核心职责(如:数据分析Agent,负责数据查询、分析、报告生成);
-
行为准则(如:不编造信息、不输出无关内容、严格遵循格式);
-
工具调用规则(如:能调用哪些工具、工具调用参数的格式);
-
思维链要求(如:必须先呈现思考过程,再输出结果);
-
输出格式规范(如:默认输出JSON格式、任务步骤用列表呈现)。
示例(数据分析Agent System Prompt):
你是一个专业的数据分析Agent,核心职责是帮用户完成各类数据分析任务,包括数据查询、数据处理、趋势分析、报告生成。你的行为准则如下:
1. 严格遵循用户需求,不偏离任务主题,不回答无关问题;
2. 所有输出必须先呈现思考过程(分点拆解,详细说明每一步的目的),再给出最终结果;
3. 可调用的工具包括:销售数据查询工具(tool_name: sales_query)、Excel分析工具(tool_name: excel_analysis)、联网工具(tool_name: search),工具调用参数必须为JSON格式,只包含tool和parameters两个字段;
4. 不确定的信息标注“未知”,不编造数据、不虚构分析结果;
5. 报告生成类任务,输出格式为:思考过程→数据来源→分析结果→结论建议,简洁明了,重点突出。
注意:System Prompt是全局指令,不需要频繁修改,一旦设定,大模型会全程遵循,因此设计时要全面、严谨,覆盖Agent的所有核心行为。
2. User Prompt(用户指令)——Agent的“具体任务”
User Prompt是用户输入的具体需求,是Agent需要完成的具体任务,相当于“临时指令”,需要结合System Prompt的规则,引导大模型输出符合要求的结果。
核心要点(必须包含):
-
具体任务描述(如:分析近3个月A产品的销量趋势,生成可视化报告);
-
补充需求(如:需要调用Excel工具,报告包含折线图、数据表格);
-
输出格式要求(如:报告用Markdown格式,折线图用文字描述大致趋势)。
示例(User Prompt,结合System Prompt):
任务:分析近3个月(2024年4-6月)A产品的销量趋势,生成可视化报告。
补充需求:1. 调用销售数据查询工具获取A产品近3个月的每日销量数据;2. 调用Excel分析工具绘制销量折线图,分析趋势(上升/下降/波动);3. 报告中包含数据表格(每日销量)、趋势分析、可能的影响因素;4. 严格按照System Prompt要求,先输出思考过程,再输出报告。
注意:User Prompt要具体,避免模糊(如“分析销量”改为“分析近3个月A产品的销量趋势,生成包含折线图的报告”),这样才能让大模型精准理解任务,结合System Prompt的规则输出结果。
五、Prompt工程避坑指南
很多新手掌握了Prompt技巧后,依然会出现输出不符合预期的情况,核心是踩了一些高频坑。下面整理了Agent开发中Prompt工程的5个高频踩坑点,帮你避坑,提升Prompt的有效性。
坑1:Prompt过于模糊,没有明确需求和格式
常见错误:“帮我做数据分析”“生成工具调用参数”——需求模糊、没有格式要求,大模型无法精准理解,输出杂乱无章。
解决方案:按照“角色+任务+要求+格式”的结构化Prompt设计,明确任务细节和输出格式,避免模糊表述。
坑2:忽略思维链引导,直接要求输出结果
常见错误:“生成A产品近3个月的销量分析报告,直接输出结果”——没有引导大模型输出思考过程,大模型可能出现逻辑错误、幻觉,Agent无法判断结果的合理性。
解决方案:无论任务简单还是复杂,都要在Prompt中明确要求“先呈现思考过程,再输出结果”,复杂任务可加入思维链示例。
坑3:没有约束条件,大模型输出多余内容
常见错误:只要求大模型输出结果,没有约束“不输出无关内容”,导致大模型输出大量冗余解释,Agent模块无法解析。
解决方案:在Prompt中加入明确的约束条件,如“只输出JSON,不添加任何多余解释”“输出内容控制在500Token以内”。
坑4:System Prompt和User Prompt冲突
常见错误:System Prompt要求“输出JSON格式”,User Prompt要求“输出Markdown格式”,导致大模型输出混乱,无法适配Agent模块。
解决方案:设计User Prompt时,必须遵循System Prompt的规则,若需要修改输出格式,可在User Prompt中明确说明,但要确保与Agent模块的解析需求一致。
坑5:Prompt过长,超出上下文窗口
常见错误:将大量无关信息、历史对话加入Prompt,导致Prompt过长,超出大模型的上下文窗口,大模型遗忘核心需求。
解决方案:Prompt要简洁,只保留核心信息(角色、任务、要求、格式),无关信息、历史对话可通过Agent的记忆模块存储,不需要加入Prompt。
六、核心总结:Prompt工程与Agent的核心关联
结合上一篇的大模型基础,我们可以用一句话总结Prompt工程与Agent的关系:
大模型是Agent的“大脑”,Prompt工程是“大脑的指令系统”,思维链是“大脑的思考方式”,工具调用是“大脑的行动能力”——Prompt工程连接了用户需求、大模型和Agent的其他模块,是Agent实现自主执行的核心桥梁。
再梳理一下核心逻辑,帮你串联起前两篇的知识点:
-
大模型(LLM)提供“理解能力”和“生成能力”,是Agent的核心;
-
Prompt工程通过设计规范、清晰的指令,引导大模型生成“思维链”,让大模型的输出贴合Agent的需求;
-
思维链支撑Agent的“自主决策”,让Agent能一步步拆解任务、判断下一步行动;
-
工具调用(Function Calling)是Agent的“手脚”,而Prompt工程规范了工具调用参数的输出格式,让Agent能自主调用工具;
-
最终,通过Prompt工程的引导,大模型、思维链、工具调用、记忆模块整合在一起,形成一个完整的Agent,实现“自主感知→决策→执行→迭代”的闭环。
写在最后
这篇博客,我们详细讲解了Prompt工程的核心知识点、技巧、避坑点,以及它在Agent开发中的具体应用——它不是“玄学”,而是有规律、可复用的实用技能。
很多新手开发Agent时,会陷入“追求更强大的大模型”的误区,却忽略了Prompt工程的重要性。其实,在Agent开发中,“用好Prompt”比“用好大模型”更重要——同一个大模型,通过优秀的Prompt引导,能发挥出远超预期的效果;反之,即使是最强大的大模型,没有合理的Prompt引导,也无法支撑Agent自主执行。
建议你结合上一篇的大模型基础,再反复研读这篇博客的技巧和示例,多动手实践——尝试设计System Prompt、User Prompt,测试不同Prompt的输出效果,慢慢掌握Prompt工程的精髓。
下一篇,我们将讲解Agent的“手脚”——Function Calling(工具调用),教你如何让Agent自主调用工具、执行行动,真正实现“能思考、能做事”,逐步搭建起一个完整的Agent框架。

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)