/
temaptz
/
building-material-scout
Обзор
Документация
Войти
/
temaptz
/
building-material-scout
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/vector.py
45 строк
1 KB
Artem Urvanov
dev
07 авг 2026, 15:05
07 авг 2026, 15:05
06e869b
Код
Авторство
О чём код?
import os import tiktoken from openai import OpenAI from logger import get_logger from dotenv import load_dotenv load_dotenv() EMBEDDING_MODEL_NAME = 'openai/text-embedding-3-small' EMBEDDING_VECTOR_SIZE = 1536 EMBEDDING_MAX_TOKENS = 8000 logger = get_logger(__name__) openai_client = OpenAI( base_url=os.getenv('OPENAI_BASE_URL'), api_key=os.getenv('OPENAI_API_KEY'), ) def get_vector(text: str) -> list[float] or None: try: return openai_client.embeddings.create( model=EMBEDDING_MODEL_NAME, input=truncate_string_by_tokens(text=text), ).data[0].embedding except Exception as e: logger.error(f'Failed to get vector: {e}') return None def truncate_string_by_tokens(text: str) -> str: try: encoding = tiktoken.encoding_for_model(EMBEDDING_MODEL_NAME.split('/')[-1]) tokens = encoding.encode(text) max_tokens = EMBEDDING_MAX_TOKENS if len(tokens) > max_tokens: tokens = tokens[:max_tokens] return encoding.decode(tokens) except Exception as e: logger.error(f'Failed to truncate string: {e}') return text return text