| # 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() | |