Team Ai
Apppublic

afulara/PythonicRAG-FastAPI-React

sourceHugging Faceapache-2.0updated 1y agoView on Hugging Face
0likes
embedding.py60 linesDownload Raw Back to openai_utils
1from dotenv import load_dotenv2from openai import AsyncOpenAI, OpenAI3import openai4from typing import List5import os6import asyncio7 8 9class EmbeddingModel:10    def __init__(self, embeddings_model_name: str = "text-embedding-3-small"):11        load_dotenv()12        self.openai_api_key = os.getenv("OPENAI_API_KEY")13        self.async_client = AsyncOpenAI()14        self.client = OpenAI()15 16        if self.openai_api_key is None:17            raise ValueError(18                "OPENAI_API_KEY environment variable is not set. Please set it to your OpenAI API key."19            )20        openai.api_key = self.openai_api_key21        self.embeddings_model_name = embeddings_model_name22 23    async def async_get_embeddings(self, list_of_text: List[str]) -> List[List[float]]:24        embedding_response = await self.async_client.embeddings.create(25            input=list_of_text, model=self.embeddings_model_name26        )27 28        return [embeddings.embedding for embeddings in embedding_response.data]29 30    async def async_get_embedding(self, text: str) -> List[float]:31        embedding = await self.async_client.embeddings.create(32            input=text, model=self.embeddings_model_name33        )34 35        return embedding.data[0].embedding36 37    def get_embeddings(self, list_of_text: List[str]) -> List[List[float]]:38        embedding_response = self.client.embeddings.create(39            input=list_of_text, model=self.embeddings_model_name40        )41 42        return [embeddings.embedding for embeddings in embedding_response.data]43 44    def get_embedding(self, text: str) -> List[float]:45        embedding = self.client.embeddings.create(46            input=text, model=self.embeddings_model_name47        )48 49        return embedding.data[0].embedding50 51 52if __name__ == "__main__":53    embedding_model = EmbeddingModel()54    print(asyncio.run(embedding_model.async_get_embedding("Hello, world!")))55    print(56        asyncio.run(57            embedding_model.async_get_embeddings(["Hello, world!", "Goodbye, world!"])58        )59    )60