9x25dillon's picture
Create adapters/openai_adapter.py
0dfd912 verified
raw
history blame contribute delete
918 Bytes
# adapters/openai_adapter.py
import os, hashlib
from typing import List
from .base import BaseModelAdapter
class OpenAIAdapter(BaseModelAdapter):
"""
Placeholder that returns echo'd text and deterministic pseudo-embeddings.
Swap with real OpenAI calls later.
"""
def __init__(self, model_text="gpt-4o-mini", model_embed="text-embedding-3-small"):
self.model_text = model_text
self.model_embed = model_embed
self.dim = int(os.getenv("EMBED_DIM", "384"))
def generate(self, prompt: str) -> str:
return f"[{self.model_text}] {prompt.strip()}"
def embed_text(self, text: str) -> List[float]:
import numpy as np
h = hashlib.sha256((self.model_embed + "||" + text).encode()).digest()
seed = int.from_bytes(h[:8], "little")
rng = np.random.default_rng(seed)
return rng.standard_normal(self.dim).astype("float32").tolist()