Notes on Prompt Engineering

Notes on Prompt Engineering

2023-05-16. Category & Tags: AIGC, GPT, ChatGPT

Notes on Prompt Engineering

1.两个基本原则 指令清晰具体 具体方法: 1.[输入]:清晰分隔输入的语义不同的各部分 例如可以用:```,"",<>,,<\tag>等。注:不同模型对于某些符号的反应可能有特殊情况,例如转义符 \ 。 2.[处理]:要求 if-else 条件 3.[处理]:提供问答示例 针对想要达到的目标,例如格式、风格等,直接提供示例给模型作参考。 4.[输出]:要求输出结构化。例如 json 等。可以详细地描述给模型想要的具体结构。 5.迭代:一遍一遍试,而不是企图一步到位。刚开始的生成结果可能不合适,可以提示模型在哪些方面改进,例如理解输入材料时的关注重点(数据 vs. 情感 etc.?)、输出对应听众的习惯(美学 vs. 功能;热情 vs. 冷静 etc.)、输出长度、输出格式的细节(json 层次、key 名、 value 类型)等。 6.注意“提取(Extract)” vs. “概括(Summarize)” 的区别;“整合(synthesize)多个文本” vs. “概括(summarize)单一文本”的区别。

要求模型思考 具体方法: 1.[输入]:把指令拆分为带有序号的小步骤。 2.[处理]:指定判断步骤,避免被判断指令询问的输入内容的可能错误部分带歪。

2.其他 纯文本 Prompt 一般格式 1.声明扮演角色 2.简洁的任务描述(例如命令/要求/步骤等)(按照时间顺序) 3.对于任务的详细说明 4.对于输入的内容的格式的详细说明 5.对于输出的内容的格式的详细说明 6.输入的内容

调用 API 可以使用非纯文本,要结合 API 允许的情况。例如 OpenAI 的 ChatGPT 接口 openai.ChatCompletion.create() 可以接受 messages 作为历史记录,其中除了 AI 本身 assistant,还可以有 system 告诉 assistant 是扮演什么角色,然后 user 再提问。

存在的问题 编造虚假信息回复:模型偶尔会生成一些看似真实但是实则编造的知识。可以在 prompt 中告诉模型不要自己编造内容。