AI Agent提示词工程:三层架构实战指南

在AI Agent开发中,提示词工程(Prompt Engineering)是决定成败的最大杠杆。相比工具调用、模型微调等手段,提示词工程拥有最高的投入产出比。本文基于n8n平台的实战教程,系统性地拆解AI Agent提示词的三层架构——系统层、输入层和行动层,帮助你构建真正可用的单任务AI Agent。
核心理念:把提示词当作员工手册
理解提示词工程最好的比喻是:你在一家异步办公文化的公司里当经理,需要通过一本操作手册来指导一位新入职的实习生完成工作。你不能和他直接对话,只能靠这本手册让他理解自己的角色、任务流程、使用工具的方法以及注意事项。
这本手册的质量直接决定了这位"员工"的工作表现。即使随着AI模型的进化,这位"实习生"可能升级为"初级员工"甚至"高级员工",你仍然需要精确地指导他完成你期望的任务。
值得强调的是,本文的指导专门针对AI Agent场景,而非原始LLM调用。很多网上的提示词教程假设你在直接操作裸模型,但Agent场景有其独特的需求和最佳实践。
三层架构总览
提示词工程可以分为三个层次:
- 系统层(System Layer):定义AI Agent的角色、规则、任务流程和上下文
- 输入层(Input Layer):处理用户请求,包括人类交互和程序化调用
- 行动层(Action Layer):定义工具的名称、描述和使用说明
系统层:提示词的核心阵地
系统层是整个提示词工程中最重要的部分,包含五个关键组成部分。
角色提示(Role Prompting)
角色提示是告诉AI Agent"你是谁",而不是"你要做什么"。可以把它理解为职位描述的前两句话。定义角色的价值在于:当遇到模糊情境时,角色定义提供了一个高层次的决策框架。
以美容沙龙预约助手为例,角色提示的格式通常是:
# Role
You are a scheduling assistant working for a beauty salon.
Your role is to help customers schedule an appointment in the beauty salon's calendar.
几个关键原则:
- 术语一致性:如果前面用了"beauty salon",后面就不要换成"salon"。虽然LLM能理解语义相似性,但完全一致的用词匹配更强
- 关注分离:角色描述中不要提及具体工具(如Google Calendar),因为工具可能会更换
- 使用Markdown格式:用H1标题标注"Role",便于自己维护,也有助于AI理解结构

指令定义(Instructions)
指令是告诉AI Agent完成任务的高层步骤。这里有一个平衡点:如果步骤过于细致,就等于定义了一个固定工作流,失去了Agent自主决策的优势。
编写指令前,先以人类视角思考整个流程:用户来电→询问日期→检查可用性→展示时段→收集信息→创建预约→确认结果。然后将其提炼为编号步骤:
- 询问用户偏好的预约日期
- 使用
check_calendar_availability工具查找空闲时段 - 展示可用时段,获取用户选择;若无可用时段,回到步骤1
- 收集预约所需信息(姓名、邮箱等)
- 使用
create_calendar_appointment工具创建预约 - 通知用户预约结果
几个重要技巧:
- 使用编号而非项目符号:方便在其他步骤中引用(如"回到步骤1")
- "user"与"customer"的区别:在角色描述中用"customer"体现服务关系,在指令中用"user"因为这与LLM底层的user message概念直接关联
- 工具名称精确匹配:指令中引用的工具名必须与实际工具名完全一致
- 适度授权:"ask the user for the information you require"给了Agent一定自主权,让它根据工具表单自行判断需要收集哪些信息
规则设定(Rules)
规则通常来自两个来源:预防性的关键约束,以及测试/上线后发现问题的修复。这是一个持续迭代的区域。
# Rules
- Always use UTC+1 timezone when using tools or their outputs
- Don't make things up. Ask the user a clarifying question if you need additional information to complete your task
规则的典型场景包括:时区设定、语言限制(如"始终使用英语回复")、防止幻觉的兜底策略等。
少样本提示(Few-Shot Prompting)
"Shot"在LLM语境中就是"示例"。提供1个示例叫one-shot,多个叫few-shot。就像人类看几个例子后更容易理解任务一样,AI Agent也是如此。

