ChatGPT Prompt的框架和方法
经过基础篇的多个场景介绍,你应该对构建有效的 Prompt 有了更深的理解。在基础篇中,我们更多地关注了“术”的应用。而在高级篇中,除了介绍更高级的应用之外,我们还将探讨更多关于Prompt 构建的“道”。
基础 Prompt 框架
在众多关于 ChatGPT prompt 的框架中,Elavis Saravia 的总结提供了一个清晰的框架,认为有效的 Prompt 应包含以下元素:
- Instruction(指令,必须):你希望模型执行的具体任务。
- Context(背景信息,选填):可以引导模型做出更合适的反应。
- Input Data(输入数据,选填):告知模型需要处理的数据。
- Output Indicator(输出指示器,选填):告知模型我们期望的输出类型或格式。
根据这个框架写出的 Prompt,模型返回的结果通常会更准确。
例如,对于前面的场景:
- 推理:Instruction + Context + Input Data
- 信息提取:Instruction + Context + Input Data + Output Indicator
CRISPE Prompt 框架
另一个非常有用的框架是 Matt Nigh 提出的 CRISPE Framework,这个框架更加复杂但全面,适合编写复杂的 prompt 模板。CRISPE的每个字母代表:
- CR:Capacity and Role(能力与角色):你希望 ChatGPT 扮演的角色。
- I:Insight(洞察力):背景信息和上下文。
- S:Statement(指令):你期望 ChatGPT 执行的任务。
- P:Personality(个性):期望 ChatGPT 回答的风格或方式。
- E:Experiment(尝试):要求 ChatGPT 提供多个答案。
以下是 CRISPE 各参数的例子:
| 步骤 | 示例 |
|-------------------|----------------------------------------------|
| Capacity and Role | 扮演机器学习框架领域的软件开发专家和专业博客作者的角色。 |
| Insight | 针对对机器学习最新进展感兴趣的技术专业人士撰写的博客。 |
| Statement | 提供最流行的机器学习框架的全面概述,包括优缺点和实际应用案例。 |
| Personality | 使用 Andrej Karpathy、Francois Chollet 等人的写作风格。 |
| Experiment | 提供多个不同的例子。 |
结合所有元素,构成的 Prompt 可以生成与基础 Prompt 截然不同的结果。
使用 CRISPE Framework 的实际应用
使用 CRISPE Framework 可以生成更结构化的输出。例如,在进行问答时,不仅要求答案,还要求 ChatGPT 的答案符合特定的格式,以便进行后续的自动化处理。
比如,针对一个问题 "这里的债券 duration 是多少?",标准的 GPT 模型可能会回答 "债券 duration 是 4 年" 或 "duration 4 年"。而使用CRISPE Framework,可以让模型输出特定的结构化答案,比如 JSON/Markdown 格式,并可以集成更多的额外要求,比如增加"confidencelevel",并通过 prompt 指定这些数值的格式甚至区间。
例如:
{context}
Question: What is bond duration mentioned here.
Answer template (Valid JSON format):
{{
"duration": $duration_numeric_value_in_year,
"confidence_level": $answer_confidence_level_high_moderate_or_low,
}}
Answer:
通过这种方式,可以使 AI 生成的内容更加符合特定的应用场景,提高数据的可用性和后续处理的效率。