import gradio as gr | |
from gradio_client import Client, handle_file | |
import os | |
# Define your Hugging Face token (make sure to set it as an environment variable) | |
HF_TOKEN = os.getenv("HF_TOKEN") # Replace with your actual token if not using an environment variable | |
# Initialize the Gradio Client for the specified API | |
client = Client("mangoesai/Elections_Comparing_Agent_V2", hf_token=HF_TOKEN) | |
client_name = ['2016 Election','2024 Election', 'Comparison two years'] | |
def stream_chat_with_rag( | |
message: str, | |
history: list, | |
client_name: str | |
): | |
print(f"Message: {message}") | |
print(f"History: {history}") | |
# Build the conversation prompt including system prompt and history | |
conversation = f"{system_prompt}\n\nFor Client: {client_name}\n" | |
# Add previous conversation history | |
for user_input, assistant_response in history: | |
conversation += f"User: {user_input}\nAssistant: {assistant_response}\n" | |
# Add the current user message | |
conversation += f"User: {message}\nAssistant:" | |
# Call the API with the user's process_query | |
question = message | |
#answer = client.predict(question=question, api_name="/run_graph") | |
answer = client.predict( | |
query= message, | |
election_year=client_name, | |
api_name="/process_query" | |
) | |
# Debugging: Print the raw response | |
print("Raw answer from API:") | |
print(answer) | |
return answer | |
# Title for the application | |
TITLE = "<h1 style='text-align:center;'>Reddit Election Q&A agent v0.1</h1>" | |
# Create the Gradio Blocks interface | |
with gr.Blocks(css=CSS) as demo: | |
gr.HTML(TITLE) | |
with gr.Tab("Chat"): | |
chatbot = gr.Chatbot() # Create a chatbot interface | |
chat_interface = gr.ChatInterface( | |
fn=stream_chat_with_rag, | |
chatbot=chatbot, | |
additional_inputs_accordion=gr.Accordion(label="⚙️ Parameters", open=False, render=False), | |
additional_inputs=[ | |
gr.Dropdown(client_name,value="2016 Election",label="Select Election year", render=False,allow_custom_value=True) | |
], | |
) | |
# with gr.Tab("Process PDF"): | |
# pdf_input = gr.File(label="Upload PDF File") | |
# #select_client_dropdown = gr.Dropdown(client_name, value="rosariarossi", label="Select or Type Client", allow_custom_value=True) | |
# pdf_output = gr.Textbox(label="PDF Result", interactive=False) | |
# pdf_button = gr.Button("Process PDF") | |
# pdf_button.click( | |
# process_pdf, | |
# inputs=[pdf_input], # Pass both PDF and client name is not required | |
# outputs=pdf_output | |
# ) | |
# with gr.Tab("Answer with RAG"): | |
# question_input = gr.Textbox(label="Enter Question for RAG") | |
# answer_with_rag_select_client_dropdown = gr.Dropdown(client_name, value="primo", label="Select or Type Client", allow_custom_value=True) | |
# rag_output = gr.Textbox(label="RAG Answer Result", interactive=False) | |
# rag_button = gr.Button("Get Answer") | |
# rag_button.click( | |
# rag_api, | |
# inputs=[question_input,answer_with_rag_select_client_dropdown ], | |
# outputs=rag_output | |
# ) | |
# with gr.Tab(label="Manage Files"): | |
# with gr.Column(): | |
# delete_index_button = gr.Button("Delete All Files") | |
# delete_index_textout = gr.Textbox(label="Deleted Files and Refresh Result") | |
# delete_index_button.click(fn=delete_index, inputs=[],outputs=[delete_index_textout]) | |
# Launch the app | |
if __name__ == "__main__": | |
demo.launch() | |