如何管理Chat Completions中的令牌

在使用Chat Completions API时,了解和管理令牌是非常重要的。语言模型读取和生成文本时,以令牌为单位进行操作。每个令牌可以是一个字符或一个词,不同语言中的令牌长度可能不同。本教程将向您介绍令牌的概念以及如何管理它们,以影响API调用的成本、执行时间和可行性。

背景故事

假设您正在开发一个自动化文本生成工具,该工具需要使用Chat Completions API来生成文本响应用户的需求。在这个过程中,您发现API调用的成本和执行时间与令牌的数量相关,但您不确定如何准确地计算和管理令牌。本教程将帮助您解决这个问题,以确保您的应用程序能够高效运行。

令牌的基本概念

令牌是语言模型处理文本的基本单位。在英语中,一个令牌可以是一个字符或一个词,而在其他语言中,令牌的长度可能会有所不同。例如,字符串 "ChatGPT is great!" 被编码成了六个令牌:["Chat", "G", "PT", " is", " great", "!"]。

总令牌数会影响以下方面:

  • API调用的成本,因为您需要按令牌数量付费。
  • API调用的执行时间,因为处理更多的令牌需要更多的时间。
  • API调用是否能够成功执行,因为总令牌数必须在模型的最大限制内(例如,gpt-3.5-turbo的最大限制为4097个令牌)。

请注意,输入和输出的令牌都计入这些数量。例如,如果您的API调用在消息输入中使用了10个令牌,并在消息输出中接收到了20个令牌,您将被计费30个令牌。但是需要注意,对于某些模型,输入和输出中的令牌价格可能不同(请查看定价页面获取更多信息)。

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

计算Chat API调用中的令牌

由于Chat Completions API的消息格式,计算每次对话中使用的令牌数量可能相对复杂。为了准确计算,您可以使用OpenAI的tiktoken Python库,该库允许您在不进行API调用的情况下查看文本字符串中包含的令牌数量。在OpenAI Cookbook的"如何使用tiktoken计算令牌数"指南中,您可以找到示例代码。

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

如果对话中的令牌数超过了模型的最大限制(例如,对于gpt-3.5-turbo超过4097个令牌),您将需要截断、省略或以其他方式缩小文本,以使其适应模型的限制。但请注意,如果从消息输入中删除了一条消息,模型将失去对该消息的所有知识。

需要注意的是,非常长的对话更有可能收到不完整的回复。例如,一个包含4090个令牌的gpt-3.5-turbo对话将在仅6个令牌后被截断。

参数详细信息

频率和存在惩罚

Chat Completions API和Legacy Completions API中的频率和存在惩罚可用于减少重复令牌序列的生成概率。它们通过直接修改逻辑(未归一化的对数概率)来实现。

mu[j] -> mu[j] - c[j] alpha_frequency - float(c[j] > 0) alpha_presence

其中:

  • mu[j] 是第j个令牌的逻辑。
  • c[j] 表示在当前位置之前该令牌被采样的次数。
  • float(c[j] > 0) 如果c[j] > 0则为1,否则为0。
  • alpha_frequency 是频率惩罚系数。
  • alpha_presence 是存在惩罚系数。

正常情况下,惩罚系数的合理值为0.1到1,如果目标只是稍微减少重复样本的生成概率。如果目标是强烈抑制重复,那么可以将系数增加到2,但这可能会显著降低样本的质量。也可以使用负值来增加重复的可能性。

结束语

了解和管理令牌在使用Chat Completions API时非常重要。无论您是开发自动文本生成工具还是其他类型的应用程序,令牌的数量都会影响成本、执行时间和可行性。希望本教程对您有所帮助,以便您更好地控制和优化API调用。


了解和管理令牌数量对于使用Chat Completions API非常重要。通过掌握令牌的概念和计算方法,您可以更好地控制API调用的成本、执行时间和可行性。在开发文本生成应用程序时,请务必考虑令牌的影响,并在需要时采取适当的措施来优化和管理令牌数量。

声明:本站所有文章,如无特殊说明或标注,均为本站(王大神)原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
指数词

如何实现可复现的Chat Completions输出

2023-11-25 8:34:38

指数词

创建高效的AI教程:使用OpenAI的Completions API

2023-11-25 8:38:09

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索