Prompt Engineering

Prompt Engineering Guide  

很好的学习网站:Prompt Engineering Guide | Prompt Engineering Guide

随着大语言模型如 ChatGPT 等的兴起,人们看到了其在自动生成各种文本方面的超强能力和广泛应用。然而,由于模型可能生成不准确或不当的文本,提示工程(Prompt engineering)应运而生。提示工程通过设计和构建输入提示来控制大语言模型的输出,从而提高生成文本的准确性和可靠性,为各种应用场景提供更好的效果和体验。因此,提示工程的背景和意义在于优化输入提示,引导大语言模型生成更加准确、可靠、符合预期的输出文本,从而更好地发挥其优势和价值。

随着大语言模型如 ChatGPT 等的兴起,人们看到了其在自动生成各种文本方面的超强能力和广泛应用。然而,由于模型可能生成不准确或不当的文本,提示工程(Prompt engineering)应运而生。提示工程通过设计和构建输入提示来控制大语言模型的输出,从而提高生成文本的准确性和可靠性,为各种应用场景提供更好的效果和体验。因此,提示工程的背景和意义在于优化输入提示,引导大语言模型生成更加准确、可靠、符合预期的输出文本,从而更好地发挥其优势和价值。

提示简介

  提示工程(Prompt engineering)是一门相对较新的学科,旨在为各种应用和研究主题开发和优化提示,以有效地利用语言模型(LMs:language models )。提示工程技能有助于更好地了解大型语言模型(LLMs:large language models )的能力和局限性。研究人员使用提示工程来提高 LLMs 在各种常见和复杂任务(如问答和算术推理)上的能力。开发人员使用提示工程来设计稳健且有效的提示技术,与 LLMs 和其他工具进行交互。

基本提示(Basic Prompts)

可以通过提示实现很多功能,但结果的质量取决于您提供的信息量。提示(Prompt)可以包含指令(instruction )或问题(question),以及其他详细信息,例如背景信息输入(input)或示例(examples)

例如:为了让模型生成描述今天上海天空的语句,我们可以通过逐步优化输入提示信息来帮助模型完成任务。

Prompt:
完成这个句子:
天空是

Output:
天空是指大气层上方的空间,通常是指人们在地面上所看到的天空,它的颜色和形态会随着时间、地点、季节和气象条件的不同而变化。

正如上面这个例子,语言模型输出了一系列与“天空是”这个上下文相关(只有指令和问题,没有背景信息)的字符串。输出结果是通用的知识,与我们想要实现的任务相差甚远。

这个简单的例子也突显了我们需要提供更多上下文或指令来明确我们想要实现的具体目标。

让我们试着稍微改进一下:

Prompt:
根据今天天气情况,完成描述今天天气的句子:
天空是

Output:
天空是阴沉的,乌云密布,目前正在下雨。

进一步细化地点(没有今天天气信息):

Prompt:
根据上海今天天气情况,完成描述今天天气的句子:
天空是

Output:
天空是阴沉的,目前有雨,气温较为寒冷。

告诉 LLMs 模型今天是晴天:

Prompt:
根据上海今天晴天,完成描述今天天气的句子:
天空是

Output:
天空是湛蓝色的,阳光明媚,没有云彩。

我们告诉模型去完成这个句子的上下文背景信息,所以结果看起来更好,因为它严格按照我们告诉它要做什么(“完成句子”)来进行。这种通过设计最佳提示语来指导模型执行任务的方法被称为提示工程。

现在的ChatGPT(也称为LLM,即大型语言模型)已经成为了执行各种先进任务的重要工具。无论是对于文本摘要、问答系统、对话机器人,还是数学推理、代码生成等领域,ChatGPT都展现出了其强大的能力和潜力。

参数调整(LLM Settings)

在使用提示语(Prompt )可以通过 API 或直接与 LLM 进行交互。可以配置一些参数来调整输出不同的结果。

  • Temperature

    Temperature是一个用于控制文本生成随机性的参数;

    Temperature值越低,生成的文本就越接近于模型已有的知识和样本,可能会更加保守和可预测,当Temperature值接近于0时,生成的文本就会越来越接近于模型最有可能的输出;

    而当Temperature值较高时,生成的文本就会更加多样化、新颖和出人意料。

    这是因为高温下,生成过程更加随机,模型更容易从多个可能的单词和短语中进行选择和组合,从而创造出更加多样化的文本。

    在应用方面,对于基于事实的问答,我们可能希望使用较低的温度,以鼓励更具事实性和简洁的回答。

    对于诗歌生成或其他创意任务,增加温度可能会更有益。

  • Top_p:

    用于控制生成文本多样性的参数,它可以理解为一个概率阈值。在生成文本时,模型首先计算出所有可能的词的概率分布,然后根据Top-p的设定值,只保留概率累加值最高的一部分词汇。具体来说,模型会将所有词的概率按照从大到小的顺序排列,然后不断累加这些词的概率值,直到累加概率值超过了Top-p设定的概率阈值。此时,模型只保留累加概率值最高的词汇,其他的词汇被丢弃。这样可以有效控制生成文本的多样性,防止生成文本重复和过于生硬。Top-p值越大,生成的文本就越多样化,但同时也可能导致生成文本的准确性降低,因为模型在选择词汇时可能会考虑一些低概率的词汇。

