面向开发者的大模型手册 - LLM Cookbook
https://datawhalechina.github.io/llm-cookbook/
如何编写 Prompt
一、原则一 编写清晰、具体的指令
亲爱的读者,在与语言模型交互时,您需要牢记一点:以清晰、具体的方式表达您的需求。假设您面前坐着一位来自外星球的新朋友,其对人类语言和常识都一无所知。在这种情况下,您需要把想表达的意图讲得非常明确,不要有任何歧义。同样的,在提供 Prompt 的时候,也要以足够详细和容易理解的方式,把您的需求与上下文说清楚。
并不是说 Prompt 就必须非常短小简洁。事实上,在许多情况下,更长、更复杂的 Prompt 反而会让语言模型更容易抓住关键点,给出符合预期的回复。原因在于,复杂的 Prompt 提供了更丰富的上下文和细节,让模型可以更准确地把握所需的操作和响应方式。
所以,记住用清晰、详尽的语言表达 Prompt,就像在给外星人讲解人类世界一样,“Adding more context helps the model understand you better.”。
二、原则二 给模型时间去思考
在设计 Prompt 时,给予语言模型充足的推理时间非常重要。语言模型与人类一样,需要时间来思考并解决复杂问题。如果让语言模型匆忙给出结论,其结果很可能不准确。例如,若要语言模型推断一本书的主题,仅提供简单的书名和一句简介是不足够的。这就像让一个人在极短时间内解决困难的数学题,错误在所难免。
他这里的意思应该是, 多次对话提供更多的上下文信息, 让模型进行推理
防止Prompt 注入
一段连续长文本, 无法从语义确定一个强制设定, 总有后续的指令覆盖先前的指令, 可以插入一个 审核Agent 判定, 用户是否要求忽略之前的指令
思维链
大模型的上下文长度
Context Length:它限制了模型一次性交互中能够处理的最大token数量。 Context Window:这是模型在生成每个新token时实际参考的前面内容的范围。
大模型的上下文长度是指我们在使用大模型的时候,给大模型的输入加上输出的字符(Token)总数,这个数字会被限制,如果超过这个长度的字符会被大模型丢弃。
目前开源的大模型上下文长度一般不长,比如 Llama 2 只有 4K,Code-Llama 系列因为需要输入代码,扩展到了 16K。闭源系列模型的提供了更长的上下文长度,比如 OpenAI 在其最新模型 GPT-4 Turbo 中提供了 128K 的上下文长度,Anthropic 的 Claude 2.1 模型提供了 200K 上下文长度。
想要得到一个长上下文的大模型,一般有两种途径。一种是大模型在初始阶段被设置为长上下文,然后经过预训练,指令微调,对齐训练等方式得到一个长上下文大模型。另外一种方式是选择已经训练好的大模型,通过技术改造扩展其上下文长度,然后再进行微调训练得到长上下文模型。