Merge branch 'refactor/backend-architecture' into development
This commit is contained in:
21
api/app/adapters/embedding/openai.py
Normal file
21
api/app/adapters/embedding/openai.py
Normal file
@@ -0,0 +1,21 @@
|
||||
"""OpenAI embedding adapter — implements EmbeddingProvider port."""
|
||||
|
||||
from openai import AsyncOpenAI
|
||||
|
||||
|
||||
class OpenAIEmbeddingProvider:
|
||||
def __init__(self, api_key: str, model: str = "text-embedding-3-small"):
|
||||
self._client = AsyncOpenAI(api_key=api_key) if api_key else None
|
||||
self._model = model
|
||||
|
||||
async def embed_text(self, text: str) -> list[float]:
|
||||
if not self._client:
|
||||
return []
|
||||
resp = await self._client.embeddings.create(input=[text], model=self._model)
|
||||
return resp.data[0].embedding
|
||||
|
||||
async def embed_texts(self, texts: list[str]) -> list[list[float]]:
|
||||
if not self._client or not texts:
|
||||
return []
|
||||
resp = await self._client.embeddings.create(input=texts, model=self._model)
|
||||
return [item.embedding for item in sorted(resp.data, key=lambda d: d.index)]
|
||||
Reference in New Issue
Block a user