了解如何使用 ChatGPT 和 GPT-4 模型

ChatGPT 和 GPT-4 模型是针对会话界面优化的语言模型。这些模型的行为与旧的 GPT-3 模型不同。以前的模型是文本输入和文本输出,这意味着它们接受提示字符串并返回完成以附加到提示。但是,ChatGPT 和 GPT-4 模型是对话传入和消息输出。这些模型期望输入采用类似于特定聊天的脚本格式设置格式,并返回表示聊天中模型编写的消息的完成。虽然这种格式是专门为多轮对话设计的,但你会发现它也适用于非聊天场景。

在 Azure OpenAI 中,有两种不同的选项可用于与这些类型的模型进行交互:

  • 聊天完成 API。
  • 使用聊天标记语言 (ChatML) 完成 API。

聊天完成 API 是一个新的专用 API,用于与 ChatGPT 和 GPT-4 模型进行交互。此 API 是访问这些模型的首选方法。这也是访问新的 GPT-4 模型的唯一方法

ChatML 使用的完成 API 与您用于其他模型(如 text-davinci-002)的相同,它需要一种独特的基于令牌的提示格式,称为聊天标记语言 (ChatML)。这提供了比专用聊天完成 API 更低的级别访问权限,但还需要额外的输入验证,仅支持 ChatGPT(gpt-35-turbo)模型,并且底层格式更有可能随着时间的推移而更改

本文将引导您开始使用新的 ChatGPT 和 GPT-4 模型。使用此处描述的技术以获得最佳结果非常重要。如果尝试以与旧模型系列相同的方式与模型交互,则模型通常会很冗长,并且提供的响应不太有用。

使用 ChatGPT 和 GPT-4 模型

以下代码片段显示了将 ChatGPT 和 GPT-4 模型与聊天完成 API 结合使用的最基本方法。如果这是您第一次以编程方式使用这些模型,我们建议您从我们的 ChatGPT 和 GPT-4 快速入门开始。

GPT-4 型号目前仅应要求提供。现有的 Azure OpenAI 客户可以通过填写此表单来申请访问权限

import os
import openai
openai.api_type = "azure"
openai.api_version = "2023-05-15" 
openai.api_base = os.getenv("OPENAI_API_BASE")  # Your Azure OpenAI resource's endpoint value.
openai.api_key = os.getenv("OPENAI_API_KEY")

response = openai.ChatCompletion.create(
    engine="gpt-35-turbo", # The deployment name you chose when you deployed the ChatGPT or GPT-4 model.
    messages=[
        {"role": "system", "content": "Assistant is a large language model trained by OpenAI."},
        {"role": "user", "content": "Who were the founders of Microsoft?"}
    ]
)

print(response)

print(response['choices'][0]['message']['content'])

输出

{
  "choices": [
    {
      "finish_reason": "stop",
      "index": 0,
      "message": {
        "content": "The founders of Microsoft are Bill Gates and Paul Allen. They co-founded the company in 1975.",
        "role": "assistant"
      }
    }
  ],
  "created": 1679014551,
  "id": "chatcmpl-6usfn2yyjkbmESe3G4jaQR6bsScO1",
  "model": "gpt-3.5-turbo-0301",
  "object": "chat.completion",
  "usage": {
    "completion_tokens": 86,
    "prompt_tokens": 37,
    "total_tokens": 123
  }
}

 注意

以下参数不适用于新的 ChatGPT 和 GPT-4 模型:、 和 。如果设置了这些参数中的任何一个,则会收到错误。logprobsbest_ofecho

每个响应都包含一个 .的可能值为:finish_reasonfinish_reason

  • 停止:API 返回完整的模型输出。
  • 长度:由于参数或令牌限制max_tokens模型输出不完整。
  • content_filter:由于内容过滤器中的标志而省略了内容。
  • :API 响应仍在进行中或不完整。

