Commit 54ef043f authored by Mirza Mohammed Baig's avatar Mirza Mohammed Baig

Configured the API endpoint, token, namespace and all the other settings in the .env file.

parent 2a14caf6
ASTRA_DB_API_ENDPOINT="https://0c52512b-0c65-4e70-ac47-71edf5244a82-us-east-2.apps.astra.datastax.com"
ASTRA_DB_APPLICATION_TOKEN="AstraCS:EvXpFFafufegdQJvhqlYxmxt:ef86b5996013b12140b69254bd554d7e8e10eb5a7137859b9c432f92a5a3b65c"
ASTRA_DB_NAMESPACE="default_keyspace"
HF_TOKEN="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"
GROQ_API_KEY="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"
GROQ_API_KEY="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"
GROQ_MODEL_NAME="llama-3.3-70b-versatile"
MONGODB_URL=mongodb+srv://genai:nisum@123@productrater.hpbsn.mongodb.net/?retryWrites=true&w=majority&appName=productRater
MONGODB_PASSWORD=nisum@123
MONGODB_USERNAME=genai
MONGODB_CLUSTER=productrater.hpbsn.mongodb.net
MONGODB_APPNAME=productRater
# Default settings
EMBEDDING_MODEL="sentence-transformers/all-mpnet-base-v2"
HUGGING_FACE_INTERFACE_API="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"
HUGGING_FACE_MODEL="BAAI/bge-base-en-v1.5"
ASTRA_DB_API_END_POINT="https://9706ee0b-b3e8-4ee2-bb26-45e8a0db1586-us-east-2.apps.astra.datastax.com"
ASTRA_DB_TOKEN="AstraCS:OEbpcggZbUjOvRiesULZkTnf:9d215d8d32c2ffb09081212208e474f81a0bcdde45e7b683cd67f4a1a936a8bf"
ASTRA_DB_NAME_SPACE="default_keyspace"
from functools import lru_cache
from pydantic.v1 import BaseSettings
class Settings(BaseSettings):
"""Application configuration settings"""
ASTRA_DB_API_ENDPOINT: str = "https://0c52512b-0c65-4e70-ac47-71edf5244a82-us-east-2.apps.astra.datastax.com"
ASTRA_DB_APPLICATION_TOKEN: str = "AstraCS:EvXpFFafufegdQJvhqlYxmxt:ef86b5996013b12140b69254bd554d7e8e10eb5a7137859b9c432f92a5a3b65c"
ASTRA_DB_NAMESPACE: str = "default_keyspace"
# Default settings
EMBEDDING_MODEL: str = "sentence-transformers/all-mpnet-base-v2"
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
extra = "allow" # Allow extra fields
@lru_cache()
def get_settings():
"""
Cached settings retrieval to optimize performance
Returns:
Settings: Configured application settings
"""
return Settings()
from functools import lru_cache
from langchain_groq import ChatGroq
import os
from dotenv import load_dotenv
load_dotenv()
groq_model_name = os.getenv("GROQ_MODEL_NAME")
@lru_cache(maxsize=1) # Cache only one instance (singleton behavior)
def get_llm(groq_token: str):
......@@ -15,7 +19,7 @@ def get_llm(groq_token: str):
ChatGroq: A singleton instance of the ChatGroq LLM.
"""
return ChatGroq(
model_name="llama-3.3-70b-versatile",
model_name=groq_model_name,
temperature=1,
groq_api_key=groq_token # Pass the Groq token here
)
......@@ -7,7 +7,19 @@ from src.reviewsense_ecom.model.FeatureSentiment import FeatureSentiment
from src.reviewsense_ecom.model.Product import Product
from src.reviewsense_ecom.model.ProductReview import ProductReview
from src.reviewsense_ecom.service.review_adder import ReviewAdder
import os
from dotenv import load_dotenv
load_dotenv()
mongo_db = os.getenv("MONGODB_URL")
# Load environment variables
load_dotenv()
# Read individual parts from .env
username = os.getenv("MONGODB_USERNAME")
password = urllib.parse.quote_plus(os.getenv("MONGODB_PASSWORD")) # escape special characters
cluster = os.getenv("MONGODB_CLUSTER")
appname = os.getenv("MONGODB_APPNAME")
# def get_db_connection(collection_name: str): #LOCAL DB
# client = MongoClient("mongodb://localhost:27017/") # Update with your MongoDB connection
......@@ -16,10 +28,8 @@ from src.reviewsense_ecom.service.review_adder import ReviewAdder
def get_db_connection(collection_name: str): # get_db_cloud_connection
password = "nisum@123"
escaped_password = urllib.parse.quote_plus(password)
client = MongoClient(
f"mongodb+srv://genai:{escaped_password}@productrater.hpbsn.mongodb.net/?retryWrites=true&w=majority&appName=productRater") # Update with your MongoDB connection
mongo_uri = f"mongodb+srv://{username}:{password}@{cluster}/?retryWrites=true&w=majority&appName={appname}"
client = MongoClient(mongo_uri)
db = client["productRater"] # Change to your database name
return db[collection_name]
......
# src/reviewsense/core/database.py
from functools import lru_cache
from dotenv import load_dotenv
import os
from langchain_astradb import AstraDBVectorStore
from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_astradb import AstraDBVectorStore
load_dotenv()
huggingface_inference_api = os.getenv("HUGGING_FACE_INTERFACE_API")
huggingface_model= os.getenv("HUGGING_FACE_MODEL")
astra_db_api_end_point=os.getenv("ASTRA_DB_API_END_POINT")
astra_db_token=os.getenv("ASTRA_DB_TOKEN")
astra_db_name_space=os.getenv("ASTRA_DB_NAME_SPACE")
@lru_cache(maxsize=1)
def get_vector_store(
collection_name: str = "feature_reviews",
embedding_model: str = "sentence-transformers/all-mpnet-base-v2"
collection_name: str = "customer_reviews",
embedding_model: str = "sentence-transformers/all-mpnet-base-v2"
):
"""
Create a singleton vector store instance
......@@ -22,13 +31,13 @@ def get_vector_store(
"""
# Initialize embeddings
embeddings = HuggingFaceEmbeddings(model_name=embedding_model)
embeddings = HuggingFaceInferenceAPIEmbeddings(api_key=huggingface_inference_api, model_name=huggingface_model)
# Create and return vector store
return AstraDBVectorStore(
collection_name=collection_name,
embedding=embeddings,
api_endpoint="https://19b6fcda-3fe8-4585-a5f5-6a464a382426-westus3.apps.astra.datastax.com",
token="AstraCS:UaZmElcIDkRHzUmktguKwrnd:197d3e825510580f5f97cc749b00a94b685d54a5f1d4a755b75440fe2c29329b",
namespace="default_keyspace",
)
api_endpoint=astra_db_api_end_point,
token=astra_db_token,
namespace=astra_db_name_space,
)
\ No newline at end of file
from typing import List, Dict
import os
from dotenv import load_dotenv
from langchain.prompts import ChatPromptTemplate
from langchain_core.output_parsers import JsonOutputParser
......@@ -9,7 +10,7 @@ from src.reviewsense_ecom.llm.llm import get_llm
# Load environment variables from .env file
load_dotenv()
groq_api_key = os.getenv("GROQ_API_KEY")
class FeatureReview(BaseModel):
feature: str
......@@ -24,7 +25,7 @@ class FeatureReviews(BaseModel):
class FeatureExtractor:
def __init__(self):
self.llm = get_llm("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")
self.llm = get_llm(groq_api_key)
self.parser = self._create_reviews_parser()
self.prompt = self._create_extraction_prompt()
......
# src/reviewsense/core/database.py
from functools import lru_cache
from langchain_community.embeddings import HuggingFaceInferenceAPIEmbeddings
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_astradb import AstraDBVectorStore
from src.reviewsense_ecom.core.config import get_settings
@lru_cache(maxsize=1)
def get_vector_store(
collection_name: str = "customer_reviews",
embedding_model: str = "sentence-transformers/all-mpnet-base-v2"
):
"""
Create a singleton vector store instance
Args:
collection_name (str): Database collection name
embedding_model (str): Embedding model to use
Returns:
AstraDBVectorStore: Configured vector store instance
"""
settings = get_settings()
# Initialize embeddings
embeddings = HuggingFaceInferenceAPIEmbeddings(api_key="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", model_name="BAAI/bge-base-en-v1.5")
# Create and return vector store
return AstraDBVectorStore(
collection_name=collection_name,
embedding=embeddings,
api_endpoint="https://9706ee0b-b3e8-4ee2-bb26-45e8a0db1586-us-east-2.apps.astra.datastax.com",
token="AstraCS:OEbpcggZbUjOvRiesULZkTnf:9d215d8d32c2ffb09081212208e474f81a0bcdde45e7b683cd67f4a1a936a8bf",
namespace="default_keyspace",
)
\ No newline at end of file
# services/review_adder.py
from langchain_community.docstore.document import Document
from .retrieval import get_vector_store
from src.reviewsense_ecom.retriever.retrieval import get_vector_store
class ReviewAdder:
"""Class for adding reviews to the vector store"""
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment