【llm对话系统】LLM 大模型Prompt 怎么写?
如果说 LLM 是一个强大的工具,那么 Prompt 就是使用这个工具的“说明书”。一份好的 Prompt 可以引导 LLM 生成更准确、更相关、更符合你期望的输出。
今天,我们就来聊聊 LLM Prompt 的编写技巧,掌握这把解锁 LLM 潜能的钥匙!
一、什么是 Prompt?
简单来说,Prompt 就是你给 LLM 的指令或输入,它可以是一个问题、一句话、一段描述,甚至是几个词。LLM 会根据你提供的 Prompt 来理解你的意图,并生成相应的输出。
Prompt 的重要性:
- 引导 LLM 理解任务: Prompt 明确了你希望 LLM 完成的任务。
- 控制 LLM 的输出: Prompt 可以限定 LLM 生成内容的范围、格式、风格等。
- 激发 LLM 的潜能: 好的 Prompt 可以激发 LLM 的创造力,生成更有创意、更有价值的内容。
二、Prompt 的基本组成
一个完整的 Prompt 通常包含以下几个部分:
- 指令 (Instruction): 明确指示 LLM 要做什么,例如“总结”、“翻译”、“写一首诗”等。
- 上下文 (Context): 提供 LLM 需要的背景信息,例如相关的文本、数据等。
- 输入数据 (Input Data): 需要被处理的具体内容,例如需要被翻译的句子、需要被总结的文章等。
- 输出指示 (Output Indicator): 指定输出的格式、长度、风格等要求。
并非所有 Prompt 都需要包含以上所有部分,可以根据具体任务进行调整。
三、Prompt 编写技巧:从入门到精通
1. 清晰明确的指令
指令是 Prompt 的核心,要让 LLM 准确理解你的意图,指令必须清晰明确,避免使用模糊或有歧义的措辞。
Bad: “告诉我关于这个的内容。” (不明确,LLM 不知道要告诉你关于什么的)
Good: “请总结一下这篇文章的主要内容。” (明确指示 LLM 进行总结)
Good: “写一段代码实现快速排序”
2. 提供必要的上下文
对于需要背景知识的任务,提供必要的上下文可以帮助 LLM 更好地理解任务,并生成更相关的输出。
示例:
Prompt: “请写一篇关于人工智能的博客文章,目标读者是 AI 初学者。”
在这个 Prompt 中,“目标读者是 AI 初学者”就是上下文信息,它限定了文章的写作风格和深度。
3. 指定输出格式
通过指定输出格式,你可以控制 LLM 生成内容的结构、样式和长度。
示例:
Prompt: “请将以下英文句子翻译成中文,并用表格的形式输出:This is a cat.”
输出指示: 用表格形式输出
输出(可能):
英文 | 中文 |
---|---|
This is a cat. | 这是一只猫. |
Prompt: “请列举 5 个提高工作效率的方法,并用编号列表的形式输出。”
输出指示: 用编号列表输出,并举出5个方法
4. 使用示例引导 (Few-Shot Learning)
通过提供一些示例,可以让 LLM 更好地理解你的期望,并生成符合要求的输出。
示例:
Prompt: "请将以下句子改写成更正式的表达:
- 我觉得这个想法不错。-> 我认为这个想法是可取的。
- 这个东西很好用。-> 这个工具非常实用。
- 你的方案是什么? -> 你的方案具体是什么样的?"
通过提供几个示例,LLM 可以学习到如何将非正式的表达改写成更正式的表达。
5. 逐步引导 (Chain-of-Thought)
对于复杂的任务,可以将任务分解成多个步骤,逐步引导 LLM 完成任务。
示例:
任务: 解答一个数学应用题
Prompt: “一辆汽车以每小时 60 公里的速度行驶,行驶 240 公里需要多少小时?请逐步解释你的解题思路。”
LLM 输出 (可能):
- 首先,我们需要计算汽车行驶的时间。
- 已知汽车的速度是每小时 60 公里,行驶的距离是 240 公里。
- 根据公式:时间 = 距离 / 速度,我们可以计算出汽车行驶的时间。
- 将数据代入公式:时间 = 240 公里 / 60 公里/小时 = 4 小时。
- 因此,汽车行驶 240 公里需要 4 小时。
6. 尝试不同的 Prompt
同一个任务,可以用不同的 Prompt 来实现。尝试不同的 Prompt,比较它们的输出结果,可以帮助你找到最佳的 Prompt。
7. 使用 Prompt 模板
针对常见的任务,可以总结出一些常用的 Prompt 模板,以便重复使用。
例如,一个通用的总结模板:
请总结以下文本的主要内容,并用 [输出格式] 输出:
[输入文本]
四、常见任务的 Prompt 最佳实践
1. 文本生成
- 写一篇文章: “请写一篇关于 [主题] 的文章,目标读者是 [目标读者],文章要包含 [要点],文章字数在 [字数] 字左右。”
- 写一首诗: “请写一首关于 [主题] 的 [诗歌类型],例如五言绝句或七言律诗。”
- 写一个故事: “请写一个关于 [主题] 的故事,故事的主角是 [角色],故事发生在 [地点],故事的结局是 [结局]。”
2. 问答系统
- 简单问题: “请回答以下问题:[问题]”
- 需要推理的问题: “请根据以下信息,回答这个问题:[信息] 问题:[问题]”
- 开放性问题: “对于 [话题],你有什么看法?”
3. 机器翻译
- 指定源语言和目标语言: “请将以下 [源语言] 翻译成 [目标语言]:[文本]”
- 指定翻译风格: “请将以下英文句子翻译成中文,要求翻译风格正式/口语化:[文本]”
4. 文本摘要
- 指定摘要长度: “请总结以下文本的主要内容,摘要长度不超过 100 字:[文本]”
- 指定摘要要点: “请总结以下文本的主要内容,并重点突出 [要点]:[文本]”
5. 代码生成
- 指定编程语言和功能: “请使用 [编程语言] 编写一个函数,实现 [功能]:”
- 提供示例代码: “请参考以下示例代码,实现类似的功能:[示例代码]”
五、代码示例 (使用 OpenAI API)
import openai
openai.api_key = "YOUR_API_KEY" #替换成自己的key
def get_completion(prompt, model="gpt-3.5-turbo"):
messages = [{"role": "user", "content": prompt}]
response = openai.ChatCompletion.create(
model=model,
messages=messages,
temperature=0, # 控制生成结果的随机性
)
return response.choices[0].message["content"]
# 示例:翻译
prompt = "请将以下英文句子翻译成中文:This is an example."
response = get_completion(prompt)
print(response)
# 示例:总结
text = """
(这里放入需要总结的文本)
"""
prompt = f"""
请总结以下文本的主要内容,并用一句话概括:
{text}
"""
response = get_completion(prompt)
print(response)