请考虑设置为比正常值稍高的值,例如 300 或 500。这可确保模型在到达消息末尾之前不会停止生成文本。max_tokens

模型版本控制

 注意

gpt-35-turbo等效于 OpenAI 的模型。gpt-3.5-turbo

与以前的 GPT-3 和 GPT-3.5 模型不同,该模型以及 和 模型将继续更新。创建这些模型的部署时,还需要指定模型版本。gpt-35-turbogpt-4gpt-4-32k

目前,只有版本可用于 ChatGPT 和 GPT-4 型号。我们将来会继续提供更新版本。您可以在我们的模型页面上找到模型弃用时间。03010314

使用聊天完成 API

OpenAI训练了ChatGPT和GPT-4模型,以接受格式化为对话的输入。messages 参数采用字典数组,其中包含按角色组织的对话。

基本聊天完成的格式如下:

{"role": "system", "content": "Provide some context and/or instructions to the model"},
{"role": "user", "content": "The users messages goes here"}

一个带有一个示例答案后跟一个问题的对话如下所示:

{"role": "system", "content": "Provide some context and/or instructions to the model."},
{"role": "user", "content": "Example question goes here."},
{"role": "assistant", "content": "Example answer goes here."},
{"role": "user", "content": "First question/message for the model to actually respond to."}

系统角色

系统角色也称为系统消息,包含在数组的开头。此消息提供模型的初始说明。您可以在系统角色中提供各种信息,包括:

  • 助手的简要说明
  • 助手的性格特征
  • 您希望助理遵循的说明或规则
  • 模型所需的数据或信息,例如常见问题解答中的相关问题

您可以为您的使用案例自定义系统角色,也可以只包含基本说明。系统角色/消息是可选的,但建议至少包含一个基本角色/消息以获得最佳结果。

消息

在系统角色之后,您可以在用户助手之间包含一系列消息。

 {"role": "user", "content": "What is thermodynamics?"}

若要触发来自模型的响应,应以用户消息结尾,指示轮到助手响应。您还可以在用户和助手之间包含一系列示例消息,作为进行少量镜头学习的一种方式。

消息提示示例

以下部分显示了可用于 ChatGPT 和 GPT-4 模型的不同样式提示的示例。这些示例只是一个起点,您可以尝试使用不同的提示来自定义自己的用例的行为。

基本示例

如果您希望 ChatGPT 模型的行为类似于 chat.openai.com,您可以使用基本的系统消息,例如“助手是由 OpenAI 训练的大型语言模型”。

{"role": "system", "content": "Assistant is a large language model trained by OpenAI."},
{"role": "user", "content": "Who were the founders of Microsoft?"}

带有说明的示例

对于某些方案,您可能希望向模型提供其他说明,以定义模型能够执行的操作的护栏。

