微立顶科技

新闻资讯

创新 服务 价值

  ChatGPT模型指南--gpt-3.5-turbo

发布日期:2023/5/13 13:15:19      浏览量:

使用OpenAI API,您可以使用gpt-3.5-turbo构建自己的应用程序,以执行以下操作:

  • 起草一封电子邮件或一些文章
  • 编写Python代码
  • 回答一些文档类的问题
  • 创建对话代理
  • 给你的软件一个自然语言界面
  • 一系列科目的导师
  • 语言翻译
  • 模拟电子游戏角色等

本指南解释了如何对基于聊天的语言模型进行API调用,并分享了一些提示和技巧,以帮助你获得好的结果。您还可以在OpenAI Playground中快速尝试这些内容。

介绍

聊天模型将一系列消息作为输入,并返回模型生成的消息作为输出。

虽然聊天格式旨在使多轮对话变得容易,但它对于没有任何对话的单轮任务(例如以前由text-davinci-003等模型的指令提供的任务)也同样有用。

API调用示例如下所示:

# Note: you need to be using OpenAI Python v0.27.0 for the code below to work import openai openai.ChatCompletion.create( model="gpt-3.5-turbo", messages=[ {"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": "Who won the world series in 2020?"}, {"role": "assistant", "content": "The Los Angeles Dodgers won the World Series in 2020."}, {"role": "user", "content": "Where was it played?"} ] )

主要输入是消息参数。消息必须是消息对象的数组,其中每个对象都有一个角色(“system”、“role”或“assistant”)和内容(消息的内容)。对话可以短至1条消息或很多页的消息。

通常,对话首先格式化为系统消息,然后是交替的用户消息和助理消息。

系统消息有助于设置助手的行为。在上面的例子中,助理被指示“You are a helpful assistant.”。
gpt-3.5-turbo-0301并不总是非常关注系统消息。将对未来的模型进行培训,以更加关注系统信息。

用户消息有助于指导助手。它们可以由应用程序的最终用户生成,也可以由开发人员设置为指令。

助理消息有助于存储之前的回复。它们也可以由开发人员编写,以帮助提供所需行为的示例。

当用户说明引用之前的消息时,包括对话历史记录会有所帮助。在上面的例子中,用户的最后一个问题是“在哪里比赛的?”就是通过提前设置的对话消息来帮助回答。由于模型没有过去请求的记忆,因此所有相关信息必须通过对话提供。如果对话无法满足模型的令牌限制,则需要以某种方式缩短。

API响应示例如下所示:

{
 ’id’: ’chatcmpl-6p9XYPYSTTRi0xEviKjjilqrWU2Ve’,
 ’object’: ’chat.completion’,
 ’created’: 1677649420,
 ’model’: ’gpt-3.5-turbo’,
 ’usage’: {’prompt_tokens’: 56, ’completion_tokens’: 31, ’total_tokens’: 87},
 ’choices’: [
   {
    ’message’: {
      ’role’: ’assistant’,
      ’content’: ’The 2020 World Series was played in Arlington, Texas at the Globe Life Field, which was the new home stadium for the Texas Rangers.’},
    ’finish_reason’: ’stop’,
    ’index’: 0
   }
  ]
}

在Python中,助手的回复可以通过response[’choices’][0][’message’][’content’]提取。

每个响应都将包含一个finish_reason,finish_reason的可能值是:

  • stop:API返回完整的模型输出
  • length:由于max_tokens参数或令牌限制,模型输出不完整
  • content_filter:由于我们内容过滤器中的旗帜而省略的内容
  • null:API响应仍在进行中或不完整

什么是Token令牌

语言模型以称为token令牌的块来读取文本。在英语中,令牌可以短至一个字符,也可以短至一个单词(例如,a或 apple),在某些语言中,令牌甚至可以短于一个字符,甚至长于一个单词。

例如,字符串"ChatGPT is great!"编码为六个令牌:["Chat", "G", "PT", " is", " great", "!"]。

