openai.py 1.3 KB

123456789101112131415161718192021222324252627282930313233
  1. import os
  2. from typing import Optional
  3. from langchain.embeddings import OpenAIEmbeddings
  4. from embedchain.config import BaseEmbedderConfig
  5. from embedchain.embedder.base import BaseEmbedder
  6. from embedchain.models import VectorDimensions
  7. from .chroma_embeddings import OpenAIEmbeddingFunction
  8. class OpenAIEmbedder(BaseEmbedder):
  9. def __init__(self, config: Optional[BaseEmbedderConfig] = None):
  10. super().__init__(config=config)
  11. if self.config.model is None:
  12. self.config.model = "text-embedding-ada-002"
  13. if self.config.deployment_name:
  14. embeddings = OpenAIEmbeddings(deployment=self.config.deployment_name)
  15. embedding_fn = BaseEmbedder._langchain_default_concept(embeddings)
  16. else:
  17. if os.getenv("OPENAI_API_KEY") is None and os.getenv("OPENAI_ORGANIZATION") is None:
  18. raise ValueError(
  19. "OPENAI_API_KEY or OPENAI_ORGANIZATION environment variables not provided"
  20. ) # noqa:E501
  21. embedding_fn = OpenAIEmbeddingFunction(
  22. api_key=os.getenv("OPENAI_API_KEY"),
  23. organization_id=os.getenv("OPENAI_ORGANIZATION"),
  24. model_name=self.config.model,
  25. )
  26. self.set_embedding_fn(embedding_fn=embedding_fn)
  27. self.set_vector_dimension(vector_dimension=VectorDimensions.OPENAI.value)