From e222835b4fc9a0e70ea133f985e5555316cbfab5 Mon Sep 17 00:00:00 2001 From: smrchanda877 <008735877@coyote.csusb.edu> Date: Mon, 25 Nov 2024 21:16:46 -0800 Subject: [PATCH 1/2] updated the infrastructure of the codebase --- app.py | 6 +++--- RAG.py => backend/RAG.py | 0 .../ddos_protection.py | 0 retriever.py => backend/retriever.py | 0 .../chatbot_statistics.py | 0 milvus/milvus_vector.db | Bin 5238784 -> 5238784 bytes 6 files changed, 3 insertions(+), 3 deletions(-) rename RAG.py => backend/RAG.py (100%) rename ddos_protection.py => backend/ddos_protection.py (100%) rename retriever.py => backend/retriever.py (100%) rename chatbot_statistics.py => metrics/chatbot_statistics.py (100%) diff --git a/app.py b/app.py index 36fb48e..bd2dd9d 100644 --- a/app.py +++ b/app.py @@ -3,11 +3,11 @@ # import time import os import subprocess -from RAG import initialize_milvus, query_rag +from backend.RAG import initialize_milvus, query_rag from collections import defaultdict import pandas as pd -from chatbot_statistics import DatabaseClient # Import the DatabaseClient class -from ddos_protection import handle_rate_limiting # Importing the rate-limiting function +from metrics.chatbot_statistics import DatabaseClient # Import the DatabaseClient class +from backend.ddos_protection import handle_rate_limiting # Importing the rate-limiting function def initialize_vector_store(): diff --git a/RAG.py b/backend/RAG.py similarity index 100% rename from RAG.py rename to backend/RAG.py diff --git a/ddos_protection.py b/backend/ddos_protection.py similarity index 100% rename from ddos_protection.py rename to backend/ddos_protection.py diff --git a/retriever.py b/backend/retriever.py similarity index 100% rename from retriever.py rename to backend/retriever.py diff --git a/chatbot_statistics.py b/metrics/chatbot_statistics.py similarity index 100% rename from chatbot_statistics.py rename to metrics/chatbot_statistics.py diff --git a/milvus/milvus_vector.db b/milvus/milvus_vector.db index 00c0cfd2343a338c90e25545e16b9282caee6983..adfeb226f89f89b559721b508329698752804668 100644 GIT binary patch delta 5571 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 iHOaHye`+e_Y`oRd Date: Mon, 25 Nov 2024 21:39:04 -0800 Subject: [PATCH 2/2] updated answerable questions to match the readme and wiki --- README.md | 4 ++-- app.py | 4 ++-- backend/RAG.py | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 0cbbe73..bde3056 100644 --- a/README.md +++ b/README.md @@ -134,10 +134,10 @@ This section highlights the sets of questions the chatbot can and cannot answer. | How can I connect to the campus Wi-Fi? | What is a smart contract? | | What are the available free software for a student? | Can you write code for a basic Python script? | | Where are all the printers located? | What is the CGI phone number/email? | -| What are the CoyoteLabs virtual computer lab? | What class does Dr. Alzahrani teach? | +| What are the CoyoteLabs virtual computer labs? | What class does Dr. Alzahrani teach? | | Is Adobe Creative Cloud available as student software? | Who is Hironori Washizaki? | | What is information security awareness? | How can I make a payment for the tuition fee? | -| How do I enable multi-factor authorization? | What is the future impact of AI on software quality standards? | +| How do I enable multi-factor authentication? | What is the future impact of AI on software quality standards? | | What are Coyote OneCard benefits? | What is regression testing? | | What if i lost my campus laptop charger? | How much does parking cost for one semester? | diff --git a/app.py b/app.py index bd2dd9d..ee7d928 100644 --- a/app.py +++ b/app.py @@ -63,7 +63,7 @@ def __init__(self, session_state=st.session_state): # Answerable and Unanswerable questions self.answerable_questions = { "How can I contact ITS?", - "How can I connect to the campus WiFi?", + "How can I connect to the campus Wi-Fi?", "What are the available free software for a student?", "Where are all the printers located?", "What are the CoyoteLabs virtual computer labs?", @@ -78,7 +78,7 @@ def __init__(self, session_state=st.session_state): "What are the campus gym timings?", "What is a smart contract?", "Can you write code for a basic Python script?", - "What is the CGI phone number or email?", + "What is the CGI phone number/email?", "What class does Dr. Alzahrani teach?", "Who is Hironori Washizaki?", "How can I make a payment for the tuition fee?", diff --git a/backend/RAG.py b/backend/RAG.py index db403b2..e988b09 100644 --- a/backend/RAG.py +++ b/backend/RAG.py @@ -20,7 +20,7 @@ from langchain_text_splitters import RecursiveCharacterTextSplitter from pymilvus import connections, utility, Collection, CollectionSchema, FieldSchema, DataType from httpx import HTTPStatusError -from retriever import ScoreThresholdRetriever +from backend.retriever import ScoreThresholdRetriever load_dotenv()