How to work with the GPT⑶5-Turbo and GPT⑷ models – Azure OpenAI Service(openai completion

I. OpenAI完成API的logprobs介绍

在使用OpenAI完成API时,了解和使用logprobs参数是非常重要的。logprobs是OpenAI完成API的一个可选参数,用于返回完成结果中每一个token的对数几率。

logprobs的作用是可以通过分析每一个token的对数几率,对完成结果进行分析和评估。通过了解每一个token被生成的几率,我们可以更好地理解生成结果的可靠性和准确性。

A. 定义

logprobs是log probabilities的缩写,表示每一个token的对数几率。

B. 作用

logprobs参数的作用是提供每一个token的几率信息,以便于对生成结果进行分析、评估和控制。它可以帮助我们了解每一个token在生成进程中的重要性和公道性。

II. 怎样在OpenAI完成API中获得logprobs信息

要获得OpenAI完成API中的logprobs信息,我们需要在API要求中提供相应的参数和设置。

A. 要求方式

调用OpenAI完成API时,需要将logprobs参数设置为true,以获得logprobs信息。

B. 代码示例

下面是一个使用logprobs参数获得logprobs信息的Python代码示例:

completion = openai.Completion.create(engine="gpt⑶.5", prompt="...", logprobs=True)

C. 返回结果

OpenAI完成API将返回一个包括logprobs信息的响应对象。我们可以从响应对象中提取所需的logprobs信息使用。

III. 使用logprobs信息的利用场景

获得OpenAI完成API中的logprobs信息后,我们可以将其利用于多种场景中,以提高生成结果的质量和可控性。

A. 完成结果评估

通过分析logprobs信息,我们可以对生成结果的质量和准确性进行评估。可以根据logprobs信息判断生成结果的可靠程度,从而提高生成内容的质量。

B. 计算几率散布

logprobs信息可以用于计算每一个token的几率散布,从而了解生成文本中各个辞汇的重要性和公道性。我们可以根据几率散布对生成结果进行优化和调剂。

C. 控制生成进程

根据logprobs信息,我们可以针对特定token的几率进行调剂,以控制生成结果的精准性和方向。这样可以更好地实现对生成进程的控制和指点。

IV. 注意事项和限制

在使用OpenAI完成API的logprobs信息时,需要注意以下几个事项和限制。

A. 返回结果限制

OpenAI完成API返回的logprobs信息可能会有限,具体取决于所使用的模型和设置。我们需要了解响应对象中logprobs信息的具体限制。

B. 计算开消

计算logprobs可能需要额外的计算资源,因此在进行大范围利用时,需要斟酌计算开消和性能问题。公道评估计算资源的使用与性能表现的平衡。

openai completion logprobs的进一步展开说明

目录

了解怎样使用GPT⑶5-Turbo和GPT⑷模型

文章

2023年7月18日

2位贡献者反馈

本文介绍

GPT⑶5-Turbo和GPT⑷模型是优化为会话界面的语言模型。这些模型的行动与较旧的GPT⑶模型区别。之前的模型采取文本输入和文本输出的方式,即接受一个提示字符串并返回要追加到提示中的完成内容。但是,GPT⑶5-Turbo和GPT⑷模型采取的是会话输入和消息输出的方式。这些模型期望以特定的聊天式对话格式进行输入,并返回表示模型撰写的聊天消息的完成结果。虽然此格式专门为多轮对话而设计,但您会发现它在非聊天场景中也能够很好地工作。

在Azure OpenAI中,有两种区别的选项可以与这些类型的模型进行交互:

聊天完成API。

带有聊天标记语言(ChatML)的完成API。

聊天完成API是一种专门用于与GPT⑶5-Turbo和GPT⑷模型交互的新型API。这是访问这些模型的首选方法。这也是访问新的GPT⑷模型的唯一方法。

ChatML使用与其他模型(例如text-davinci-002)相同的完成API,它需要一种称为聊天标记语言(ChatML)的唯一令牌格式进行输入验证,仅支持gpt⑶5-turbo模型,并且底层格式更有可能随时间而变化。

本文介绍了怎么开始使用GPT⑶5-Turbo和GPT⑷模型。使用本文中描写的技术是取得最好结果的重要方法。如果您尝试以与旧模型系列相同的方式与模型进行交互,模型通常会产生冗杂且无用的响应。

使用GPT⑶5-Turbo和GPT⑷模型的工作下面的代码片断显示了使用聊天完成API与GPT⑶5-Turbo和GPT⑷模型的最基本方法。如果这是您第一次通过编程的方式使用这些模型,建议您从我们的GPT⑶5-Turbo & GPT⑷快速入门开始。目前,GPT⑷模型只能通过要求取得。现有的Azure OpenAI客户可以通过填写此表格申请访问权限。

“`python
import os
import openai

openai.api_type = “azure”
openai.api_version = “2023-05⑴5”
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⑶5-turbo”, # 您部署GPT⑶5-Turbo或GPT⑷模型时选择的部署名。
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⑹usfn2yyjkbmESe3G4jaQR6bsScO1”,
“model”: “gpt⑶.5-turbo-0301”,
“object”: “chat.completion”,
“usage”: {
“completion_tokens”: 86,
“prompt_tokens”: 37,
“total_tokens”: 123
}
}
“`

注意:新的GPT⑶5-Turbo和GPT⑷模型不支持以下参数:logprobs、best_of和echo。如果设置了这些参数,将会收到毛病消息。每一个响应都包括一个finish_reason字段。finish_reason的可能值有:

– stop:API返回完全的模型输出。
– length:由于max_tokens参数或令牌限制,模型输出不完全。
– content_filter:由于来自内容过滤器的标志而省略的内容。
– null:API响应仍在进行中或不完全。

请尽可能将max_tokens设置为略高于正常值(例如300或500)。这样可以确保在生成文本到达消息结尾之前,模型不会停止生成文本。

模型版本

注意,gpt⑶5-turbo等效于OpenAI的gpt⑶.5-turbo模型。与之前的GPT⑶和GPT⑶.5模型区别,gpt⑶5-turbo模型和gpt⑷和gpt⑷⑶2k模型将继续更新。在创建这些模型的部署时,您还需要指定一个模型版本。您可以在我们的模型页面上找到这些模型的退役日期。

使用聊天完成API

OpenAI训练了GPT⑶5-Turbo和GPT⑷模型,以接受格式化为对话的输入。messages参数接受一个按角色组织的对话消息对象数组。使用Python API时,使用了一个包括多个字典的列表。基本的聊天完成格式以下:

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

包括一个示例答案后面随着一个问题的对话可以以下所示:

“`python
{“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.”}
“`

系统角色

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

– 助手的扼要描写。
– 助手的个性特点。
– 您希望助手遵守的指令或规则。
– 模型需要的数据或信息,例如FAQ中的相关问题。

您可以为您的用例自定义系统角色,或只包括基本唆使也能够。虽然系统角色/消息是可选的,但建议最少包括一个基本的系统角色,以取得最好结果。

消息

在系统角色以后,您可以包括一系列用户和助手之间的消息。例如:

“`python
{“role”: “user”, “content”: “What is thermodynamics?”}
“`

要从模型中触发响应,您应以一个用户消息结束,表明轮到助手响应了。

您还可以包括用户和助手之间的一系列示例消息,作为二次学习的方式。

消息提示示例

以下示例显示了您可以在GPT⑶5-Turbo和GPT⑷模型中使用的不一样式的提示。这些示例仅是一个出发点,您可以尝试区别的提示来自定义行动以适应您自己的用例。

基本示例

如果您希望GPT⑶5-Turbo模型的行动类似于chat.openai.com,可以对系统消息使用基本的系统消息,例如 “Assistant is a large language model trained by OpenAI.”。

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

带有唆使的示例

对某些场景,您可能需要向模型提供额外的唆使,以限定模型的能力。

“`python
{“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 Cognitive Search的产品在查询时检索最相关的信息。

“`python
{“role”: “system”, “content”: “Assistant is an intelligent chatbot designed to help users answer technical questions about Azure OpenAI Service. 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⑶, Codex and Embeddings model series. – Azure OpenAI Service gives customers advanced language AI with OpenAI GPT⑶, 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?”}
“`

使用聊天完成API进行准聊天用例学习

您还可以向模型提供准聊天用例的示例。由于新的提示格式,准聊天学习的方法略有变化。现在,您可以在提示中包括用户和助手之间的一系列消息作为准聊天示例。这些示例可以用来为常见问题预设答案,以引导模型或教授特定的行动。这仅是使用GPT⑶5-Turbo和GPT⑷进行少许学习的一个示例。您可以尝试区别的方式,看看哪一个对您的用例效果最好。

“`python
{“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](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](https://www.irs.gov/refunds)”}
“`

将聊天完成用于非聊天场景

聊天完成API的设计初衷是与多轮对话一起工作,但它也能够很好地用于非聊天场景。例如,对实体提取场景,您可使用以下提示:

“`python
{“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⑼322 when you get a chance so we can go over the benefits?”}
“`

创建基本的对话循环

到目前为止,我们已展现了与聊天完成API进行交互的基本机制。此示例将向您展现怎样创建一个对话循环,该循环履行以下操作:

– 延续获得控制台输入,并将其正确格式化为message列表作为用户角色内容。
– 将输出响应打印到控制台,并将其格式化并添加到message列表作为助手角色内容。

这意味着每当提出一个新问题时,都会发送一个运行中的对话记录与最新的问题一起。由于模型没有记忆,您需要在每一个新问题中发送更新的对话记录,否则模型将丢失上一个问题和答案的上下文。

“`python
import os
import openai

openai.api_type = “azure”
openai.api_version = “2023-05⑴5”
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⑶.5-turbo”, # 您部署GPT⑶5-Turbo或GPT⑷模型时选择的部署名。
messages=conversation
)

conversation.append({“role”: “assistant”, “content”: response[“choices”][0][“message”][“content”]})

print(“ ” + response[‘choices’][0][‘message’][‘content’] + “ ”)
“`

在上面的代码中,运行后您会得到一个空白的控制台窗口。在窗口中输入您的第一个问题,然后按Enter键。一旦返回响应,您可以重复此进程并继续发问。

openai completion logprobs的常见问答Q&A

问题1:logprobs在OpenAI API中有甚么作用?

答案:logprobs是OpenAI API中一个重要的参数,用于计算和返复生成文本的几率。具体而言,它表示每一个生成的token的对数几率。logprobs对以下方面非常有用:

  • 评估生成文本的置信度:logprobs可用于分析生成文本的置信度或可靠性。通过检查每一个token的对数几率,可以得知生成的文本会不会在模型的预期范围内。
  • 选择最好生成结果:通过比较区别生成文本的logprobs,可以肯定哪一个文本序列更符合模型的意图。较高的logprobs表示模型认为该文本序列更可能出现。
  • 调剂生成文本的多样性:在生成文本时,可以通过调剂温度参数和logprobs的比较来控制输出结果的多样性。较高的温度值和类似的logprobs将致使更加多样化的生成文本。

总之,logprobs在OpenAI API中起到了评估、比较和调剂生成文本的重要作用。

问题2:怎样在OpenAI API的聊天完成端点中获得logprobs?

答案:目前,在OpenAI API的聊天完成端点中并没有直接支持logprobs的功能。只有在完成端点(completion endpoint)中才有logprobs参数可用。这意味着你没法直接使用聊天完成端点来获得logprobs。

但是,如果你需要获得logprobs,你可以斟酌以下方法:

  1. 使用完成端点而不是聊天完成端点:如果你的需求非常需要logprobs,可以斟酌使用完成端点代替聊天完成端点。完成端点支持logprobs参数,可以满足你对logprobs的需求。
  2. 自行计算logprobs:你可以在获得生成的聊天文本以后,使用其他方法或工具来计算文本序列中每一个token的几率。这可能需要一些额外的开发工作,但可以帮助你获得所需的logprobs。
  3. 联系OpenAI支持团队:如果你依然需要在聊天完成端点中获得logprobs,你可以联系OpenAI支持团队,了解他们会不会有其他解决方案或计划在将来的更新中支持logprobs。

综上所述,要在OpenAI API的聊天完成端点中获得logprobs,你可以斟酌使用完成端点、自行计算logprobs或与OpenAI支持团队联系。

问题3:怎么让API返回更多的logprobs信息?

答案:在OpenAI API中,通过调剂参数可让API返回更多的logprobs信息。具体来讲,你可以采取以下步骤:

  1. 增加top_k的值:通过将top_k参数的值增加到更大的数目,可让API返回更多的备选token及其对应的logprobs。较大的top_k值将致使返回更多的备选token和对应的几率。
  2. 减小temperature的值:通过将temperature参数的值减小到接近零的数值,可让API返回更多的类似几率的备选token及其对应的logprobs。较小的temperature值将致使返回更平均散布的logprobs。

请注意,增加top_k的值或减小temperature的值可能会致使生成文本的多样性减少,由于API将更偏向于选择几率较高的token。

总而言之,通过调剂top_k和temperature参数的值,你可让API返回更多的logprobs信息。

ChatGPT相关资讯

ChatGPT热门资讯

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!