首页 > 编程语言 >Tiktoken Tutorial: OpenAI's Python Library for Tokenizing Text

Tiktoken Tutorial: OpenAI's Python Library for Tokenizing Text

时间:2024-12-23 21:44:49浏览次数:3  
标签:tiktoken Python Text Tiktoken tokens token OpenAI 文本

tiktoken

https://github.com/openai/tiktoken

tiktoken is a fast BPE tokeniser for use with OpenAI's models.

tiktoken

tiktoken is a fast BPE tokeniser for use with OpenAI's models.

import tiktoken
enc = tiktoken.get_encoding("o200k_base")
assert enc.decode(enc.encode("hello world")) == "hello world"

# To get the tokeniser corresponding to a specific model in the OpenAI API:
enc = tiktoken.encoding_for_model("gpt-4o")

 

 

Tiktoken Tutorial: OpenAI's Python Library for Tokenizing Text

https://www.datacamp.com/tutorial/tiktoken-library-python

Practical Use Cases and Tips

Outside of encoding and decoding, there are two other use cases I can think of.

Cost estimation and management

Knowing the token count before sending a request to the OpenAI API can help you manage costs effectively. Since OpenAI's billing is based on the number of tokens processed, pre-tokenizing your text allows you to estimate the cost of your API usage. Here's how you can count the tokens in your text using Tiktoken:


tokens = encoding.encode(text) print(len(tokens))
Powered By 

We simply see how many tokens we got by checking the length of the array. By knowing the number of tokens in advance, you can decide whether to shorten the text or adjust your usage to stay within budget.

You can read more about this approach in this tutorial on Estimating The Cost of GPT Using The tiktoken Library in Python.

Input length validation

When using OpenAI models from the API you are constrained by the maximum number of tokens for inputs and outputs. Exceeding these limits can result in errors or truncated outputs. Using Tiktoken, you can validate the input length and ensure it complies with the token limits.

 

https://zhuanlan.zhihu.com/p/629776230

tiktoken是OpenAI开源的一个快速分词工具。它将一个文本字符串(例如“tiktoken很棒!”)和一个编码(例如“cl100k_base”)作为输入,然后将字符串拆分为标记列表(例如["t","ik","token"," is"," great","!"])。

将文本字符串拆分成tokens是有价值的,因为GPT模型使用tokens表示文本。了解文本字符串中有多少tokens可以告诉我们:

  1. 该字符串是否太长以至于文本模型无法处理;
  2. OpenAI API调用的费用(因为使用费用按token计算)。

 

https://www.qinglite.cn/doc/7433649a6373af6a8

 

https://juejin.cn/post/7390583568207822867

一、tiktoken简介

tiktoken是由OpenAI开发的一个用于文本处理的Python库。它的主要功能是将文本编码为数字序列(称为"tokens"),或将数字序列解码为文本。这个过程被称为"tokenization"(分词)。

这个库的名字"tiktoken"就是"token"和"tiktok"(滴答声)的组合,暗示了将文本切分为一个个离散token的过程,就像时钟的滴答声一样,将时间切分为离散的秒数。

二、为什么需要tiktoken?

你可能会问,为什么我们需要将文本编码为数字?这是因为机器学习模型,特别是自然语言处理(NLP)模型,只能处理数字,不能直接处理原始的文本。

因此,在将文本输入到NLP模型之前,我们需要先将其转换为数字序列。这就是tokenization的过程。而tiktoken库就是为这个过程而设计的。

三、tiktoken的特点

相比其他的tokenization库(如NLTK、spaCy等),tiktoken有以下几个特点:

  1. 它是专门为OpenAI的语言模型(如GPT系列)设计的。这意味着它使用的编码方式与这些模型的训练数据一致,从而可以最大限度地发挥模型的性能。

  2. 它支持多种编码方式,包括字节对编码(byte-pair encoding, BPE)、字词编码(word-level encoding)等。不同的编码方式适用于不同的场景。

  3. 它的代码简洁且快速。tiktoken是用Rust语言编写的,并提供了Python绑定,因此兼具了Rust的速度和Python的易用性。


