Update app.py
Browse files
app.py
CHANGED
|
@@ -1,5 +1,3 @@
|
|
| 1 |
-
# app.py
|
| 2 |
-
|
| 3 |
import os
|
| 4 |
import gradio as gr
|
| 5 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
@@ -15,11 +13,11 @@ import numpy as np
|
|
| 15 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 16 |
from dotenv import load_dotenv
|
| 17 |
|
| 18 |
-
#
|
| 19 |
logging.basicConfig(level=logging.INFO)
|
| 20 |
logger = logging.getLogger(__name__)
|
| 21 |
|
| 22 |
-
#
|
| 23 |
class SimpleEmbeddings:
|
| 24 |
def __init__(self):
|
| 25 |
self.vectorizer = TfidfVectorizer(max_features=384, stop_words='english')
|
|
@@ -36,7 +34,7 @@ class SimpleEmbeddings:
|
|
| 36 |
return [0.0] * 384
|
| 37 |
return self.vectorizer.transform([text]).toarray()[0].tolist()
|
| 38 |
|
| 39 |
-
#
|
| 40 |
class RAGAssistant:
|
| 41 |
def __init__(self, groq_api_key: str):
|
| 42 |
self.groq_api_key = groq_api_key
|
|
@@ -191,7 +189,7 @@ class RAGAssistant:
|
|
| 191 |
logger.error(f"Error in code helper: {str(e)}")
|
| 192 |
return f"Error generating response: {str(e)}"
|
| 193 |
|
| 194 |
-
#
|
| 195 |
def create_gradio_interface(assistant: RAGAssistant):
|
| 196 |
def upload_learning_files(files):
|
| 197 |
if not files:
|
|
@@ -220,11 +218,11 @@ def create_gradio_interface(assistant: RAGAssistant):
|
|
| 220 |
return history, ""
|
| 221 |
|
| 222 |
with gr.Blocks(title="RAG-Based Learning & Code Assistant", theme=gr.themes.Soft()) as demo:
|
| 223 |
-
gr.Markdown("#
|
| 224 |
gr.Markdown("Upload documents and get smart, personalized answers.")
|
| 225 |
|
| 226 |
with gr.Tabs():
|
| 227 |
-
with gr.TabItem("
|
| 228 |
gr.Markdown("### Upload lecture notes or textbooks below:")
|
| 229 |
with gr.Row():
|
| 230 |
with gr.Column(scale=1):
|
|
@@ -240,7 +238,7 @@ def create_gradio_interface(assistant: RAGAssistant):
|
|
| 240 |
learning_submit.click(learning_chat, inputs=[learning_input, learning_chatbot], outputs=[learning_chatbot, learning_input])
|
| 241 |
learning_input.submit(learning_chat, inputs=[learning_input, learning_chatbot], outputs=[learning_chatbot, learning_input])
|
| 242 |
|
| 243 |
-
with gr.TabItem("
|
| 244 |
gr.Markdown("### Upload code docs or API guides below:")
|
| 245 |
with gr.Row():
|
| 246 |
with gr.Column(scale=1):
|
|
@@ -257,11 +255,11 @@ def create_gradio_interface(assistant: RAGAssistant):
|
|
| 257 |
code_input.submit(code_chat, inputs=[code_input, code_chatbot], outputs=[code_chatbot, code_input])
|
| 258 |
|
| 259 |
gr.Markdown("---")
|
| 260 |
-
gr.Markdown("Built with
|
| 261 |
|
| 262 |
return demo
|
| 263 |
|
| 264 |
-
#
|
| 265 |
def main():
|
| 266 |
load_dotenv()
|
| 267 |
groq_api_key = os.getenv("GROQ_API_KEY")
|
|
|
|
|
|
|
|
|
|
| 1 |
import os
|
| 2 |
import gradio as gr
|
| 3 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
|
|
|
| 13 |
from sklearn.feature_extraction.text import TfidfVectorizer
|
| 14 |
from dotenv import load_dotenv
|
| 15 |
|
| 16 |
+
# Logger Configuration
|
| 17 |
logging.basicConfig(level=logging.INFO)
|
| 18 |
logger = logging.getLogger(__name__)
|
| 19 |
|
| 20 |
+
# Simple TF-IDF Fallback Embeddings
|
| 21 |
class SimpleEmbeddings:
|
| 22 |
def __init__(self):
|
| 23 |
self.vectorizer = TfidfVectorizer(max_features=384, stop_words='english')
|
|
|
|
| 34 |
return [0.0] * 384
|
| 35 |
return self.vectorizer.transform([text]).toarray()[0].tolist()
|
| 36 |
|
| 37 |
+
# RAG Assistant Class
|
| 38 |
class RAGAssistant:
|
| 39 |
def __init__(self, groq_api_key: str):
|
| 40 |
self.groq_api_key = groq_api_key
|
|
|
|
| 189 |
logger.error(f"Error in code helper: {str(e)}")
|
| 190 |
return f"Error generating response: {str(e)}"
|
| 191 |
|
| 192 |
+
# Gradio UI Interface
|
| 193 |
def create_gradio_interface(assistant: RAGAssistant):
|
| 194 |
def upload_learning_files(files):
|
| 195 |
if not files:
|
|
|
|
| 218 |
return history, ""
|
| 219 |
|
| 220 |
with gr.Blocks(title="RAG-Based Learning & Code Assistant", theme=gr.themes.Soft()) as demo:
|
| 221 |
+
gr.Markdown("# RAG-Based Learning & Code Assistant")
|
| 222 |
gr.Markdown("Upload documents and get smart, personalized answers.")
|
| 223 |
|
| 224 |
with gr.Tabs():
|
| 225 |
+
with gr.TabItem(" Learning Tutor"):
|
| 226 |
gr.Markdown("### Upload lecture notes or textbooks below:")
|
| 227 |
with gr.Row():
|
| 228 |
with gr.Column(scale=1):
|
|
|
|
| 238 |
learning_submit.click(learning_chat, inputs=[learning_input, learning_chatbot], outputs=[learning_chatbot, learning_input])
|
| 239 |
learning_input.submit(learning_chat, inputs=[learning_input, learning_chatbot], outputs=[learning_chatbot, learning_input])
|
| 240 |
|
| 241 |
+
with gr.TabItem("Code Documentation Helper"):
|
| 242 |
gr.Markdown("### Upload code docs or API guides below:")
|
| 243 |
with gr.Row():
|
| 244 |
with gr.Column(scale=1):
|
|
|
|
| 255 |
code_input.submit(code_chat, inputs=[code_input, code_chatbot], outputs=[code_chatbot, code_input])
|
| 256 |
|
| 257 |
gr.Markdown("---")
|
| 258 |
+
gr.Markdown("Built with using LangChain, ChromaDB, and Groq API")
|
| 259 |
|
| 260 |
return demo
|
| 261 |
|
| 262 |
+
# Main Function
|
| 263 |
def main():
|
| 264 |
load_dotenv()
|
| 265 |
groq_api_key = os.getenv("GROQ_API_KEY")
|