Want to Become a Sponsor? Contact Us Now!🎉

langchain-tutorials
使用 Tiktoken for OpenAI 模型进行主令牌计数

使用 Tiktoken for OpenAI 模型进行主令牌计数

Published on

Tiktoken:简化令牌计数

文章摘要:

  • Tiktoken 是 OpenAI 开发的开源分词器,可将文本字符串分割为令牌,非常适用于令牌计数或估计 API 调用成本等任务。
  • 它支持三种编码:cl100k_base、p50k_base 和 r50k_base,您可以使用 tiktoken.encoding_for_model() 函数检索这些编码。
  • Tiktoken 可用于包括 Python、.NET/C#、Java、Golang 和 Rust 在内的多种编程语言。
Anakin AI - The Ultimate No-Code AI App Builder

您是否曾经想过文本字符串中有多少个令牌?或者您可能对估算使用 OpenAI API 完成特定任务的成本感兴趣。准确计数令牌对于这些目的至关重要,这就是 Tiktoken 的作用。这个由 OpenAI 开发的开源分词器可以轻松地将文本字符串分割为令牌,为各种应用提供了有用的工具。

介绍 Tiktoken

Tiktoken 是一个强大的开源分词器,可以用于计数文本字符串中的令牌或估算 OpenAI API 调用的成本。令牌是构成文本的单个单位,可以是单个字符或整个单词。通过了解令牌数量,您可以更好地管理使用情况并优化与 OpenAI 模型的交互。

Tiktoken 支持的编码

Tiktoken 支持 OpenAI 模型使用的三种编码:cl100k_base、p50k_base 和 r50k_base。这些编码确定了分词器如何将输入文本分割为令牌。根据不同的编码,单词可能会以不同的方式拆分,空格可能会以不同的方式分组,非英文字符可能会以不同的方式处理。

要确定特定 OpenAI 模型的编码,您可以使用 tiktoken.encoding_for_model() 函数,该函数会检索与您要使用的模型相对应的适当编码。

Tiktoken 分词器库

Tiktoken 可用于多种编程语言,无论您偏爱哪种语言,都可以轻松使用。以下是不同编程语言的可用库:

您可以在上面的链接中找到相应的分词器库,以便将 Tiktoken 无缝集成到您偏爱的编程语言中。

使用 Tiktoken 进行分词

在英语中,Tiktoken 通过考虑从单个字符到整个词之间长度变化的令牌来进行分词。空格通常与单词的开头分组。为了可视化分词过程,您可以使用 OpenAI Tokenizer 网页应用程序或 Tiktokenizer 网页应用程序,在其中输入文本并观察它如何分割为令牌。

使用 Tiktoken,您还可以直接在代码中分词字符串。让我们看一下如何在 Python 中安装和导入 Tiktoken。

安装和导入

要在 Python 中安装 Tiktoken,可以使用以下命令:

pip install tiktoken

安装完成后,您可以使用以下导入语句在 Python 代码中导入 tiktoken 库:

import tiktoken

现在我们已经安装并导入了 Tiktoken,接下来让我们学习如何加载编码。

加载 Tiktoken 中的编码

在对文本字符串进行分词之前,您需要加载适当的编码。可以使用 Tiktoken 的 get_encoding() 函数来实现这一点。将编码名称(例如 cl100k_base)作为函数的参数。以下是一个示例:

encoding = tiktoken.get_encoding("cl100k_base")

编码加载完毕后,您可以使用它来对文本字符串进行分词。

tiktoken

使用 Tiktoken 将文本转换为令牌

现在我们已经安装了 Tiktoken 并且已经探索了其他分词器,让我们更深入地了解如何使用 Tiktoken 将文本转换为令牌。

要使用 Tiktoken 将文本字符串转换为令牌,我们需要按照以下步骤进行:

  1. 使用 tiktoken.get_encoding() 函数加载所需的编码名到 Tiktoken 中。这一步骤确保分词过程与我们打算使用的特定 OpenAI 模型保持一致。

    import tiktoken
     
    encoding_name = "cl100k_base"  # 或者 "p50k_base" 或者 "r50k_base"
    encoding = tiktoken.get_encoding(encoding_name)
  2. 使用加载的编码初始化 Tiktoken 分词器。

    tokenizer = tiktoken.Tiktoken(encoding)
  3. 将文本字符串传递给 Tiktoken 分词器的 tokenize() 方法,将其转换为令牌。

    text = "这是一个示例句子。"
    tokens = tokenizer.tokenize(text)
  4. tokenize() 方法返回一个令牌列表。我们可以打印出令牌以查看输出。

    print(tokens)

    输出:

    ['这', '是', '一个', '示例', '句子', '。']

    请注意,令牌之间用空格分隔,并且标点符号被视为单独的令牌。 通过按照以下步骤,您可以使用Tiktoken轻松将任何文本字符串转换为标记。在使用OpenAI模型时,这可能特别有用,因为它有助于估计使用的标记数,并可用于估计API调用的成本。

结论

在本文中,我们探讨了由OpenAI开发的开源分词器Tiktoken的用途。我们讨论了Tiktoken在确定文本中标记数量和估计OpenAI API调用成本方面的实用性。我们还了解了Tiktoken支持的编码方式,并了解了如何获取特定OpenAI模型的编码。此外,我们还发现了Tiktoken在各种编程语言中的可用性,并探讨了使用Tiktoken对字符串进行标记化的过程。最后,我们学习了如何安装Tiktoken,导入库,加载编码,并使用Tiktoken将文本转换为标记。

Tiktoken是一个强大的工具,可以极大地帮助使用OpenAI模型,并优化标记的使用。通过利用Tiktoken的功能,开发人员可以更好地管理与OpenAI API调用相关的标记限制和成本。

Anakin AI - The Ultimate No-Code AI App Builder