API调用中的令牌总数会影响:

  • 当您为每个令牌支付时,您的API调用成本是多少
  • 您的API调用需要多长时间,因为编写更多令牌需要更多时间
  • 您的API调用是否有效,因为总令牌必须低于模型的最大限制(gpt-3.5-turbo-0301为4096个令牌)

输入和输出令牌都计入这些数量。例如,如果您的API调用在消息输入中使用了10个令牌,而您在消息输出中收到了20个令牌,您将被收取30个令牌的费用。

要查看API调用使用了多少令牌,请检查API响应中的usage字段(例如,response[’usage’][’total_tokens’])。

像gpt-3.5-turbo聊天模型使用令牌的方式与其他模型相同,但由于它们基于消息的格式,更难计算对话将使用多少令牌。

要查看文本字符串中有多少个令牌,无需进行API调用,请使用OpenAI的tiktoken Python库。示例代码可以在OpenAI Cookbook关于如何使用tiktoken计算令牌的指南中找到。

传递给API的每条消息都会消耗内容、角色和其他字段中的令牌数量,外加一些用于幕后格式化的额外令牌。这在未来可能会略有变化。

如果对话的令牌太多,无法满足模型的最大限制(例如,gpt-3.5-turbo的令牌超过4096个),您必须截断、省略或以其他方式缩小文本,直到它适合。请注意,如果消息从消息输入中删除,模型对内容的真正意义可能理解不准确。

另请注意,长时间的对话更有可能收到不完整的回复。例如,一个长达4090个令牌的gpt-3.5-turbo对话将在仅6个令牌后被切断回复。

指导聊天模型

指导模型的最佳实践可能会随着版本有所变化。以下建议适用于gpt-3.5-turbo-0301,可能不适用于未来的模型。

许多对话从系统消息开始,以温和地指导助理。例如,以下是用于ChatGPT的系统消息之一:

您是ChatGPT,一个由OpenAI训练的大型语言模型。尽可能简洁地回答。知识截止:{knowledge_cutoff}当前日期:{current_date}

一般来说,gpt-3.5-turbo-0301没有非常关注系统消息,因此重要指令通常最好放在用户消息中。

如果模型没有生成您想要的输出,请随意迭代并尝试潜在的改进。你可以尝试以下方法:

  • 让你的指示更明确
  • 指定您想要答案的格式
  • 在确定答案之前,让模型一步一步地思考或辩论利弊

有关更及时的工程想法,请阅读OpenAI Cookbook技术指南,以提高可靠性

除了系统消息,temperature和max tokens是影响聊天模型输出的许多选项中的两个。对于温度,像0.8这样的较高值将使输出更加随机,而像0.2这样的较低值将使其更加集中和确定性。在最大令牌的情况下,如果您想将响应限制在一定长度,最大令牌可以设置为任意数字。但是,如果您将最大令牌值设置为5,这可能会导致问题,因为输出将被切断,结果对用户来说没有意义。

gpt-3.5-turbo】 vs 【text-davinci-003】

由于gpt-3.5-turbo的性能与text-davinci-003相似,但每个令牌的价格仅有text-davinci-003的10%,因此建议大多数开发者使用gpt-3.5-turbo。

如果您使用text-davinci-003将英语翻译成法语:

Translate the following English text to French: "{text}"

等效的gpt-3.5-turbo聊天对话:

[
  {"role": "system", "content": "You are a helpful assistant that translates English to French."},
  {"role": "user", "content": ’Translate the following English text to French: "{text}"’}
]

或者甚至只是用户消息:

[
  {"role": "user", "content": ’Translate the following English text to French: "{text}"’}
]


  业务实施流程

需求调研 →

团队组建和动员 →

数据初始化 →

调试完善 →

解决方案和选型 →

硬件网络部署 →

系统部署试运行 →

系统正式上线 →

合作协议

系统开发/整合

制作文档和员工培训

售后服务

马上咨询: 如果您有业务方面的问题或者需求,欢迎您咨询!我们带来的不仅仅是技术,还有行业经验积累。
QQ: 39764417/308460098     Phone: 13 9800 1 9844 / 135 6887 9550     联系人:石先生/雷先生