Prompt Engineering 基础技巧完全指南

提示工程(Prompt Engineering)是通过优化输入提示词来引导AI模型生成高质量输出的技术。掌握基础技巧能显著提升AI响应的准确性、相关性和实用性。


一、核心原则

1. 清晰性 > 复杂性

  • 目标:让模型理解你的意图,而非考验它的理解能力

  • 反例:"写点东西"

  • 正例:"用3句话解释量子纠缠,让10岁孩子能听懂"

2. 具体性 > 模糊性

  • 提供明确的约束条件(格式、长度、风格、受众)

  • 反例:"总结这篇文章"

  • 正例:"用200字总结这篇文章,包含3个核心观点,用 bullet points 呈现"


二、7大基础技巧

技巧1:角色设定(Role Prompting)

为AI分配一个专业角色,激活其对应知识领域。

公式你是一位[专业角色],请[执行任务]

示例

❌ 普通提问:怎么学编程?
✅ 角色设定:你是一位有10年经验的编程导师,请为完全零基础的学习者制定3个月学习计划,每周学习5小时,要包含具体的学习路径和练习项目。

代码场景

String prompt = """
    你是一位资深Java架构师,请审查以下代码,指出3个潜在的安全漏洞,
    并用中文解释每个漏洞的危害和修复建议。
    
    代码:
    ```java
    public void processInput(String userInput) {
        Runtime.getRuntime().exec(userInput);
    }
    ```
    """;

技巧2:任务分解(Task Decomposition)

将复杂任务拆解为有序步骤,引导AI逐步思考。

公式请按以下步骤完成任务:1. [步骤1] 2. [步骤2] 3. [步骤3]

示例

分析以下销售数据并给出建议:
1. 首先提取2024年Q1-Q3的销售额和增长率
2. 然后识别增长最慢的3个产品线
3. 最后针对每个产品线提出1个具体的改进措施

数据:[附上CSV数据]

技巧3:提供示例(Few-Shot Learning)

给出输入输出的范例,让AI模仿期望的格式和风格。

公式示例1:输入→输出 示例2:输入→输出 现在处理:新输入→

示例

将以下英文商品名翻译为中文,保持简洁:
示例1:
English: Wireless Bluetooth Headphones with Noise Cancellation
Chinese: 降噪蓝牙耳机

示例2:
English: Portable Fast Charging Power Bank 20000mAh
Chinese: 20000mAh快充充电宝

现在翻译:
English: Smart WiFi Security Camera with Night Vision
Chinese:

技巧4:结构化输出(Structured Output)

强制AI返回JSON、Markdown表格等结构化格式,便于程序解析。

公式请以JSON格式返回,包含以下字段:{"field1": "描述", "field2": "描述"}

示例

从以下文本中提取实体信息:
"苹果公司由史蒂夫·乔布斯在1976年创立,总部位于加利福尼亚。"

请按此JSON格式返回:
{
  "company": "公司名称",
  "founder": "创始人姓名", 
  "year": "成立年份(数字)",
  "location": "总部位置"
}

Spring AI 代码示例

String prompt = """
    分析用户评论的情感倾向。
    请以JSON格式返回,包含以下字段:
    - sentiment: 情感类型(positive/negative/neutral)
    - confidence: 置信度(0-1之间的小数)
    - keywords: 关键词数组(最多3个)
    
    评论:"{0}"
    """;

String jsonResponse = chatClient.prompt(prompt)
        .param(comment)
        .call()
        .content();
        
// 解析JSON获取结构化数据

技巧5:思维链引导(Chain-of-Thought)

在提示词中加入"请逐步思考"或"让我们一步步分析",引导AI展示推理过程,显著提升复杂问题准确率。

公式请逐步思考:[问题]

示例

问题:一个农场有鸡和牛共30只,脚共88只,问鸡和牛各多少只?

请逐步思考并展示推理过程:
1. 设鸡有x只,牛有y只
2. 根据头数列方程:x + y = 30
3. 根据脚数列方程:2x + 4y = 88
4. 解方程组...
5. 得出答案

技巧6:上下文隔离(Context Isolation)

