学习Prompt之从一无所知到微微一笑

竟然什么是Prompt?

技术先知们越来越频繁地提及prompt这个词语,究竟什么是prompt,我用一种很急切的心情去挖掘prompt这个词的含义,生怕落后了就被淘汰。

prompt狭义的解释是:
Prompt是一种人工智能模型API,由OpenAI开发。它可以用于生成文本和回答问题,可以为开发者提供快速、高效的解决方案。Prompt可以接收用户输入,并使用机器学习算法来预测输出结果。使用Prompt,开发者可以通过简单的API调用,快速生成各种文本,例如文章、电子邮件、聊天记录、语音指令等等。Prompt还可以用于回答各种问题,例如自然语言问答、搜索建议、文本摘要等等。这使得它成为处理文本数据和自然语言处理任务的重要工具之一。

想了解prompt,于是,我就从openAI 的 API 着手, 我先注册一个 Prompt账号, 下面是注册账号的流程:

  1. 在您的Web浏览器中打开Prompt的网站:https://beta.openai.com/signup/

  2. 输入您的电子邮件地址,创建一个密码,并同意使用条款和隐私政策。

  3. 按照提示输入您的个人信息。

  4. 点击“创建账户”按钮。

  5. 您将收到一封确认邮件,请按照邮件中的指示完成账户确认。

  6. 登录您的Prompt账户,并按照提示创建一个API密钥。

Prompt是一种高级工具,需要具备一定的编程和人工智能技能。如果是初学者,可能需要先了解一些基本的编程和人工智能知识,然后再开始学习Prompt。

不用怕,初生牛犊不怕虎。

首先,我看看OpenAI API 能做什么?

OpenAI告诉我:

  1. OpenAI 训练了先进的语言模型,非常擅长理解和生成文本。我们的API提供对这些模型的访问,可以用于解决几乎任何涉及处理语言的任务。

  2. OpenAI 提供了不同能力水平的模型,适用于不同的任务,以及微调您自己的定制模型的能力。这些模型可用于从内容生成到语义搜索和分类的所有任务。

  3. 完成端口(Completions)是API的核心,提供了一个极其灵活和强大的简单接口。将一些文本作为提示(Prompt)输入,API将返回一个文本完成,尝试匹配您给出的任何指令或上下文。( 这就是技术先知们提及到的Prompt)

原来Completions是核心,接下来就开始学习怎样构造Completions吧。

创建了Completions的办法如下:

POST https://api.openai.com/v1/completions

