0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

生成AIに関する記事を書こう!
Qiita Engineer Festa20242024年7月17日まで開催中!

オフラインでのtiktokenの使用方法:キャッシュ設定でSSLエラーを回避する方法

Last updated at Posted at 2024-07-16

はじめに

LangChainやChromaDBなどを会社のプロキシ環境下やオフライン環境でなどで使おうとすると、以下のようなSSLエラーが発生することがあります。

requests.exceptions.SSLError: HTTPSConnectionPool(host='openaipublic.blob.core.windows.net', port=443): Max retries exceeded with url: /encodings/cl100k_base.tiktoken (Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1112)'))

これは、内部的にtiktokenを使用する際の通信が原因です。オフライン環境やプロキシ環境下で許可されていない場合、エラーが発生します。

このような場合、必要なファイルを事前にダウンロードし、ローカルキャッシュとして設定することでエラーを回避することができます。

本記事はStackOverflowのこちらの内容を参考に記載しています。

エンコーダーのBlob URLからファイルのダウンロード

エンコーディング(テキストをトークンに変更するときのルールのようなもの)に使用されるファイルをダウンロードします。
主な種類は以下です。

モデル エンコーディング
gpt-3.5-turbo ~ gpt-4-turbo with vision cl100k_base
gpt-4o o200k_base

こちらのファイルから該当するエンコーディングのファイルのダウンロード先を確認します。
ここではcl100k_baseのファイルをダウンロードします。

https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken

上記のURLにアクセスするとcl100k_base.tiktokenファイルがダウンロードされます。

ファイル名の変更

ダウンロードしたファイル名をリンクのパスのハッシュ値に変更する必要があります。
以下のコードを実行すると9b5ad71b2ce5302211f9c61530b329a4922fc6a4が得られるため、この文字列にファイル名を変更します。

import hashlib

blobpath = "https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken"
cache_key = hashlib.sha1(blobpath.encode()).hexdigest()
print(cache_key)

tiktokenキャッシュの設定

TIKTOKEN_CACHE_DIRの環境変数に上記のファイルを置いたディレクトリを指定します。

import os

os.environ["TIKTOKEN_CACHE_DIR"] = <上記ファイルを置いたディレクトリ>

tiktokenの使用

import tiktoken

encoding = tiktoken.get_encoding("cl100k_base")
tokens = encoding.encode("Hello, world")
print(len(tokens))

これで、tiktokenをオフラインで使用できるようになります。

また、TIKTOKEN_CACHE_DIRを設定しておくことでtiktokenを内部的に使用するChromaDB等であっても冒頭のエラーを回避して使用することができます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?