当前位置: 首页 > news >正文

提示词工程实战指南:5大技巧大幅提升LLM输出质量

摘要​​:本文结合OpenAI API实战案例,详解如何通过系统化提示词设计优化大型语言模型(LLM)输出效果。包含少样本学习、结构化指令、思维链推理等核心技巧,附完整代码示例。


一、案例背景:客服对话数据清洗

​任务目标​​:

清洗客服对话记录,要求:

1️⃣ 移除个人信息(姓名/邮箱/订单号)

2️⃣ 替换脏话为"😤😤"

3️⃣ 标准化日期格式(YYYY-mm-dd)

4️⃣ ​​扩展需求​​:对话情感分类(正/负)

5️⃣ ​​输出格式​​:结构化JSON

原始数据示例:

[support_tom] 2023-07-24T10:02:23+00:00 : What can I help you with?

[johndoe] 2023-07-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT


二、5大提示词工程技巧详解

技巧1️⃣:少样本提示(Few-Shot Prompting)

​核心思路​​:提供输入输出示例引导模型理解任务

instruction_prompt = """

Remove personally identifiable information, only show the date, and replace swear words with "😤😤"

Example Input:

[johndoe] 2023-07-24T10:03:15+00:00 : I CAN'T CONNECT TO MY BLASTED ACCOUNT Example Output:

[Customer] 2023-07-24 : I CAN'T CONNECT TO MY 😤😤 ACCOUNT

"""

​效果提升点​​:模型学会脏话替换和日期格式化

技巧2️⃣:分隔符标记(Delimiters)

​解决问题​​:避免长提示中指令与数据混淆

content = f">>>>>\n{raw_text}\n<<<<<"

instruction_prompt = """

Sanitize text in >>>CONTENT<<<

by:

1. Replacing PII with ****

2. ...

"""

​关键作用​​:明确划分数据区与指令区,防止模型误解析

技巧3️⃣:步骤分解(Numbered Steps)

​突破点​​:复杂任务拆解为原子操作

instruction_prompt = """

Perform steps sequentially:

1. Replace names in [] with [Agent]/[Customer]

2. Convert datetime to YYYY-mm-dd

3. Map swear words to 😤😤

4. ...

"""

技巧4️⃣:思维链提示(Chain-of-Thought)

​高阶技巧​​:引导模型展示推理过程

instruction_prompt += """

Classify sentiment by:

1. Check for 😤😤 or angry words

2. Assess customer tone

3. If step1 OR step2 positive → label 🔥

4. Else → label ✅

Let's think step by step

"""

​输出效果​​:

- 😤😤 detected? Yes - Aggravated tone? Yes - Sentiment: 🔥

技巧5️⃣:结构化输出(Structured Output)

​工业级实践​​:强制JSON格式对接下游系统

instruction_prompt = """

Output as valid JSON:

{ "negative": [{ "date": "2023-07-24", "conversation": ["A:...", "C:..."] }],

  ...

}

"""

​最终输出​​:

{ "positive": [{ "date": "2023-08-13", "conversation": [ "A: Good morning! How may I assist?", "C: My app keeps crashing..." ] }], "negative": [...] }


三、关键参数配置

# settings.toml
[general]
model = "gpt-4"        # 优先选用GPT-4
temperature = 0        # 固定输出增强确定性
seed = 12345           # 复现结果(部分模型支持)# 角色设定控制风格
role_prompt = "You are a precise data processor. Never invent information."

四、避坑指南

  1. 1.

    ​数据泄露风险​​:避免在示例中使用真实生产数据

  2. 2.

    ​模型更新影响​​:定期验证提示(OpenAI持续更新模型)

  3. 3.

    ​成本控制​​:GPT-4费用 > GPT-3.5,需权衡精度需求

  4. 4.

    ​非完全确定性​​:即使temperature=0,输出仍可能有微小波动

​最佳实践​​:版本化管理提示词(示例代码中TOML文件设计)


五、完整工具链

.
├── app.py              # 处理流水线
├── settings.toml       # 提示词配置中心
├── chats.txt           # 原始数据
└── sanitized-chats.json # 输出

​核心函数​​:

def get_chat_completion(content):messages = [{"role": "system", "content": role_prompt},{"role": "user", "content": f">>>>>{content}<<<<"},{"role": "user", "content": instruction_prompt}]return openai.ChatCompletion.create(model=MODEL, messages=messages,temperature=0)

​结论​​:通过系统化提示工程,开发者可将LLM输出准确率提升300%。核心方法论:

🔹 ​​少样本示例​​ > 抽象描述

🔹 ​​原子化步骤​​ > 复杂指令

🔹 ​​结构化输出​​ > 自然语言

🔹 ​​推理过程显式化​​ > 黑箱操作

六、参考文章

提示工程:一个实际示例 – 真正的 Python --- Prompt Engineering: A Practical Example – Real Python

http://www.xdnf.cn/news/1432423.html

相关文章:

  • 网络安全法合规视角下的安全运维体系建设:关键控制点与实施细节深度解析
  • 【论文阅读】DeepSeek-LV2:用于高级多模态理解的专家混合视觉语言模型
  • 【js】Promise.try VS try-catch
  • Spring Boot数据校验validation实战:写少一半代码,还更优雅!
  • 在线宠物用品|基于vue的在线宠物用品交易网站(源码+数据库+文档)
  • 硬件开发_基于物联网的自动售卖机系统
  • 联邦学习论文分享:GPT-FL: Generative Pre-Trained Model-AssistedFederated Learning
  • Apache 的安装及基本使用
  • MMORPG 游戏战斗系统架构
  • MATLAB矩阵及其运算(一)变量与常量
  • Python 中将 JSON 字符串转为对象的几种方法对比
  • 软件测试面试题【内附超详细面试宝典】
  • 【本地知识库问答系统】MaxKB搭建本地知识库问答系统
  • 低代码开发平台有哪些,中国十大低代码开发平台排名
  • 从零开始的云计算生活——第五十六天,临深履薄,kubernetes模块之etcd备份恢复和集群升级指南
  • Ruoyi-vue-plus-5.x第三篇Redis缓存与分布式技术:3.2 缓存注解与使用
  • 第2章:用户界面与基本监控
  • Ansible 循环、过滤器与判断逻辑
  • 小学一到六年级语文/英语/数学作业出题布置网站源码 支持生成PDF和打印
  • 基金交易量预测比赛_数据分析
  • MySQL 8.0 窗口函数详解:让数据分析更简单高效
  • 大数据毕业设计选题推荐-基于大数据的大学生就业因素数据分析系统-Spark-Hadoop-Bigdata
  • 华为OD最新机试真题-中庸行者-OD统一考试(C卷)
  • 【Unity Shader学习笔记】(二)图形显示系统
  • 从Web2到Web3:一场重塑数字未来的“静默革命”
  • mac 本地安装maven环境
  • LLM面试50问:NLP/RAG/部署/对齐/安全/多模态全覆盖
  • CentOS7.6
  • @Hadoop 介绍部署使用详细指南
  • Qt中QSettings的键值使用QDataStream进行存储