这个请求可以带下面的参数:

  1. model (string 必填)
    要使用的模型的 ID。您可以使用 List models API 查看所有可用模型,或者查看我们的模型概述以了解它们的描述。

  2. prompt (string 或 array 可选)
    要为其生成完成的提示,编码为字符串、字符串数组、标记数组或标记数组的数组。

  3. suffix (string 可选)
    默认为 null
    插入文本完成后跟随的后缀。

  4. max_tokens (整数 可选)
    默认为 16
    在完成中生成的标记的最大数量。

  5. temperature (数字 可选)
    默认为 1
    使用哪种采样温度,在 0 到 2 之间。更高的值(如 0.8)会使输出更随机,而较低的值(如 0.2)会使其更专注和确定性。
    通常建议更改此参数或 top_p,但不要同时更改两者。

  6. top_p (数字 可选)
    默认为 1
    一种与温度采样相似的替代方法,称为 nucleus sampling,其中模型考虑具有 top_p 概率质量的标记的结果。因此,0.1 表示仅考虑占前 10% 概率质量的标记。
    通常建议更改此参数或温度,但不要同时更改两者。

  7. n (整数 可选)
    默认为 1
    要为每个提示生成的完成数。
    注意:由于此参数会生成许多完成,因此它可能会快速消耗您的令牌配额。请小心使用,并确保您对 max_tokens 和 stop 进行了合理的设置。

  8. stream (布尔值 可选)
    默认为 false
    是否将部分进度流回。如果设置,标记将作为仅数据的服务器发送的事件发送,直到出现数据:[DONE] 消息为止。

  9. logprobs (整数 可选)
    默认为 null
    在最有可能的标记上包括对数概率以及选择的标记的对数概率。例如,如果 logprobs 为 5,则 API 将返回最有可能的 5 个标记的列表。API 将始终返回所抽样标记的对数概率,因此响应中可能有多达 logprobs+1 个元素。
    logprobs 的最大值为 5。

  10. echo (布尔值 可选)
    默认为 false
    除完成外还回显提示

  11. stop (string 或 array)
    默认值为null
    最多4个序列,API将停止生成更多的标记。返回的文本将不包含停止序列。

  12. presence_penalty (数字 可选)
    默认值为0
    介于-2.0和2.0之间的数字。正值基于它们在文本中出现的频率对新标记进行惩罚,增加模型谈论新话题的可能性。

  13. frequency_penalty (数字 可选)
    默认值为0
    介于-2.0和2.0之间的数字。正值基于它们在文本中已有的频率对新标记进行惩罚,减少模型重复相同行的可能性。

  14. best_of (整数 可选)
    默认值为1
    在服务器端生成best_of个完成,并返回“最佳”(每个标记的对数概率最高的完成)。结果无法流式传输。
    当与n一起使用时,best_of控制候选完成的数量,n指定要返回的数量——best_of必须大于n。
    注意:由于此参数生成许多完成,因此可能会迅速消耗您的令牌配额。请谨慎使用,并确保max_tokens和stop的设置合理。

  15. logit_bias (映射 可选)
    默认值为null
    修改指定标记出现在完成中的可能性。
    接受一个将标记(由GPT标记器中的标记ID指定)映射到与-100到100相关的偏差值的JSON对象。您可以使用此标记器工具(适用于GPT-2和GPT-3)将文本转换为标记ID。在数学上,在采样之前,模型生成的logit将添加到偏差中。确切的影响将因模型而异,但介于-1和1之间的值应该会减少或增加选择的可能性;像-100或100这样的值应该会导致相关标记被禁止或独占选择。
    例如,您可以传递{“50256”: -100}以防止生成标记。

  16. user (字符串 可选)
    表示您的最终用户的唯一标识符,可帮助OpenAI监视和检测滥用。了解更多。

用python代码实现一个Completions:

import os
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.Completion.create(
  model="text-davinci-003",
  prompt="我是一款高智商问答机器人。如果你问我一个基于事实的问题,我会给你答案。如果你问我一个无意义的问题、玩弄文字游戏的问题或者没有明确答案的问题,我会回答\“丢那星\”"
  temperature=0,
  max_tokens=100,
  top_p=1,
  frequency_penalty=0.0,
  presence_penalty=0.0,
  stop=["\n"]
)

来到OpenAI的Playground,玩玩上面Prompt的例子
先写提示词(prompt):

我是一款高智商问答机器人。如果你问我一个基于事实的问题,我会给你答案。如果你问我一个无意义的问题、玩弄文字游戏的问题或者没有明确答案的问题,我会回答“丢那星”。

开始提问:

Q: 今天是什么日子?
A: 今天是2021年4月14日,星期三。

Q: 有没有外星人?
A: 目前尚无证据表明外星人存在。

Q:香蕉乘香蕉等于多少?
A: 丢那星。

Q:丢那星是什么意思?
A: “丢那星”是一句俗语,意思是“我不知道”或“我不想回答”。

显然,Prompt 起到了一定作用。

上面小试牛刀,兴奋了一下,我还想要深入学习Prompt。

从基本开始。

假设我想要创建一个宠物名生成器。从零开始起名字是很难的!

首先,我需要一个提示,明确我想要什么。先从一个简单的问句开始(Q是向人工智能提问,A是人工智能的回答):

Q: 请给马起一个名字。
A:闪电

问句Q,范围很大,人工智能的回答可以天马行空。加入提示重新再提问:

Q: 给一匹黑马取一个名字。
A: 午夜

很显然,一个简单的提示,答案会接近我的期待。

接着,我再增加提示:

Q: 给一匹超级英雄马取三个名字。
A: 1. 超级种马 2. 柯尔特上尉 3.强大的野马

这就是超级英雄?太普通了吧?显然和我相像中的不同。显然,提示词不及格,需要好好调整。

不要心急,慢慢来,今天的学习就先到这里了。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2023年8月9日
下一篇 2023年8月9日

相关推荐