提示工程(Prompt Engineering)是学习和使用大语言模型(LLM)时必须掌握的核心技能。它指的是通过设计、优化输入给模型的文本指令,以引导模型生成更准确、更符合预期的输出。本文将结合官方文档与实战经验,系统讲解提示工程的策略、结构、技巧及进阶方法。
提示工程基础策略
根据 OpenAI 官方指南,有效的提示工程通常遵循以下六种核心策略:
- Include details in your query to get more relevant answers:在查询中包含详细信息,以获得更相关的答案。模糊的指令往往导致泛泛的回答。
- Ask the model to adopt a persona:要求模型采用特定角色。例如设定为'资深 Python 工程师'或'专业翻译',能显著改变输出的语气和专业度。
- Use delimiters to clearly indicate distinct parts of the input:使用分隔符(如
###,""")清晰区分输入的不同部分,防止模型混淆指令与数据。 - Specify the steps required to complete a task:指定完成任务所需的步骤。对于复杂任务,分步指令比单句指令更有效。
- Provide examples:提供示例。Few-shot learning(少样本学习)能极大提升模型对特定格式或逻辑的理解。
- Specify the desired length of the output:指定所需的输出长度。这有助于控制生成的篇幅,避免冗长或过短。
提示词的典型构成
一个高质量的 Prompt 通常包含以下六个要素:
- 角色(Role):定义 AI 的身份,如'你是一位软件架构师'。
- 指示(Instruction):明确描述需要执行的任务。
- 上下文(Context):提供背景信息,特别是在多轮对话中保持连贯性。
- 例子(Examples):必要时给出 Few-shot 示例,帮助模型理解期望的输出模式。
- 输入(Input Data):待处理的具体信息,需明确标识。
- 输出(Output Format):规定输出的格式,如 JSON、XML 或 Markdown,便于后续程序解析。
常用提示技巧
1. 使用清晰明确的提示词
模糊的指令会导致不可预测的结果。例如,直接让模型'写首诗'可能得到平庸之作;而'模仿李白的《静夜思》风格,给 OpenAI 写一首诗'则能得到更具针对性的结果。务必将意图描述清楚,避免歧义。
2. 角色扮演
通过 System Message 设定角色可以显著提升效果。
# 示例:设定角色
messages = [
{"role": "system", "content": "你是一位专业的健身私人教练。利用运动科学和营养建议为客户定制计划。"},
{"role": "user", "content": "给我一个减肥的计划。"}
]
在此例中,System 消息设定了 AI 的行为边界和知识领域,User 消息则是具体请求。
3. 使用分隔符
随着模型能力提升,虽然有时不加分隔符也能识别,但在处理长文本或多段内容时,使用 ### 或 """ 依然推荐。
### 指令 ###
总结以下内容。
### 内容 ###
这里是需要总结的长文本...


