Initial commit

This commit is contained in:
belviskhoremk
2026-02-22 21:59:37 +00:00
commit 5bd496d355
27 changed files with 4172 additions and 0 deletions

View File

@@ -0,0 +1,54 @@
from openai import OpenAI
from app.config import settings
from typing import List
import logging
logger = logging.getLogger(__name__)
_openai_client = None
def get_openai_client() -> OpenAI:
global _openai_client
if _openai_client is None:
_openai_client = OpenAI(api_key=settings.openai_api_key)
return _openai_client
class EmbeddingService:
def __init__(self):
self.model = settings.embedding_model
def embed_text(self, text: str) -> List[float]:
"""Generate embedding for a single text"""
client = get_openai_client()
try:
response = client.embeddings.create(
model=self.model,
input=text,
)
return response.data[0].embedding
except Exception as e:
logger.error(f"Embedding error: {e}")
raise
def embed_batch(self, texts: List[str]) -> List[List[float]]:
"""Generate embeddings for multiple texts"""
client = get_openai_client()
try:
# Clean texts
cleaned = [t.replace("\n", " ").strip() for t in texts if t.strip()]
if not cleaned:
return []
response = client.embeddings.create(
model=self.model,
input=cleaned,
)
return [item.embedding for item in response.data]
except Exception as e:
logger.error(f"Batch embedding error: {e}")
raise
embedding_service = EmbeddingService()