OpenAI的子词标记化神器--tiktoken 以及 .NET 支持库SharpToken

openai,标记,神器,tiktoken,以及,net,支持,sharptoken · 浏览次数 : 600

小编点评

**Tokenize 过程** 1. **Tokenizer 库**将文本数据转换为一个整数组成的向量。 2. **OpenAI 的  Tiktoken  **是更高级的 Tokenizer ,拥有更高的编码效率、更大的词汇表和计算性能。 3. **Byte Pair Encoder (BPE)**是一种子词处理方法,用于压缩文本数据。 4. **BPE**首先由 Philip Gage 在 1994 年提出,用于压缩文本数据。 5. **CountMessagesTokens 函数**计算给定的消息的 token数量。 6. **函数参数**包括模型名称和消息字符串。 7. **BPE**用于编码消息,并根据模型名称计算 token数量。 8. **返回值**表示消息的 token数量。 **总结** 生成内容时,需要使用 Tokenize 库进行文本转换,并根据模型名称调整 token数量。

正文

经过 Tokenize 之后,一串文本就变成了一串整数组成的向量。OpenAI 的 Tiktoken 是 更高级的 Tokenizer , 编码效率更高、支持更大的词汇表、计算性能也更高。 OpenAI在其官方GitHub上公开了一个开源Python库:tiktoken,这个库主要是用力做字节编码对的。 字节编码对(Byte Pair Encoder,BPE)是一种子词处理的方法。其主要的目的是为了压缩文本数据。主要是将数据中最常连续出现的字节(bytes)替换成数据中没有出现的字节的方法。该算法首先由Philip Gage在1994年提出。

下图是tiktoken中公开的OpenAI所有大模型所使用的词表。

image

可以看到,ChatGPT和GPT-4所使用的是同一个,名为“cl100k_base”的词表。而text-davinci-003和text-davinci-002所使用的是名为”p50k_base“的词表。

image

OpenAI 官方开源了Python版本, .NET社区 移植了https://github.com/dmitry-brazhenko/SharpToken, 它提供了使用基于 GPT 的编码对令牌进行编码和解码的功能。此库是为 .NET 6 和 .NET Standard 2.1 构建的,使其与各种框架兼容。

下面是一个示例函数,用于对传递到 gpt-3.5-turbo-0381 或gpt-4-314 的消息的tokens进行计数。请注意,从消息中计算tokens的确切方式可能会因模型而异。将函数中的计数视为一个估计值:

public int CountMessagesTokens(string Model ,string Messages)
   {
       int tokensPerMessage;
       if (Model.StartsWith("gpt-3.5-turbo"))
       {
           tokensPerMessage = 5;
       }
       else if (Model.StartsWith("gpt-4"))
       {
           tokensPerMessage = 4;
       }
       else
       {
           tokensPerMessage = 5;
       }

      var encoding = GptEncoding.GetEncoding("cl100k_base");
       int totalTokens = 0;
       foreach (var msg in Messages)
       {
           totalTokens += tokensPerMessage;
           totalTokens += encoding.Encode(msg.Content).Count;
       }
       totalTokens += 3;

      return totalTokens;
   }

与OpenAI的子词标记化神器--tiktoken 以及 .NET 支持库SharpToken相似的内容:

OpenAI的子词标记化神器--tiktoken 以及 .NET 支持库SharpToken

经过 Tokenize 之后,一串文本就变成了一串整数组成的向量。OpenAI 的 Tiktoken 是 更高级的 Tokenizer , 编码效率更高、支持更大的词汇表、计算性能也更高。 OpenAI在其官方GitHub上公开了一个开源Python库:tiktoken,这个库主要是用力做字节编码对

OpenAI的离线音频转文本模型 Whisper 的.NET封装项目

whisper介绍 Open AI在2022年9月21日开源了号称其英文语音辨识能力已达到人类水准的Whisper神经网络,且它亦支持其它98种语言的自动语音辨识。 Whisper系统所提供的自动语音辨识(Automatic Speech Recognition,ASR)模型是被训练来运行语音辨识与

基于OpenAI的代码编辑器,有点酷有点强!

最近随着OpenAI的一系列大动作,把软件领域搅的天翻地覆。各行各业各领域,都出现了大量新产品。 开发工具领域首当其冲,各种新工具层出不穷,今天TJ就给大家推荐一个全新的开发工具:Cursor 从官网介绍可以看到,Cursor基于OpenAI实现,继承了最新的GPT-4模型,支持Mac、Window

Yarp项目代理ChatGPT,解决网络无法访问openAI的问题

# 1.创建Yarp项目 目的:通过代理解决网络无法访问openAI的问题 项目源码地址:[https://github.com/raokun/YarpProject](https://github.com/raokun/YarpProject) ## 1.创建.net7 webapi项目 创建一个

[转帖]聊聊Chat GPT-1到GPT-4的发展历程

http://blog.itpub.net/69925873/viewspace-2935360/ OpenAI的Generative Pre-trained Transformer(GPT)模型通过引入非常强大的语言模型,在自然语言处理(NLP)领域引起了巨大震动。这些模型可以执行各种NLP任务,

OpenAI Kubernetes 相关博文读后笔记

一、概述 最近 ChatGPT 和其公司 OpenAI 特别火:ChatGPT 3, ChatGPT 3.5, New Bing, ChatGPT 4... 怀着学习的心态,这几天访问了 OpenAI 的博客, 上边关于 AI 的内容,确实隔行如隔山,完全看不明白。😂 但是翻看过程中,惊喜发现有

基于AIGC的京东购物助手的技术方案设想

随着AIGC的爆火,ChatGPT,GPT-4的发布,我作为一个算法工作者,深感AI发展的迅猛。最近,OpenAI的插件和联网功能陆续向用户公开,我也在第一时间试用了这些最新的功能。在OpenAI的插件市场上,我被一个可以帮助分析食谱,并生成购物清单的功能所吸引。

新版Bing 搜索后台的.NET 技术栈

微软在今天在Redmond 线下举办媒体一场活动,发布了新版的微软必应,在桌面上推出了测试版,移动版也即将推出。微软首席执行官纳德拉称Al-powered搜索为公司自云15年以来最大的事情。 2023年1月初,微软已经在讨论将OpenAI的技术纳入Word、PowerPoint、Outlook和其他

记录一次全栈经验,所有遇到的坑。(文中无需梯子,免费使用chatGPT方法喔)

## 1、先推荐一下自己搭的网站 ### 1.1 网站地址:[chatGPT](https://www.hangyejingling.cn/) ### 1.2 建站原因 为了方便大家在国内使用chatGPT,所以我调研了一下。在国内用腾讯云使用代理访问,gpt3.5API。最后模仿了openAI的官

使用SemanticKernel 进行智能应用开发(2023-10更新)

以OpenAI 的ChatGPT 所掀起的GenAI 快速创新浪潮,其中连接LLM 和 应用之间的桥梁的两大开源项目:LangChain[1]和Semantic Kernel[2] ,在半年前写过一篇文章 LangChain vs Semantic Kernel [3],这半年以来Semantic