标准的提示(Standard Prompts)

标准提示具有以下格式:

<Question>?

也可以格式化为 QA 格式,这是许多 QA 数据集的标准格式,如下所示:

Q: <Question>?
A:

鉴于上述标准格式,一种广受欢迎且有效的提示技术被称为“few-shot prompting”,其中我们提供样本。Few-shot 提示可以按以下方式格式化:

<Question>?
<Answer>
<Question>?
<Answer>
<Question>?
<Answer>
<Question>?

💡 并不一定需要使用 QA 格式。格式灵活,不拘泥具体格式,完全取决于手头的任务。例如,您可以执行简单的分类任务,并给出演示任务的示例,如下所示:

prompt:
这太好了!// 积极的
这电影很精彩 //积极的
表演太差了 // 消极的
这部喜剧不好笑 //

output:
这太好了!// 积极的
这部电影很精彩!// 积极的
表演太差了!// 消极的
这部喜剧不好笑。// 消极的

提示的组成部分(Elements of a Prompt)

提示可能包含以下任何组件:

  • Instruction 指令 : 您想让模型执行的特定任务或指令

  • Context 上下文 : 可以涉及外部信息或附加上下文,可以引导模型产生更好的响应

  • Input Data 输入数据 : 我们有兴趣为其找到响应的输入或问题

  • Output Indicator 输出指示符 : 指示输出的类型或格式。

并非所有组件都需要在提示中,并且格式取决于手头的任务。

Image

提示的通用设计技巧(General Tips for Designing Prompts)

以下是设计提示时一些技巧:

从简单处开始(Start Simple)

设计提示语是一个迭代的过程,需要进行大量的实验来获得最佳结果。使用像 chatGPT 试验环境(a simple playground )是一个很好的起点。

您可以从简单的提示开始,随着您的目标越来越明确,逐渐添加更多的元素和上下文。在此过程中,版本控制非常重要。接下来将看到许多例子,其中明确性、简洁性通常会给您带来更好的结果。

当您有一个涉及许多不同子任务的大任务时,您可以尝试将任务拆分为更简单的子任务,并随着结果的改善不断构建。避免在提示设计开始阶段添加过多的复杂性。

指令(The Instruction)

您可以使用指令为各种简单任务设计有效的提示,以指示模型要实现的目标,例如“编写”、“分类”、“汇总”、“翻译”、“排序”等。

注意,您还需要进行大量实验,因此请看看哪种效果最好。使用不同的关键字、上下文和数据尝试不同的指令,看看哪种指令最适合您的特定用例和任务。通常,上下文与您尝试执行的任务越具体和相关越好。我们将在即将发布的指南中介绍采样和添加更多上下文的重要性。

prompt:
将王新义年龄的值加一:
[{"name":"wangxinyi","age":30},{"name":"lufeiyang","age":28}] >

output:

提示工程(Prompt Engineering),也称为上下文提示,是一种通过不更新模型的权重/参数来引导大语言模型(LLM)行为朝着特定结果的方法,是与AI有效交流所需结果的过程。其可用于各种任务,从回答问题到算术推理乃至各种应用领域,理解提示工程能够帮助了解LLM的限制和能力[^1]。 ### 常见复杂Prompt方式 Prompt Engineering存在着各种相对复杂的Prompt方式,主要包括思维链(CoT)和递归提示(Recursive Prompting)等 [^2]。 ### 设计提示的通用技巧 - **从简单开始**:先提出简单直接的提示,再根据结果逐步优化。 - **指令具体性**:提示中的指令要具体明确,让模型清楚知道需要完成的任务。 - **避免不准确性**:确保提示内容准确,避免模糊或容易引起歧义的表述 [^3]。 ### 常见任务模板 提示工程在不同任务中有相应的模板,例如生成PPT、写论文等,还可运用身份指令等 [^3]。 ### DeepSeek提示工程应用及接入方式 - **扩展应用范围**:通过创新提示设计,可以探索模型在更多领域的应用潜力。 - **API接入方式**:以下是一个Python示例代码,展示了如何使用API接入DeepSeek进行提示工程: ```python import requests def deepseek_prompt_engineering(prompt, api_key): url = "https://api.deepseek.com/v1/prompt" headers = { "Authorization": f"Bearer {api_key}", "Content-Type": "application/json" } payload = { "prompt": prompt, "max_tokens": 1024, "temperature": 0.7 } response = requests.post(url, headers=headers, json=payload) return response.json() # 使用示例 api_key = "your_api_key_here" response = deepseek_prompt_engineering("如何优化我的提示词以获得更好的结果?", api_key) print(response) ``` - **SDK接入方式**:以下是使用SDK接入的Python示例代码: ```python from deepseek import PromptEngine # 初始化 engine = PromptEngine(api_key="your_api_key") # 基础提示工程 response = engine.generate( prompt="解释量子计算的基本原理", temperature=0.5, max_tokens=500 ) # 高级提示模板 template = """ 作为{role},请用{style}风格回答以下问题: 问题:{question} """ filled_prompt = engine.fill_template( template, role="物理学教授", style="通俗易懂", question="量子纠缠是什么意思?" ) ``` [^4]
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张博208

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值