使用分隔符(###, ---, XML标签)清晰划分指令、上下文和输入,避免混淆。

公式

[指令部分]

--- 或 ###

[上下文/背景信息]

--- 或 ###

[待处理内容]

示例

请总结以下技术文档。

###
文档主题:Spring Boot 3.2 新特性
###

###
文档内容:
[粘贴长文档...]
###

###
总结要求:
- 用3个 bullet points
- 每个不超过20字
- 突出性能提升特性
###

技巧7:边界约束(Constraints Setting)

明确限制输出格式、长度、风格等边界条件。

常用约束参数

约束类型示例
长度"用100字以内"、"生成5-7句话"
格式"用Markdown表格"、"返回纯文本"
风格"用正式商务语气"、"像朋友聊天"
受众"面向产品经理"、"给5岁孩子讲"
排除项"不要提及价格"、"避免技术术语"

组合示例

为LinkedIn撰写一篇帖子:
- 主题:宣布我们产品新功能
- 长度:150-200字
- 风格:专业但友好
- 必须包含:#AI #ProductUpdate 标签
- 禁止包含:具体价格信息

三、进阶技巧组合

组合模式:角色 + 思维链 + 结构化输出

String advancedPrompt = """
    你是一位资深数据分析师。
    
    请分析以下销售数据,并:
    1. 首先识别数据中的异常模式
    2. 然后分析可能的原因
    3. 最后提出3个可执行的建议
    
    请逐步思考,并用以下JSON格式返回结果:
    {
      "anomalies": ["异常1", "异常2"],
      "rootCauses": ["原因1", "原因2"],
      "recommendations": [
        {"priority": "high", "action": "具体行动1"},
        {"priority": "medium", "action": "具体行动2"},
        {"priority": "low", "action": "具体行动3"}
      ]
    }
    
    数据:
    {0}
    """;

四、常见陷阱与避坑指南

陷阱错误示例正确做法
模糊指令"写得好一点""增加3个具体案例,语言更口语化"
过度约束同时限制10个条件聚焦3-5个核心约束
缺少上下文"那个项目怎么样了?"(没有指明项目)"关于客户A的CRM升级项目,目前进度如何?"
假设模型知道"按老规矩生成报告"(模型不知道"老规矩")"按照附件模板格式生成报告,包含销售额、转化率、环比3个部分"
忽视token限制粘贴10万字长文让总结先分段处理,或使用RAG检索相关内容

五、效果评估与迭代

5.1 A/B测试提示词

// 版本A:简单指令
String promptV1 = "总结这段文字";

// 版本B:结构化指令
String promptV2 = """
    用3个bullet points总结,每个不超过15字:
    {0}
    """;

// 记录两个版本的响应质量和用户满意度

5.2 自动化评估指标

  • 相关性:输出是否回答了问题

  • 准确性:事实是否正确

  • 完整性:是否覆盖所有要求

  • 格式合规性:是否遵循结构要求


六、实用工具与资源

6.1 提示词模板库

  • LangChain Hub:社区共享的提示词模板

  • PromptPerfect:自动优化提示词工具

  • Spring AI:内置 PromptTemplate

Spring AI 模板示例

PromptTemplate template = new PromptTemplate("""
    你是一位{role},请为{audience}解释{topic}。
    要求:{requirements}
    """);
    
Map<String, Object> params = Map.of(
    "role", "资深教师",
    "audience", "初中生", 
    "topic", "光合作用",
    "requirements", "用比喻,不超过100字"
);

String prompt = template.render(params);

6.2 学习资源

  • 书籍:《Prompt Engineering Guide》(免费在线版)

  • 实践:Anthropic 的 Prompt Engineering Interactive Tutorial

  • 社区:Discord 的 "Prompt Engineering" 频道


七、总结:黄金句式模板

万能模板

你是一位[专业角色]。

请完成以下任务:[具体任务]。

要求:
1. [要求1]
2. [要求2] 
3. [要求3]

工作步骤:
1. [步骤1]
2. [步骤2]

请以[格式]返回结果。

[上下文/输入内容]
### 关于 Prompt Engineering 项目教程和案例 #### 定义与概述 Prompt Engineering 是一门涉及设计和优化提示的技术,这些提示用于指导大型语言模型(LLM),以实现特定的任务或生成期望的结果[^1]。 #### 资源集合 存在多个资源可以作为学习 Prompt Engineering 的起点。例如,在线资料库不仅包含了有关此主题的文章综述,还提供了不同方法论以及应用实例的详细介绍[^3]。 #### 实际操作指南 对于希望深入理解并实践这项技术的人来说,《Prompt Engineering 教程:写 Prompt 的艺术》提供了一个很好的开端。这份材料覆盖了从基础概念到高级技巧的内容,并通过具体例子帮助读者掌握如何有效地创建高质量的输入指令给 LLMs 使用。 #### 开发者社区贡献 除了官方文档外,开源平台也汇聚了许多爱好者分享的经验和技术贴士。比如 GitHub 上的一个名为 "prompt-engineering" 的仓库就收集了大量的实用建议,特别适合那些想要探索更多可能性的人群尝试不同的技术和策略来提升工作效率[^4]。 ```python # Python 示例代码展示如何调用 API 发送自定义 prompt 给大模型服务端口 import requests def send_prompt_to_llm(prompt_text, api_key="your_api_key"): url = 'https://api.example.com/v1/models/llm:predict' headers = { 'Authorization': f'Bearer {api_key}', 'Content-Type': 'application/json', } data = {"inputs": [{"text": prompt_text}]} response = requests.post(url, json=data, headers=headers) return response.json() custom_prompt = "请解释一下量子力学中的叠加态原理" result = send_prompt_to_llm(custom_prompt) print(result['outputs'][0]['generated_text']) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值