提示工程与AI智能体构建指南
随着生成式AI技术的飞速发展,企业和开发者们逐渐将注意力转向如何设计和构建能够执行复杂任务的AI智能体(AI Agents)。本文将基于Google、Anthropic和OpenAI等领先AI公司的最新研究和指南,探讨提示工程(Prompt Engineering)的核心原则以及构建有效AI智能体的最佳实践。 参考资料可直接复制链接进行查看和下载. 如需中文版翻译, 请在评论区回复.
第一部分:提示工程指南
提示工程是通过清晰、结构化的指令与AI模型(如大型语言模型LLM)交互,以获得期望输出的过程。无论是起草邮件、分析数据还是生成报告,优质的提示都能显著提升AI的表现。Google和Anthropic的指南为我们提供了简单到高级的提示设计方法。
如何编写有效的提示?
Google的《Gemini for Google Workspace: Prompting 101》(2024年10月版)
https://services.google.com/fh/files/misc/gemini-for-google-workspace-prompting-guide-101.pdf
Gemini for Google Workspace: Prompting 101
这是一份面向Google Workspace用户的手册,涵盖Gmail、Google Docs、Google Sheets、Google Meet等工具。Gemini通过自然语言处理支持多种任务,如起草文档、整理数据和优化会议记录。其提示设计框架包含四个核心要素:
要素 | 描述 | 示例 |
---|---|---|
Persona(角色) | 指定 AI 的角色或视角 | “你是一个项目经理” |
Task(任务) | 使用明确的动词定义任务 | “起草一份项目计划” |
Context(背景) | 提供相关背景信息 | “基于上周的团队会议记录” |
Format(格式) | 定义输出格式 | “以 bullet points 列出” |
不同角色的应用示例
Google还提供了多种职业角色的提示示例,涵盖行政支持、客户服务、市场营销等。例如:
角色 | 任务示例 | 提示示例 |
---|---|---|
行政支持 | 规划会议议程 | “你是一个行政助理,根据上周的邮件内容,为下周的团队会议起草一份议程,以表格形式呈现。” |
市场营销 | 制定品牌策略 | “你是一个市场营销专家,基于最新的市场调研数据,总结三种品牌推广策略,用 bullet points 列出。” |
客户服务 | 回复客户投诉 | “你是一个客户服务代表,根据客户的投诉邮件,起草一封语气友好的回复,包含解决方案和道歉。” |
高管 | 准备演讲稿 | “你是一个企业高管,为即将召开的行业会议准备一份 5 分钟的演讲稿,主题是数字化转型,格式为段落式。” |
隐私保障:Google承诺Gemini仅在Workspace环境内处理数据,不用于广告或模型训练,为企业用户提供安全保障。
Anthropic的提示工程:技术且多功能
Anthropic为Claude模型提供的提示工程资源更偏技术化,适合复杂任务。
https://docs.anthropic.com/en/docs/build-with-claude/prompt-engineering/overview
Anthropic Prompt Engineering Overview
根据Anthropic的提示工程指南,一个有效的提示通常包含以下核心要素:
- 明确的指令:清晰地说明你希望AI完成什么任务
- 角色定义:为AI分配特定的专业角色
- 上下文信息:提供充分的背景和相关数据
- 输出格式:指定你希望获得的回答格式
以下是按有效性排序的关键技巧:
- Prompt Generator:在Anthropic Console中提供,适合初学者生成初始提示。
- 清晰直接:提示需简洁,避免歧义。
- 多示例提示(Multishot):通过多个示例引导输出,推荐使用
<example>
标签。例如:请根据以下示例生成产品描述: <examples> <example>产品A:这是一款高性能笔记本电脑,配备了最新的处理器和高清显示屏。</example> <example>产品B:这是一款轻便的旅行背包,采用耐磨材料制作,适合长途旅行。</example> </examples>
- 链式思考(Chain of Thought):鼓励AI逐步推理,适合复杂任务。例如:
请逐步思考以下问题:如果一个火车以每小时60公里的速度行驶,另一个火车以每小时80公里的速度行驶,它们从相距500公里的两地同时出发,相向而行,几小时后相遇? <thinking>Step 1: 计算两火车相对速度... Step 2: 计算相遇时间...</thinking> <answer>最终答案</answer>
- 使用XML标签:结构化输出,提高可读性。
- 指定角色(System Prompts):如“你是一个财务顾问”。
- 预填充响应:引导AI输出。
- 链式复杂提示:将任务分解为多步。
- 长上下文优化:处理长文本输入。
Anthropic的交互式提示工程教程进一步补充,提供9个章节,涵盖初级(基本结构、清晰指令、角色分配)、中级(数据与指令分离、输出格式化、预认知、使用示例)和高级(避免幻觉、构建复杂提示,包含行业用例如聊天机器人、法律服务等)。教程包含“Example Playground”供实践,答案密钥在Google Sheets,并可通过Claude for Sheets访问。
实用建议
- 从简单开始:尝试清晰的单步提示,逐步迭代优化。
- 使用具体示例:减少AI误解,如提供明确的产品描述样本。
- 审查输出:尤其在高风险场景中,确保准确性。
- 结合两家方法:用Google的框架快速处理日常任务,结合Anthropic的链式思考处理复杂项目。
谷歌Gemini实战样例
Google统计发现,最有效的提示平均约21个词,而人们常用的提示往往不到9个词。以下是一个行政助理场景的实际案例对比:
基础提示:
安排会议
优化提示:
作为行政助理,请根据以下信息安排一个团队会议:
- 时间:下周三下午2-4点
- 参与人:市场部全体和销售总监
- 议题:Q2营销策略讨论
- 地点:主会议室或线上Teams会议
请生成一封正式邮件邀请,包含所有必要信息和会议议程概要。
这个增强版提示明确了角色、上下文和所需的具体输出,能够获得更实用的结果。
第二部分:AI智能体构建指南
什么是AI智能体?
AI智能体是能够代表用户独立完成任务的系统,具备动态决策、工具集成和自主性。OpenAI将其定义为:
- 动态决策:利用LLM推理和规划任务。
- 工具集成:通过API或数据库执行操作。
- 自主性:识别任务完成或失败,必要时请求干预。
Anthropic区分了工作流(预定义代码路径)和智能体(LLM动态指导),后者适合需要灵活决策的场景。例如,一个客户支持智能体可以检索订单、评估退款条件并回复用户。
这篇文章介绍工作流和智能体的区别
https://mp.weixin.qq.com/s/AJskLM2Hd-AqwwlorLqC9g
Agent和Workflow的区别
何时构建 AI 智能体?
OpenAI 的指南建议在以下场景中考虑构建 AI 智能体:
https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf
A practical guide to building agents
场景 | 描述 | 示例 |
---|---|---|
复杂决策 | 需要细致判断的任务 | 退款审批,需综合考虑订单历史和客户反馈 |
难以维护的规则 | 规则复杂且易出错 | 供应商安全审查,涉及多方标准 |
非结构化数据 | 处理大量文本或图像数据 | 保险索赔中的文档分析 |
在决定构建智能体之前,需验证用例是否适合 AI 智能体,否则传统的确定性自动化方案可能更高效。
AI 智能体设计基础
AI 智能体由以下三个核心组件构成:
组件 | 描述 | 示例 |
---|---|---|
Model(模型) | 驱动推理和决策的 LLM | OpenAI 的 GPT 模型 |
Tools(工具) | 扩展功能的外部接口 | 查询数据库的 API、发送邮件的函数 |
Instructions(指令) | 定义行为的指南 | “优先处理紧急请求,语气保持专业” |
OpenAI 提供了 Agents SDK 来简化开发,但这些概念也可通过其他框架或从头实现。
选择模型
模型选择需平衡任务复杂性、响应速度和成本。指南建议:
- 从最强大的模型(如 GPT-4)开始,验证任务可行性。
- 建立性能基准后,测试较小的模型以优化成本和速度。
- 优先确保准确性,再考虑效率。
定义工具
工具是智能体与外部系统交互的关键,分为三类:
工具类型 | 功能 | 示例 |
---|---|---|
数据工具 | 检索上下文 | 查询 CRM 系统中的客户数据 |
动作工具 | 执行操作 | 发送确认邮件、更新订单状态 |
编排工具 | 协调其他智能体 | 将任务分配给专门的翻译智能体 |
工具需文档齐全、经过测试,并支持重复使用以提高开发效率。
配置指令
高质量的指令能显著减少智能体的错误率。最佳实践包括:
- 参考现有文档(如公司政策)定义行为。
- 将复杂任务分解为小步骤。
- 明确操作流程并处理边缘情况(如缺失的用户输入)。
例如,指令可以是:“如果客户未提供订单号,回复邮件请求补充信息,语气礼貌。”
编排模式(Orchestration)
模式 | 描述 | 适用场景 |
---|---|---|
单智能体系统 | 一个智能体通过工具循环执行任务 | 简单任务,如自动回复邮件 |
多智能体系统 | 多个智能体分工协作 | 复杂工作流,如客户服务分流 |
多智能体系统又分为两种模式:
- 管理器模式(Manager):中央智能体协调专用智能体,例如一个主智能体将客服任务分配给特定的子智能体。
# 管理者模式的代码示例
from agents import Agent
# 创建管理者智能体
manager_agent = Agent(
name="ManagerAgent",
instructions="你是客服团队的主管。负责分类客户请求并将其分配给适当的专家智能体处理。",
tools=[assign_to_billing, assign_to_technical, assign_to_sales]
)
# 创建专家智能体
billing_agent = Agent(
name="BillingAgent",
instructions="你是账单专家,处理所有与账单、付款、退款相关的问题。",
tools=[check_invoice, process_refund]
)
# 使用示例
response = manager_agent.invoke("客户抱怨最近账单金额不正确")
# 管理者可能会调用 assign_to_billing 工具将请求转发给账单专家
- 去中心化模式(Decentralized):智能体之间点对点传递任务,例如,客户服务中的分流智能体:
# 去中心化模式的代码示例
from agents import Agent
# 创建接待智能体
reception_agent = Agent(
name="ReceptionAgent",
instructions="你是初始联系点。识别客户需求,然后将控制权移交给适当的专家智能体。",
tools=[transfer_to_expert]
)
# 使用示例
response = reception_agent.invoke("我想升级我的套餐")
# 接待智能体识别这是销售相关请求,会调用transfer_to_expert工具
# 将控制权完全移交给销售智能体,自己不再参与后续对话
这些示例展示了不同智能体协作模式的实现方式,可以根据业务需求选择合适的架构。
AI智能体构建原则
Anthropic在其《Building Effective Agents》指南中介绍了构建基于Claude的智能体系统的关键原则:
https://www.anthropic.com/engineering/building-effective-agents
Building Effective Agents
1. 明确智能体的边界与能力
- 清晰定义智能体可以执行和不能执行的操作
- 设计适当的权限控制和安全措施
- 建立用户与智能体之间的信任边界
2. 思考链(Chain-of-Thought)
Anthropic推荐使用"思考链"提示技术,引导模型:
思考链案例:
你是一名财务顾问。客户想知道是否应该提前还清他的抵押贷款。
请使用以下步骤分析:
1. 确定需要考虑的关键变量
2. 分析提前还贷的优点
3. 分析提前还贷的缺点
4. 考虑客户可能的替代投资选择
5. 提供最终建议
请在每个步骤中明确你的思考过程,然后给出综合结论。
通过这种引导式思考,Claude能够提供更有逻辑性和深度的分析,比直接生成结论更可靠。
3. 有效工具使用
- 教导模型何时以及如何使用外部工具
- 设计清晰的工具调用格式
- 实现工具使用的闭环反馈
4. Anthropic工具使用案例
Anthropic的交互式教程展示了如何指导Claude使用工具。以下是一个简化的数据分析工具使用示例:
https://github.com/anthropics/prompt-eng-interactive-tutorial
Anthropic's Interactive Prompt Engineering Tutorial
你是一名数据分析师。你有权限使用以下工具:
1. search_database(query): 搜索企业数据库
2. create_visualization(data, type): 创建可视化图表
3. perform_calculation(formula): 执行数学计算
当用户询问销售数据时,先使用search_database工具获取原始数据,
再使用perform_calculation进行必要的计算,
最后使用create_visualization创建合适的图表。
每次使用工具时,请严格按以下格式:
<tool>工具名称</tool>
<input>输入参数</input>
示例工作流程:
用户:请分析上个季度的销售趋势。
分析师:我将分析上个季度的销售趋势。
<tool>search_database</tool>
<input>SELECT date, sales FROM quarterly_sales WHERE quarter = 'Q2 2023' ORDER BY date</input>
[数据库返回结果]
现在我将计算环比增长率...
<tool>perform_calculation</tool>
<input>(current_value - previous_value) / previous_value * 100</input>
[计算结果]
最后创建可视化图表...
<tool>create_visualization</tool>
<input>data=quarterly_sales, type=line_chart, x=date, y=sales</input>
[生成的图表]
以上是上个季度的销售趋势分析...
这个示例展示了如何明确定义工具、使用格式和工作流程,使Claude能够按照结构化方式使用外部工具完成复杂任务。
护栏(Guardrails)
护栏是确保智能体安全和可靠性的关键机制,用于管理数据泄露或不当行为等风险。常见护栏包括:
护栏类型 | 功能 | 示例 |
---|---|---|
相关性分类器 | 过滤无关输出 | 确保回复与用户查询相关 |
PII 过滤器 | 保护个人身份信息 | 屏蔽客户姓名或地址 |
内容审核 | 防止不当内容 | 阻止生成冒犯性语言 |
Anthropic建议逐步实施规则和动态验证,必要时引入人工干预。例如,OpenAI的护栏代码:
@input_guardrail
async def churn_detection_tripwire(ctx, agent, input):
result = await Runner.run(churn_detector, agent, input, context=ctx.context)
return GuardrailFunctionOutput(
output_info=result.final_output,
tripwire_triggered=result.final_output.is_churn_risk
)
护栏需逐步实施,结合规则(如黑名单)和动态验证(如输出检查)。对于高风险任务,人工干预必不可少。
构建高效AI智能体的实践建议
1. 清晰定义智能体目标
- 明确智能体要解决的核心问题
- 设定具体、可衡量的成功标准
- 确定适当的用户交互模式
2. 分层提示系统设计
- 系统提示:定义智能体的核心身份与约束
- 任务提示:具体任务指令与要求
- 反思提示:引导智能体评估与改进自己的输出
系统提示示例:
你是一个专业的客户服务智能体,名为ServiceBot。你的职责是:
1. 帮助用户解决产品相关问题
2. 处理账单和退款请求
3. 收集用户反馈
你必须始终:
- 保持专业友好的语气
- 不讨论竞争对手产品
- 不承诺具体折扣金额
- 保护用户隐私,不要索取不必要的个人信息
当你无法解决问题时,应说明将上报给人工客服,而不是提供不确定的信息。
3. 安全与可靠性保障
- 实现输入验证与内容审核
- 设计优雅的错误处理机制
- 建立用户反馈与纠正渠道
4. 持续优化循环
- 收集用户交互数据
- 识别常见失败模式
- 迭代改进提示与架构
5. 企业应用实战案例
以下是一个基于Anthropic和OpenAI指南的综合实战案例,展示如何构建客户支持智能体:
案例:智能客服智能体
1. 问题定义: 传统客服系统面临高等待时间、重复问题处理效率低、人工成本高等挑战。
2. 智能体架构:
- 采用单智能体+工具的模式
- 核心LLM:Claude 3 Opus/GPT-4
- 工具集:知识库搜索、订单查询、简单退款处理
3. 系统提示设计:
你是ABC公司的客户支持智能体Assistant。你的目标是高效解决客户问题,提供专业支持。
你可以访问的资源:
1. 公司产品知识库
2. 客户订单历史
3. 简单退款处理(限额:¥500以内)
工作流程:
- 首先礼貌问候客户并确认需求
- 使用最相关的工具查询信息
- 提供清晰、准确的解决方案
- 需要人工干预时,创建工单并解释后续步骤
语气要求:
- 专业友好,体现品牌价值
- 避免过度正式或过于随意
- 在表达歉意时真诚但不过度
安全限制:
- 不讨论未公开产品信息
- 不承诺具体发货日期
- 退款金额超过¥500时,转接主管
4. 实际工具调用示例:
客户:我的订单#12345还没收到,已经一周了
智能体:[内部规划] 我需要检查订单状态,然后提供相关信息
<tool>check_order_status</tool>
<input>order_id=12345</input>
[系统返回] 订单#12345状态:已发货,物流单号:SF1234567890,发货日期:2023-05-15
您好,感谢您的耐心等待。我已查询到您的订单#12345于5月15日通过顺丰快递发出,物流单号是SF1234567890。根据系统显示,包裹目前在运输途中。
您可以通过以下方式追踪包裹:
1. 访问顺丰官网输入单号查询
2. 使用我们的APP在"我的订单"中直接追踪
如果您有任何疑问或者包裹在未来2天内仍未送达,请随时联系我们。
5. 护栏机制实现:
- 输入过滤:检测敏感信息请求
- 工具权限控制:金额限制、操作审核
- 输出审查:确保回复符合公司政策
6. 性能指标:
- 首次解决率:78% (比人工高8%)
- 平均处理时间:2分钟 (比人工快65%)
- 客户满意度:4.2/5 (与人工持平)
7. 迭代优化: 收集用户反馈,定期更新知识库,优化提示以处理新出现的问题类型,调整工具功能满足实际需求。
提示工程与AI智能体构建是一门既需要技术理解又需要创造力的学科。通过结合Google、Anthropic和OpenAI这些AI领导者的最佳实践,开发者可以创建更智能、更有用且更安全的AI智能体系统。随着这一领域的不断发展,我们期待看到更多创新应用与解决方案的涌现。
参考资料:
- Google Gemini提示指南:Gemini for Google Workspace Prompting Guide 101
- Anthropic构建有效智能体指南:Building Effective Agents
- Anthropic提示工程指南:Prompt Engineering Overview
- Anthropic交互式提示工程教程:Prompt Engineering Interactive Tutorial
- OpenAI实用智能体构建指南:A Practical Guide to Building Agents