mirror of
https://github.com/langgenius/dify-plugin-sdks.git
synced 2026-07-22 10:25:23 -04:00
5858fe715e
Signed-off-by: -LAN- <laipz8200@outlook.com>
33 lines
950 B
Python
33 lines
950 B
Python
from os.path import abspath, dirname, join
|
|
from threading import Lock
|
|
|
|
from transformers import AutoTokenizer
|
|
|
|
|
|
class JinaTokenizer:
|
|
_tokenizer = None
|
|
_lock = Lock()
|
|
|
|
@classmethod
|
|
def _get_tokenizer(cls):
|
|
if cls._tokenizer is None:
|
|
with cls._lock:
|
|
if cls._tokenizer is None:
|
|
base_path = abspath(__file__)
|
|
gpt2_tokenizer_path = join(dirname(base_path), "tokenizer")
|
|
cls._tokenizer = AutoTokenizer.from_pretrained(gpt2_tokenizer_path)
|
|
return cls._tokenizer
|
|
|
|
@classmethod
|
|
def _get_num_tokens_by_jina_base(cls, text: str) -> int:
|
|
"""
|
|
use jina tokenizer to get num tokens
|
|
"""
|
|
tokenizer = cls._get_tokenizer()
|
|
tokens = tokenizer.encode(text)
|
|
return len(tokens)
|
|
|
|
@classmethod
|
|
def get_num_tokens(cls, text: str) -> int:
|
|
return cls._get_num_tokens_by_jina_base(text)
|