对于预约成功后的通知消息,可以提供两个精心设计的示例:
<example>
I have successfully booked your appointment! Here are the details:
**Date and Time:** 14:30 on Wednesday, 15th January 2025
**Email for booking:** jane@doe.com
If you need to cancel, please call +49 30 12345678
</example>
<example>
I have successfully booked your appointment! Here are the details:
**Date and Time:** 09:00 on Friday, 7th February 2025
**Email for booking:** nikola@n8n.io
If you need to cancel, please call +49 30 12345678
</example>
示例设计的核心思路是定义"好"的边界:
- 一个时间在12点后,一个在12点前——明确表示使用24小时制
- 使用不同的邮箱——避免模型对特定占位符名称赋予过多权重
- 保持固定部分完全一致(如电话号码)——无需额外规则说明
- 使用XML标签包裹示例——明确示例的起止边界
附加上下文(Additional Context)
LLM不知道今天是星期几,也不了解你的业务细节。这些"环境信息"需要显式提供。

在n8n中,可以通过表达式注入动态数据:
# Additional Context
- The date and time right now is: {{ $now }}
- The beauty salon is called Max's Gorgeous Looks, best blowouts in Berlin
- The beauty salon's phone number is +49 30 12345678
{{ $now }}会实时渲染为当前日期时间,确保Agent始终知道"现在"是什么时候。
减少幻觉的策略
防止AI胡编乱造是生产环境中的关键需求。核心策略包括:
- 给予逃生出口:允许Agent说"我不知道",而不是强迫它永远"有帮助"
- 要求引用来源:让Agent输出工具返回的相关引用,因为"如果它没有输出,它就没有思考"
- 明确禁止编造:在规则中直接写明"Don't make things up"
输入层:用户请求的处理
输入层处理两种场景:人类交互和程序化调用。
在聊天场景中,n8n的Chat Trigger会自动将用户消息映射为chat_input变量传入Agent。如果使用Telegram、WhatsApp等第三方触发器,需要手动将消息字段映射到用户消息中。
在程序化场景中(如Webhook触发),需要将静态提示与动态数据拼接,类似邮件合并:
Perform an analysis on the following username: {{ $json.username }}
这种模式适用于账户健康检查、数据分析等非交互式任务,可以从CRM、支持系统等多个来源汇聚数据后注入提示词。
行动层:工具的精确定义
行动层决定了Agent能否正确使用外部工具,这在工具开始具备"破坏性操作"(如删除邮件)时尤为关键。

工具命名
- 不使用空格,采用下划线、驼峰或短横线格式(如
check_calendar_availability) - 在系统提示中引用工具时,必须使用完全一致的名称
参数描述
为每个参数提供清晰的名称和格式说明。一个实用技巧:在n8n中先用固定模式选择一个值,再切换到表达式模式查看其文本格式,然后将该格式写入参数描述中。
工具描述
工具描述遵循关注分离原则:与工具相关的提示词放在工具描述中,而非系统消息中。这样更换工具时(如从Google Calendar切换到其他日历),不需要修改系统提示。
描述格式通常是:
Use this check_calendar_availability tool to fetch existing appointments
for a specified period and determine available time slots.
## Steps
1. Specify the date range (midnight to 23:59 of the target date)
2. Retrieve existing appointments within the range
3. Calculate gaps between appointments to find availability
4. Ensure each gap meets minimum appointment length, no overlap allowed
By following these steps, you can accurately find valid appointment windows.
最后一句"总结性重申"虽然不是严格的科学方法,但实践中被认为能提升指令遵循的效果。
实战建议
- 从单任务开始:让Agent先把一件事做好,再扩展到多任务
- 持续迭代规则:规则列表是活的文档,根据测试和生产反馈不断补充
- 善用AI辅助写提示词:可以用ChatGPT优化提示词片段,但你必须具备审核能力
- 分层管理复杂度:系统层管全局,行动层管工具,输入层管数据——各司其职
提示词工程不是一个30分钟就能精通的技能,它本身已经是一个高薪专业方向。但掌握这三层架构的基本框架,足以让你构建出可用且可维护的AI Agent解决方案。
相关推荐
教程攻略Cursor+Codex双IDE协同:开源项目二开实战方法论
基于实战经验总结的开源项目二次开发完整方法论,详解Cursor+Codex双IDE协同工作流,涵盖二开七环节、MVP验证、AI读源码技巧,帮助开发者三天跑通项目、两周完成业务集成。
教程攻略Cursor多Agent实战:50分钟搭建Next.js全栈博客
使用Cursor IDE多Agent协作模式,50分钟内从零搭建全栈博客。涵盖Next.js、Clerk认证、Supabase数据库集成,详解4个AI Agent分阶段开发流程与关键避坑经验。
教程攻略从零搭建AI软件工厂:Cursor工程师的多Agent协作实战经验
Cursor工程师Eric分享AI软件工厂构建实战:从自动化六层级、护栏设计、并行Agent管理到规模化扩展,详解如何用多Agent协作实现7×24小时高效软件开发。