import tiktoken
tokenizer = tiktoken.get_encoding("cl100k_base") tokenizer = tiktoken.encoding_for_model("gpt-3.5-turbo")
text = "Hello, nice to meet you"
tokenizer.encode(text)
这一直显示名为 requests.exceptions.SSLError 的错误。由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1002)')) ... 像这样。
我想运行这段代码来查看令牌的数量。但是正如我之前提到的,它一直显示错误。我缺少什么代码?
今天也遇到这个问题。不完全相同的错误,但离线运行此解决方案应该是相同的。我们将下载必要的文件,然后“欺骗”tiktoken 来缓存它。
如果您有一台无法访问互联网的远程计算机和一台可以访问互联网的本地计算机,则此方法有效。
我在下面概述了一个通用版本,但是如果您有更新版本的 tiktoken 并且正在使用
cl100k_base
分词器,您可以跳到 tl;dr。
首先,让我们从远程计算机上的源中获取分词器 blob URL。如果我们跟踪
get_encoding
函数,我们会发现它调用了 tiktoken_ext.openai_public
中的一个函数,该函数具有每个编码器的 blob URI。识别正确的函数,然后打印源代码
import tiktoken_ext.openai_public
import inspect
print(dir(tiktoken_ext.openai_public))
# The encoder we want is cl100k_base, we see this as a possible function
print(inspect.getsource(tiktoken_ext.openai_public.cl100k_base))
# The URL should be in the 'load_tiktoken_bpe function call'
截至撰写本文时,它应该是 https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken for cl100k_base
现在,导航到本地计算机上的 blob URL 以下载它。
注意:对于旧版本的 tiktoken,第 1 步会为您生成一个 Azure blob URI(如
az://openaipublic/encodings/cl100k_base.tiktoken
);如果是这种情况,请前往最新来源 here 并获取仅供下载的非 azure 链接。
现在,将文件传输到远程计算机的新文件夹中。跟踪 get_encoding 函数进一步揭示了对
tiktoken.load.read_file_cached()
的调用,这表明文件需要重命名。要获取文件的名称,请运行以下代码(从源代码中提取):
import hashlib
blobpath = "your_blob_url_here"
cache_key = hashlib.sha1(blobpath.encode()).hexdigest()
print(cache_key)
注意:
blobpath
是第一步发现的blob URL/URI;如果第 1 步有 az://
路径,您仍在使用该路径。
将远程文件重命名为 cache_key
read_file_cached
函数然后检查缓存路径的环境变量并从那里读取,所以让我们设置它:
import os
tiktoken_cache_dir = "path_to_folder_containing_tiktoken_file"
os.environ["TIKTOKEN_CACHE_DIR"] = tiktoken_cache_dir
# validate
assert os.path.exists(os.path.join(tiktoken_cache_dir, cache_key))
注意:这不是tiktoken文件的完整路径,只是包含该文件的文件夹的路径
每次需要tiktoken时都需要运行此代码片段。
恭喜,你可以使用抖音了
encoding = tiktoken.get_encoding("cl100k_base")
encoding.encode("Hello, world")
在撰写本文时应该有效
9b5ad71b2ce5302211f9c61530b329a4922fc6a4
import os
tiktoken_cache_dir = "path_to_tiktoken_cache_folder"
os.environ["TIKTOKEN_CACHE_DIR"] = tiktoken_cache_dir
# validate
assert os.path.exists(os.path.join(tiktoken_cache_dir,"9b5ad71b2ce5302211f9c61530b329a4922fc6a4"))