SiS*_*iSi 4 python tokenize gpt-3
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)
Run Code Online (Sandbox Code Playgroud)
这一直显示名为 requests.exceptions.SSLError 的错误。由 SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败:证书链中的自签名证书 (_ssl.c:1002)')) ... 引起。
我想运行这段代码来查看令牌的数量。但正如我之前提到的,它一直显示错误。我缺少什么代码?
小智 16
截至撰写本文时应有效
9b5ad71b2ce5302211f9c61530b329a4922fc6a4import 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"))
Run Code Online (Sandbox Code Playgroud)
今天也刚刚遇到这个问题。不完全相同的错误,但离线运行的解决方案应该是相同的。我们将下载必要的文件,然后“欺骗”tiktoken 对其进行缓存。
如果您有一台无法访问互联网的远程计算机和一台可以访问互联网的本地计算机,则此方法有效。
我在下面概述了一个通用版本,但如果您有更新版本的 tiktoken 并且正在使用分词器,您可以跳到 tl;dr cl100k_base。
首先,让我们从远程计算机上的源获取标记生成器 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'
Run Code Online (Sandbox Code Playgroud)
截至撰写本文时, cl100k_base应该为https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken
现在,导航到本地计算机上的 blob URL 来下载它。
注意:对于旧版本的 tiktoken,步骤 1 会为您生成一个 Azure blob URI(如az://openaipublic/encodings/cl100k_base.tiktoken);如果是这种情况,请前往此处的最新源并获取仅用于下载目的的非天蓝色链接。
现在,将文件传输到远程计算机的新文件夹中。跟踪 get_encoding 函数进一步揭示了对tiktoken.load.read_file_cached()指示文件需要重命名的调用。要获取文件的名称,请运行以下代码(从源代码中提取):
import hashlib
blobpath = "your_blob_url_here"
cache_key = hashlib.sha1(blobpath.encode()).hexdigest()
print(cache_key)
Run Code Online (Sandbox Code Playgroud)
注意: blobpath是在步骤 1 中发现的 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))
Run Code Online (Sandbox Code Playgroud)
注意:这不是tiktoken文件的完整路径,只是包含该文件的文件夹的路径
每次需要 tiktoken 时都需要运行此代码片段。
恭喜,现在您可以使用tiktoken了
encoding = tiktoken.get_encoding("cl100k_base")
encoding.encode("Hello, world")
Run Code Online (Sandbox Code Playgroud)
我在 Docker 容器中使用它,因此当通过 CI/CD 构建映像时我会缓存该文件,如下所示:
FROM python:3.10-slim
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Cache the tiktoken encoding file
RUN python -c "import tiktoken; tiktoken.encoding_for_model('gpt-3.5-turbo')"
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10086 次 |
| 最近记录: |