rknl's picture
Update app.py
d3541c5 verified
Raw
History Blame Contribute Delete
3.46 kB
import os
import gradio as gr
from typing import List, Tuple
from gradio import ChatMessage
import base64
from llama_index.core import StorageContext, load_index_from_storage
from dotenv import load_dotenv
from retrieve import get_latest_dir, get_latest_html_file
from graph_handler import query_graph_qa, plot_subgraph
from embed_handler import query_rag_qa
from evaluate import evaluate_llm, reasoning_graph, get_coupon
import base64
import time
load_dotenv()
KG_INDEX_PATH = get_latest_dir(os.getenv("GRAPH_DIR"))
KG_PLOT_PATH = get_latest_html_file(os.getenv("GRAPH_VIS"))
RAG_INDEX_PATH = get_latest_dir(os.getenv("EMBEDDING_DIR"))
# Load Graph-RAG index
graph_rag_index = load_index_from_storage(
StorageContext.from_defaults(persist_dir=KG_INDEX_PATH)
)
# Load RAG index
rag_index = load_index_from_storage(
StorageContext.from_defaults(persist_dir=RAG_INDEX_PATH)
)
def query_tqa(query, search_level):
"""
Query the Graph-RAG and RAG models for a given query.
Args:
query (str): The query to ask the RAGs.
search_level (int): The max search level to use for the Graph RAG.
Returns:
tuple: The response, reference, and reference text for the Graph-RAG and RAG models.
"""
if not query.strip():
raise gr.Error("Please enter a query before asking.")
grag_response, grag_reference, grag_reference_text = query_graph_qa(
graph_rag_index, query, search_level
)
# rag_response, rag_reference, rag_reference_text = query_rag_qa(
# rag_index, query, search_level
# )
print(str(grag_response.response))
return (
str(grag_response.response)
)
# with gr.Blocks() as demo:
# gr.Markdown("# Comfy Virtual Assistant")
# chatbot = gr.Chatbot(
# label="Comfy Virtual Assistant",
# type="messages",
# scale=1,
# # suggestions = [
# # {"text": "How much iphone cost?"},
# # {"text": "What phone options do i have ?"}
# # ],
# )
# msg = gr.Textbox(label="Input Your Query")
# clear = gr.ClearButton([msg, chatbot])
# def respond(message, chat_history):
# bot_message = query_tqa(message, 2)
# # chat_history.append((message, bot_message))
# chat_history.append(ChatMessage(role="user", content=message))
# chat_history.append(ChatMessage(role="assistant", content=bot_message))
# time.sleep(1)
# return "", chat_history
# msg.submit(respond, [msg, chatbot], [msg, chatbot])
def chatbot_response(message: str, history: List[Tuple[str, str]]) -> str:
# Use the query_tqa function to get the response
search_level = 2 # You can adjust this or make it configurable
response = query_tqa(message, search_level)
return response
# Create the Gradio interface
with gr.Blocks() as demo:
chatbot = gr.Chatbot()
msg = gr.Textbox()
clear = gr.Button("Clear")
def user(user_message, history):
return "", history + [[user_message, None]]
def bot(history):
bot_message = chatbot_response(history[-1][0], history)
history[-1][1] = bot_message
return history
msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
bot, chatbot, chatbot
)
clear.click(lambda: None, None, chatbot, queue=False)
demo.launch(auth=(os.getenv("ID"), os.getenv("PASS")), share=False)