作者:AIHE
链接:https://juejin.cn/post/7390583568207822867
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

 

标签:tiktoken,Python,Text,Tiktoken,tokens,token,OpenAI,文本
From: https://www.cnblogs.com/lightsong/p/18625073

相关文章

  • 【python编程】Python的site钩子机制
    Site简介我们知道:Pythonimport时会首先寻找sys.path中列出的路径,类似下面:sys.path['','/usr/local/lib/python36.zip','/usr/local/lib/python3.6','/usr/local/lib/python3.6/lib-dynload','/usr/local/lib/python3.6/site-packages&#......
  • Python面向对象中 `self` 与 `cls` 的区别及用法解析:中英双语
    Python中self与cls的区别及用法解析在Python面向对象编程中,self和cls是两个常见的关键字,它们分别用于实例方法和类方法。本文将详细介绍它们的作用、区别及使用场景,并通过代码示例帮助大家理解如何调用这些方法。1.什么是self?1.1定义与作用self是实例方......
  • Python 装饰器详解:`@staticmethod` 与 `@classmethod` 的区别与用法:中英双语
    缘由:今天在看Huggingface的源码的时候,https://github.com/huggingface/transformers/blob/v4.47.1/src/transformers/models/auto/configuration_auto.py#L897对几个装饰器有所疑问,学习一下。Python装饰器详解:@staticmethod与@classmethod的区别与用法在Python中......
  • python网络编程之socketio
    服务端: importsocketioclassChatServer:def__init__(self):#创建Socket.IO服务器实例self.sio=socketio.Server(cors_allowed_origins='*')self.app=socketio.WSGIApp(self.sio)#注册事件处理self.sio.on('......
  • python网络编程之sse
    服务端: fromfastapiimportFastAPIfromfastapi.responsesimportStreamingResponsefromfastapi.middleware.corsimportCORSMiddlewareimporttimeapp=FastAPI()#允许所有来源的跨域请求app.add_middleware(CORSMiddleware,allow_origins=["*"],......
  • python网络编程之websocket
    服务端: importasyncioimportwebsockets#保存已连接的客户端列表connected_clients=set()asyncdefhandle_websocket(websocket):#将新的客户端添加到已连接客户端列表remote_address=websocket.remote_addressconnected_clients.add(websocke......
  • python网络编程之tcp
    服务端: importsocketimportstructsk=socket.socket()sk.bind(('127.0.0.1',9501))#申请操作系统的资源sk.listen()whileTrue:#print(f'sk:{sk}')#conn里存储的是一个客户端和服务端的连接信息conn,adder=sk.accept()#能够和多个客户端......
  • python网络编程之udp
    服务端: importsocketsk=socket.socket(type=socket.SOCK_DGRAM)#表示一个udp协议sk.bind(('127.0.0.1',9504))#服务端不能先发送消息,因为服务端不知道客户端的ipwhileTrue:msg,addr=sk.recvfrom(1024)print(f"接收到客户端数据:{msg.decode('utf-8......
  • python网络编程之http longpull
    服务端:fromflaskimportFlask,request,jsonifyimporttimeapp=Flask(__name__)@app.route('/stream',methods=['GET'])defpoll():#假设这里有一个方法来检查是否有新数据#为了示例,我们简单地模拟等待数据time.sleep(5)#模拟处理时间或等待......
  • Python中指数概率分布函数的绘图详解
    在数据科学和统计学中,指数分布是一种应用广泛的连续概率分布,通常用于建模独立随机事件发生的时间间隔。通过Python,我们可以方便地计算和绘制指数分布的概率密度函数(PDF)。本文将详细介绍指数分布的原理、应用场景,并提供详细的代码示例,展示如何在Python中绘制指数分布的概率密度函数......