一、角色扮演:赋予模型特定视角与能力

在与大模型交互时,直接提问往往得到通用但可能不够精准的回答。一个极其有效的技巧是让模型扮演一个特定的角色。这不仅仅是加上一句“你是一个专家”,而是为模型构建一个完整的上下文框架,使其从特定的知识库和思维模式出发进行回应。

例如,当你需要一段代码时,不要问:“请写一个排序函数。” 而是说:“你是一位拥有10年经验的Python软件工程师,擅长编写高效、简洁且带有注释的代码。 请为一个包含十万个整数的列表,编写一个快速排序函数。” 这样,模型输出的代码会更倾向于采用工业级实践,甚至可能附带性能分析或优化建议,质量显著提升。这是因为角色设定激活了模型在该“人设”下关联的知识和表达方式。

提示: 角色设定的关键在于具体。指明角色的经验水平专业领域常用工具以及输出风格(如简洁、详尽、友好等),能让模型的输出更贴近你的预期。

二、结构化提示:清晰传达你的意图

一个模糊的提示词就像一份需求不明确的文档,会导致输出结果不可控。结构化提示是将你的需求拆解成明确的模块,像搭积木一样组合起来,让模型无歧义地理解你的意图。

一个强大的结构化提示通常包含以下几个部分:

# 一个结构化提示的示例框架
prompt = f"""
## 角色与目标
你是一位资深技术博客作者。你的任务是为编程初学者撰写一篇关于{topic}的教程。

## 输入数据
以下是原始代码片段和运行时错误日志:

## 具体指令
1. 解释代码的功能。
2. 从错误日志中定位导致程序崩溃的具体原因。
3. 提供修复后的完整代码。
4. 给出一条预防此类错误的最佳实践建议。

## 输出格式与约束
请使用Markdown格式,分四个部分(“代码解析”、“错误诊断”、“修复方案”、“最佳实践”)进行组织。解释部分避免使用行话。
"""

三、思维链:让模型“展示工作过程”

对于需要复杂推理、数学计算或多步逻辑的问题,直接要求模型给出最终答案,其准确率往往不高。思维链提示通过引导模型“一步一步地思考”,模拟人类的推理过程,能显著提升复杂任务的准确性。

最简单的实现方式是在提示末尾加上一句魔法咒语:“让我们一步步思考。” 或者更具体地:“在给出最终答案前,请先详细列出你的推理步骤。” 这迫使模型先进行中间推理,每一步都基于前一步的结论,从而在最终整合出更可靠的答案。

提示: 思维链不仅用于提高准确性,其透明的推理过程也极大地增强了结果的可解释性。当模型输出错误时,你可以清晰地看到是哪一步推理出了问题,便于针对性地修正提示。

四、少样本学习:用示例教会模型新规则

当任务格式特殊,或者你希望模型遵循一种非标准的输出模式时,少样本学习是最直接有效的方法。通过在提示中提供少量输入-输出的示例对,你可以快速“教会”模型你想要的确切格式和风格。

例如,你希望模型将中文口语转换为正式的商务邮件。直接描述规则可能不够清晰,但提供两三个示例后,模型就能立刻理解模式。

prompt = """
将以下口语化的句子转换为正式、礼貌的商务邮件核心句。

示例1:
口语:老板,那个项目搞不定了,钱不够。
正式:尊敬的领导,关于XX项目,因预算资源限制,目前推进面临较大挑战。

示例2:
口语:客户那边又改需求了,烦死了。
正式:尊敬的客户,收到您关于需求变更的反馈,我们将尽快评估对项目的影响并回复。

现在,请转换:
口语:{user_input}
正式:
"""

五、负面指令:明确“不要做什么”

除了告诉模型该做什么,明确指出不该做什么同样重要。这被称为负面指令。模型有时会“过度发挥”,加入不必要的信息、采用复杂的措辞,或者偏离你想要的格式。

在提示中加入负面约束,可以像给飞驰的汽车踩刹车一样,有效控制输出边界。例如:

这些指令能极大地提升输出结果的纯净度和可用性,使其更符合特定场景的要求。

六、迭代优化:提示词工程是一个过程

最后,也是最重要的心得:没有一蹴而就的完美提示词。Prompt Engineering本质上是一个迭代优化的过程。你的第一版提示词就像一个初稿,它可能已经能生成不错的结果,但总还有提升空间。

优化流程通常是:

  1. 初始尝试:写下你认为合理的第一个提示词。
  2. 评估输出:仔细检查结果,找出不理想的地方(是不够详细?格式错误?有事实错误?)。
  3. 分析原因:判断是哪个部分的提示词导致了问题(角色不清晰?指令模糊?缺少约束?)。
  4. 调整提示:针对性地修改或增加相应内容(强化角色、明确格式、加入示例或负面指令)。
  5. 再次测试:用新的提示词运行,并与之前的结果对比。

将这个循环重复几次,你就能得到一个稳定、高效、为你特定需求深度定制的提示词模板。这个过程积累的经验,远比寻找一个“万能提示词”更有价值。