diff --git a/chatbot-core/llm.py b/chatbot-core/llm.py index d7502fa..77b75e3 100644 --- a/chatbot-core/llm.py +++ b/chatbot-core/llm.py @@ -14,17 +14,7 @@ from langchain_qdrant import QdrantVectorStore from qdrant_client import QdrantClient -from main.settings import ( - EMBEDDING_MODEL_NAME, - EMBEDDING_MODEL_TYPE, - EMBEDDING_MODEL_URL, - LLM_MODEL_NAME, - LLM_OLLAMA_BASE_URL, - OLLAMA_EMBEDDING_MODEL_BASE_URL, - QDRANT_DB_COLLECTION_NAME, - QDRANT_DB_HOST, - QDRANT_DB_PORT, -) +from django.conf import settings logger = logging.getLogger(__name__) @@ -45,16 +35,16 @@ def __post_init__(self, mem_key: str = "chat_history", conversation_max_window: self.memory = None try: - self.qdrant_client = QdrantClient(host=QDRANT_DB_HOST, port=QDRANT_DB_PORT) + self.qdrant_client = QdrantClient(host=settings.QDRANT_DB_HOST, port=settings.QDRANT_DB_PORT) except Exception as e: raise Exception(f"Qdrant client is not properly setup. {str(e)}") self.memory = ConversationBufferWindowMemory(k=conversation_max_window, memory_key=mem_key, return_messages=True) self.embedding_model = CustomEmbeddingsWrapper( - url=EMBEDDING_MODEL_URL, - model_name=EMBEDDING_MODEL_NAME, - model_type=EMBEDDING_MODEL_TYPE, - base_url=OLLAMA_EMBEDDING_MODEL_BASE_URL, + url=settings.EMBEDDING_MODEL_URL, + model_name=settings.EMBEDDING_MODEL_NAME, + model_type=settings.EMBEDDING_MODEL_TYPE, + base_url=settings.OLLAMA_EMBEDDING_MODEL_BASE_URL, ) def _system_prompt_for_retrieval(self): @@ -124,7 +114,7 @@ def create_chain(self, db_collection_name: str): rag_chain = create_retrieval_chain(history_aware_retriever, chat_response_chain) return rag_chain - def execute_chain(self, query: str, db_collection_name: str = QDRANT_DB_COLLECTION_NAME): + def execute_chain(self, query: str, db_collection_name: str = settings.QDRANT_DB_COLLECTION_NAME): """ Executes the chain """ @@ -152,7 +142,7 @@ class OpenAIHandler(LLMBase): def __post_init__(self): super().__post_init__() try: - self.llm_model = ChatOpenAI(model=LLM_MODEL_NAME, temperature=self.temperature) + self.llm_model = ChatOpenAI(model=settings.LLM_MODEL_NAME, temperature=self.temperature) except Exception as e: raise Exception(f"OpenAI LLM model is not successfully loaded. {str(e)}") @@ -166,6 +156,6 @@ class OllamaHandler(LLMBase): def __post_init__(self): super().__post_init__() try: - self.llm_model = Ollama(model=LLM_MODEL_NAME, base_url=LLM_OLLAMA_BASE_URL, temperature=self.temperature) + self.llm_model = Ollama(model=settings.LLM_MODEL_NAME, base_url=settings.LLM_OLLAMA_BASE_URL, temperature=self.temperature) except Exception as e: raise Exception(f"Ollama LLM model is not successfully loaded. {str(e)}") diff --git a/docker-compose.yml b/docker-compose.yml index cac3409..fdb11e1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -39,6 +39,14 @@ services: DATABASE_HOST: ${DATABASE_HOST:-db} QDRANT_DB_HOST: ${QDRANT_DB_HOST:-0.0.0.0} QDRANT_DB_PORT: ${QDRANT_DB_PORT:-6333} + QDRANT_DB_COLLECTION_NAME: ${QDRANT_DB_COLLECTION_NAME:-test} + EMBEDDING_MODEL_URL: ${EMBEDDING_MODEL_URL:-localhost} + EMBEDDING_MODEL_NAME: ${EMBEDDING_MODEL_NAME:-embedding_model} + EMBEDDING_MODEL_TYPE: ${EMBEDDING_MODEL_TYPE:-1} + LLM_TYPE: ${LLM_TYPE:-1} + LLM_MODEL_NAME: ${LLM_MODEL_NAME:-"mistral:latest"} + LLM_OLLAMA_BASE_URL: ${LLM_OLLAMA_BASE_URL:-localhost} + OPENAI_API_KEY: ${OPENAI_API_KEY:-test_key} command: bash -c 'python manage.py runserver 0.0.0.0:8001' volumes: - .:/code diff --git a/main/settings.py b/main/settings.py index 285b47c..f215706 100644 --- a/main/settings.py +++ b/main/settings.py @@ -55,6 +55,8 @@ LLM_TYPE=int, LLM_MODEL_NAME=str, LLM_OLLAMA_BASE_URL=str, + # OpenAI API key + OPENAI_API_KEY=str, ) # Quick-start development settings - unsuitable for production # See https://docs.djangoproject.com/en/5.1/howto/deployment/checklist/ @@ -80,6 +82,9 @@ QDRANT_DB_HOST = env("QDRANT_DB_HOST") QDRANT_DB_PORT = env("QDRANT_DB_PORT") QDRANT_DB_COLLECTION_NAME = env("QDRANT_DB_COLLECTION_NAME") +# OPENAI API KEY +OPENAI_API_KEY = env("OPENAI_API_KEY") + # Application definition