from abc import ABC, abstractmethod from typing import Optional from langchain_core.embeddings import Embeddings from langchain_community.chat_models.tongyi import BaseChatModel from langchain_community.embeddings import DashScopeEmbeddings from langchain_community.chat_models.tongyi import ChatTongyi from utils.config_handler import rag_conf import os class BaseModelFactory(ABC): @abstractmethod def generator(self) -> Optional[Embeddings | BaseChatModel]: pass class ChatModelFactory(BaseModelFactory): def generator(self) -> Optional[Embeddings | BaseChatModel]: return ChatTongyi(model=rag_conf["chat_model_name"], api_key=rag_conf["api_key"]) class EmbeddingsFactory(BaseModelFactory): def generator(self) -> Optional[Embeddings | BaseChatModel]: return DashScopeEmbeddings(model=rag_conf["embedding_model_name"], dashscope_api_key=os.environ.get("API_KEY")) chat_model = ChatModelFactory().generator() embed_model = EmbeddingsFactory().generator()