{"role": "system", "content": "Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions: 
- Only answer questions related to taxes. 
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information. "},
{"role": "user", "content": "When are my taxes due?"}

使用数据进行接地

您还可以在系统消息中包含相关数据或信息,以便为模型提供额外的对话上下文。如果只需要包含少量信息,则可以在系统消息中对其进行硬编码。如果模型应了解大量数据,则可以使用嵌入或 Azure 认知搜索等产品在查询时检索最相关的信息。

{"role": "system", "content": "Assistant is an intelligent chatbot designed to help users answer technical questions about Azure OpenAI Serivce. Only answer questions using the context below and if you're not sure of an answer, you can say 'I don't know'.

Context:
- Azure OpenAI Service provides REST API access to OpenAI's powerful language models including the GPT-3, Codex and Embeddings model series.
- Azure OpenAI Service gives customers advanced language AI with OpenAI GPT-3, Codex, and DALL-E models with the security and enterprise promise of Azure. Azure OpenAI co-develops the APIs with OpenAI, ensuring compatibility and a smooth transition from one to the other.
- At Microsoft, we're committed to the advancement of AI driven by principles that put people first. Microsoft has made significant investments to help guard against abuse and unintended harm, which includes requiring applicants to show well-defined use cases, incorporating Microsoft’s principles for responsible AI use."
},
{"role": "user", "content": "What is Azure OpenAI Service?"}

使用聊天完成进行少量学习

您还可以为模型提供一些镜头示例。由于新的提示格式,少数镜头学习的方法略有变化。现在,您可以在提示中包含用户和助手之间的一系列消息作为几个镜头示例。这些示例可用于为常见问题的答案提供种子,以启动模型或向模型教授特定行为。

这只是如何使用 ChatGPT 和 GPT-4 进行少量镜头学习的一个例子。您可以尝试不同的方法,看看哪种方法最适合您的使用案例。

{"role": "system", "content": "Assistant is an intelligent chatbot designed to help users answer their tax related questions. "},
{"role": "user", "content": "When do I need to file my taxes by?"},
{"role": "assistant", "content": "In 2023, you will need to file your taxes by April 18th. The date falls after the usual April 15th deadline because April 15th falls on a Saturday in 2023. For more details, see https://www.irs.gov/filing/individuals/when-to-file."},
{"role": "user", "content": "How can I check the status of my tax refund?"},
{"role": "assistant", "content": "You can check the status of your tax refund by visiting https://www.irs.gov/refunds"}

将聊天完成用于非聊天方案

聊天完成 API 旨在处理多轮对话,但它也适用于非聊天方案。

例如,对于实体提取方案,可以使用以下提示:

{"role": "system", "content": "You are an assistant designed to extract entities from text. Users will paste in a string of text and you will respond with entities you've extracted from the text as a JSON object. Here's an example of your output format:
{
   "name": "",
   "company": "",
   "phone_number": ""
}"},
{"role": "user", "content": "Hello. My name is Robert Smith. I'm calling from Contoso Insurance, Delaware. My colleague mentioned that you are interested in learning about our comprehensive benefits policy. Could you give me a call back at (555) 346-9322 when you get a chance so we can go over the benefits?"}

创建基本对话循环

到目前为止的示例已向您展示了与聊天完成 API 交互的基本机制。此示例演示如何创建执行以下操作的会话循环:

  • 持续接受控制台输入,并将其作为消息数组的一部分正确格式化为用户角色内容。
  • 输出打印到控制台并格式化并作为助理角色内容添加到消息数组中的响应。

这意味着每次提出新问题时,到目前为止的对话记录都会与最新问题一起发送。由于模型没有内存,因此您需要为每个新问题发送更新的成绩单,否则模型将丢失以前问题和答案的上下文。

import os
import openai
openai.api_type = "azure"
openai.api_version = "2023-05-15" 
openai.api_base = os.getenv("OPENAI_API_BASE")  # Your Azure OpenAI resource's endpoint value .
openai.api_key = os.getenv("OPENAI_API_KEY")

conversation=[{"role": "system", "content": "You are a helpful assistant."}]

while(True):
    user_input = input()      
    conversation.append({"role": "user", "content": user_input})

    response = openai.ChatCompletion.create(
        engine="gpt-3.5-turbo", # The deployment name you chose when you deployed the ChatGPT or GPT-4 model.
        messages = conversation
    )

    conversation.append({"role": "assistant", "content": response['choices'][0]['message']['content']})
    print("\n" + response['choices'][0]['message']['content'] + "\n")

当您运行上面的代码时,您将获得一个空白的控制台窗口。在窗口中输入您的第一个问题,然后按回车键。返回回复后,您可以重复该过程并继续提问。

管理对话

前面的示例将一直运行,直到达到模型的令牌限制。随着每个问题的提出和答案的接收,数组的大小就会增加。的令牌限制为 4096 个令牌,而 和 的令牌限制分别为 8192 和 32768。这些限制包括来自发送的消息数组和模型响应的令牌计数。消息数组中的令牌数与参数值的组合必须保持在这些限制之下,否则您将收到错误。messagesgpt-35-turbogpt-4gpt-4-32kmax_tokens

你有责任确保提示和完成在令牌限制范围内。这意味着对于较长的对话,您需要跟踪令牌计数,并且仅向模型发送超出限制的提示。

以下代码示例显示了一个简单的聊天循环示例,其中包含使用 OpenAI 的 tiktoken 库处理 4096 令牌计数的技术。

代码需要 抖音令牌 .如果您有旧版本运行 .0.3.0pip install tiktoken --upgrade

import tiktoken
import openai
import os
openai.api_type = "azure"
openai.api_version = "2023-05-15" 
openai.api_base = os.getenv("OPENAI_API_BASE")  # Your Azure OpenAI resource's endpoint value .
openai.api_key = os.getenv("OPENAI_API_KEY")

system_message = {"role": "system", "content": "You are a helpful assistant."}
max_response_tokens = 250
token_limit= 4096
conversation=[]
conversation.append(system_message)

def num_tokens_from_messages(messages, model="gpt-3.5-turbo-0301"):
    encoding = tiktoken.encoding_for_model(model)
    num_tokens = 0
    for message in messages:
        num_tokens += 4  # every message follows <im_start>{role/name}\n{content}<im_end>\n
        for key, value in message.items():
            num_tokens += len(encoding.encode(value))
            if key == "name":  # if there's a name, the role is omitted
                num_tokens += -1  # role is always required and always 1 token
    num_tokens += 2  # every reply is primed with <im_start>assistant
    return num_tokens

while(True):
    user_input = input("")     
    conversation.append({"role": "user", "content": user_input})
    conv_history_tokens = num_tokens_from_messages(conversation)

    while (conv_history_tokens+max_response_tokens >= token_limit):
        del conversation[1] 
        conv_history_tokens = num_tokens_from_messages(conversation)
        
    response = openai.ChatCompletion.create(
        engine="gpt-35-turbo", # The deployment name you chose when you deployed the ChatGPT or GPT-4 model.
        messages = conversation,
        temperature=.7,
        max_tokens=max_response_tokens,
    )

    conversation.append({"role": "assistant", "content": response['choices'][0]['message']['content']})
    print("\n" + response['choices'][0]['message']['content'] + "\n")

在此示例中,达到令牌计数后,将删除对话脚本中最旧的消息。 代替效率,我们从索引 1 开始,以便始终保留系统消息并仅删除用户/助手消息。随着时间的推移,这种管理对话的方法可能会导致对话质量下降,因为模型将逐渐失去对话早期部分的上下文。delpop()

另一种方法是将对话持续时间限制为最大令牌长度或一定数量的回合数。达到最大令牌限制后,如果要允许对话继续,模型将失去上下文,则可以提示用户他们需要开始新的对话,并清除消息数组以启动具有完整令牌限制的全新对话。

前面演示的代码的令牌计数部分是 OpenAI 说明书示例之一的简化版本。

后续步骤

原创文章,作者:校长,如若转载,请注明出处:https://www.yundongfang.com/Yun230954.html

(0)
打赏 微信扫一扫不于多少! 微信扫一扫不于多少! 支付宝扫一扫礼轻情意重 支付宝扫一扫礼轻情意重
上一篇 2023年5月29日
下一篇 2023年5月29日

相关推荐

  • 在iPhone上观看视频时亮度更改为自动亮度:修复

    在 iPhone 上观看视频时,您的 iPhone 是否会自动更改亮度?通常,iPhone本身不会干扰屏幕亮度水平。但是,在某些情况下,亮度级别可能会自行变化。在这种情况下,这些解…

    2024年4月24日 苹果Apple
  • 应用程序无法在iPhone中打开:如何修复

    您的 iPhone 上无法打开应用程序吗?与其他平台一样,iOS 上的应用程序可能会在启动时突然崩溃。如果应用程序在初始启动时崩溃一次或两次,这并不罕见。如果您在使用Beta应用程…

    2024年4月24日 苹果Apple
  • iPhone中缺少Safari:这是修复程序

    无法想象没有 Safari 的 iPhone。由于 Safari 是所有 Apple 设备中的默认浏览器,因此缺少 Safari 浏览器对您来说可能是一个问题。由于缺少默认浏览器,…

    2024年4月24日 苹果Apple
  • iCloud存储已满通知:如何修复

    每当您下载某些文件或空投某些内容时,您的iPhone是否显示“iCloud存储空间已满”?iCloud 储存空间的免费套餐限制为仅 5GB。因此,您应该检查的第一件事是手机上iCl…

    2024年4月24日 苹果Apple
  • 请勿打扰模式在iPhone中不起作用:修复

    即使在“请勿打扰”模式下接听电话也可能是一种非常烦人的体验。顾名思义,请勿打扰模式可关闭来自邮件、消息等的所有来电通知和警报。您可以按照这些解决方案集进行修复。 修复1 –启用对焦…

    2024年4月24日 苹果Apple
  • 键盘点击声音在iPhone上不起作用:修复

    iPhone 最好的一点是手机上的触觉。在输入消息时,那些微小的振动刺痛手指的感觉在任何其他设备上都无法体验到。因此,如果咔嗒声不起作用,或者您没有从 iPhone 的键盘中获得振…

    2024年4月24日 苹果Apple
  • iPhone上的通话不断掉线:如何修复

    您的 iPhone 上的所有电话都不断掉线吗?通话中断在iPhone上并不是什么新鲜事,偶尔也会在任何其他移动设备上发生。但是突然所有通话都开始自动断开连接,手机上的通话设置一定有…

    2024年4月23日 苹果Apple
  • 无法允许访问 iPhone 中的摄像头和麦克风

    您在尝试使用应用程序时是否收到“无法允许访问摄像头和麦克风”?通常,您可以在需要提供的基础上向特定对象授予摄像头和麦克风权限。但是,如果您拒绝权限,摄像头和麦克风将无法工作,而是显…

    2024年4月23日 苹果Apple
  • 无法在iPhone上更改Apple ID国家/地区:修复

    更改 Apple ID 上的国家或地区可能非常棘手。在很多情况下,您无法更改Apple ID的区域。我们已经讨论了所有这些条件及其各自的解决方案,以便您最终可以在 iPhone 上…

    2024年4月19日 苹果Apple
  • iPhone中的Safari 403禁止错误:修复

    你得到“403.这是个错误。Safari 中的消息?Safari可能会抛出此消息的原因有很多,而其中一个关键原因是存储的网站缓存和cookie。无论实际原因是什么,您都不必识别它即…

    2024年4月19日 苹果Apple
  • iPhone自行阻止联系人:修复

    您的 iPhone 是否自行阻止了手机上的某些联系人?这对您来说可能是一个巨大的问题,因为该人将无法以任何方式与您联系。您甚至不会意识到此人已被阻止,因为不会有任何类型的通知。解决…

    2024年4月19日 苹果Apple
  • Safari无法在iPhone上下载文件:如何修复

    无法在 Safari 浏览器上下载任何内容?不用担心。使用Safari下载文件通常很容易,下载过程取决于几个与网络相关的参数。有时下载过程会失败,您所要做的就是重试下载文件。但是,…

    2024年4月19日 苹果Apple
  • 如何修复iPhone上的黑屏问题

    您的 iPhone 屏幕是黑色的,但手机处于开启状态,所有其他功能都运行良好——在这种情况下,您可以做的事情并不多。但是,与iPhone的其他问题一样,您可以应用一些解决方案来解决…

    2024年4月19日 苹果Apple
  • 自动更正/预测文本在iPhone上不起作用:修复

    本机自动更正/预测文本可以帮助您随时随地修复错别字和语法错误。但是,当该功能无法正常工作时,您最终可能会发送充满错误的消息。无论您是经常发送消息还是使用手机只是为了让您的 Offi…

    2024年4月19日 苹果Apple
  • iPhone卡在黑屏纺车上:修复

    您的iPhone是否只停留在漆黑的屏幕上,屏幕上只有一个旋转的轮子?如果是这种情况,您可以尝试某些修复程序。首先,您必须尝试强制启动iPhone。这应该足以解决问题并解决它。 如何…

    2024年4月19日
  • iPhone上的Safari缩小问题:这是修复程序

    如果您无法控制 Safari 中的缩放级别,完成工作可能会非常棘手。因此,如果 Safari 看起来被缩小了,那对您来说可能会有问题。您可以通过以下几种方法解决Safari中的此缩…

    2024年4月19日 苹果Apple
  • iPhone通话直接进入语音信箱:修复

    您的电话是否直接转到语音信箱而不是拨打电话?语音邮件可以节省您的一天,同时记录您无法接听的电话中的重要消息。但是,如果所有电话都没有响铃并直接进入语音信箱,那么这是一个真正的问题,…

    2024年4月19日
  • 如何在 Google 云端硬盘中导出 Play 图书笔记、精彩内容和书签

    Play Books 是 Kindle 应用程序更易于访问的替代品之一。它不仅允许在没有任何中间步骤的情况下打开 EPUB 文件,就像 Kindle 一样,它还允许您更简单地导出注…

    2024年4月19日 谷歌Google
  • 如何与Google相册共享

    Google 相册提供了多种分享照片、视频和相册的方式。有些允许与您的 Google 联系人共享,有些允许您普遍共享,而另一些则仍邀请协作或自动共享。以下是在 Google 相册中…

    2024年4月18日 谷歌Google
  • 如何在 Windows 11 中校准 HDR

    在屏幕后面花费大量时间需要优化的观看体验,这就是您需要在 Windows 设备上校准 HDR 的原因。 较旧的设备和操作系统支持标准显示范围 (SDR),该范围在颜色范围方面受到限…

    2024年4月17日
  • 如何在iPhone响铃时阻止iPad响铃

    每当有人在您的 iPhone 上呼叫您时,您的 iPad 是否会响铃?在几乎所有情况下,Apple 生态系统中连续性功能的好处通常都会有所帮助。但是,如果您的iPad开始响铃,即使…

    2024年4月17日 苹果Apple
  • 如何在iPhone中使Google地图成为默认地图

    iPhone 上的默认地图是 Apple 专有的地理位置提供商“地图”。尽管地图越来越好,但它在美国以外的地区运行不佳。与谷歌地图相比,它没有什么可以提供的。在本文中,我们讨论了使…

    2024年4月17日 苹果Apple
  • 无法检查iPhone中的更新错误:修复

    在iPhone上检查更新时,您是否收到此错误消息“无法检查更新”消息?通常,当您在手机脱机时手动搜索更新时,会出现此消息。因此,我们建议您启用 Wi-Fi/蜂窝数据并再次执行相同的…

    2024年4月17日 苹果Apple
  • 如何在iPhone中撤消从主屏幕中删除

    从主屏幕中删除了重要内容并试图将其取回?您可以通过多种方式将应用程序图标放回屏幕。我们已经讨论了您可以遵循的所有方法,并将应用程序图标放回主屏幕 如何在iPhone中撤消从主屏幕中…

    2024年4月17日 苹果Apple
  • 此连接不是iPhone中Safari上的私人错误:修复

    在iPhone上通过Safari浏览网站时,您可能会遇到此错误提示“此连接不是私人的”消息。有很多可能的原因可以归咎于此。如果您按照以下步骤对 Safari 中的问题进行故障排除,…

    2024年4月16日 苹果Apple