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("on1onmangoes/CNIHUB10724v10", hf_token=HF_TOKEN) client = Client("on1onmangoes/CNIHUB101324v10", hf_token=HF_TOKEN) # on1onmangoes/CNIHUB101324v10 # Here's how you can fix it: # Update the conversation history within the function. # Return the updated history along with any other required outputs. # Function to handle chat API call # Function to handle chat API call def stream_chat_with_rag( message: str, history: list, client_name: str, system_prompt: str, num_retrieved_docs: int, num_docs_final: int, temperature: float, max_new_tokens: int, top_p: float, top_k: int, penalty: float, ): # Use the parameters provided by the UI response = client.predict( message=message, client_name=client_name, system_prompt=system_prompt, num_retrieved_docs=num_retrieved_docs, num_docs_final=num_docs_final, temperature=temperature, max_new_tokens=max_new_tokens, top_p=top_p, top_k=top_k, penalty=penalty, api_name="/chat" ) # Update the conversation history history = history + [(message, response)] # Return the assistant's reply and the updated history return "", history # # Function to handle chat API call # def stream_chat_with_rag( # message: str, # history: list, # client_name: str, # system_prompt: str, # num_retrieved_docs: int, # num_docs_final: int, # temperature: float, # max_new_tokens: int, # top_p: float, # top_k: int, # penalty: float, # ): # # Use the parameters provided by the UI # response = client.predict( # message=message, # client_name=client_name, # system_prompt=system_prompt, # num_retrieved_docs=num_retrieved_docs, # num_docs_final=num_docs_final, # temperature=temperature, # max_new_tokens=max_new_tokens, # top_p=top_p, # top_k=top_k, # penalty=penalty, # api_name="/chat" # ) # # Return the assistant's reply # return response # Function to handle PDF processing API call def process_pdf(pdf_file): return client.predict( pdf_file=handle_file(pdf_file), client_name="rosariarossi", # Hardcoded client name api_name="/process_pdf2" )[1] # Return only the result string # Function to handle search API call def search_api(query): return client.predict(query=query, api_name="/search_with_confidence") # Function to handle RAG API call def rag_api(question): return client.predict(question=question, api_name="/answer_with_rag") # CSS for custom styling CSS = """ # chat-container { height: 100vh; } """ # Title for the application TITLE = "

My Gradio Chat App

" # 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(['rosariarossi','bianchifiordaliso','lorenzoverdi'],value="rosariarossi",label="Select Client", render=False,), gr.Textbox( value="You are an expert assistant", label="System Prompt", render=False, ), gr.Slider( minimum=1, maximum=10, step=1, value=10, label="Number of Initial Documents to Retrieve", render=False, ), gr.Slider( minimum=1, maximum=10, step=1, value=9, label="Number of Final Documents to Retrieve", render=False, ), gr.Slider( minimum=0.2, maximum=1, step=0.1, value=0, label="Temperature", render=False, ), gr.Slider( minimum=128, maximum=8192, step=1, value=1024, label="Max new tokens", render=False, ), gr.Slider( minimum=0.0, maximum=1.0, step=0.1, value=1.0, label="Top P", render=False, ), gr.Slider( minimum=1, maximum=20, step=1, value=20, label="Top K", render=False, ), gr.Slider( minimum=0.0, maximum=2.0, step=0.1, value=1.2, label="Repetition Penalty", render=False, ), ], ) with gr.Tab("Process PDF"): pdf_input = gr.File(label="Upload PDF File") pdf_output = gr.Textbox(label="PDF Result", interactive=False) pdf_button = gr.Button("Process PDF") pdf_button.click( process_pdf, inputs=[pdf_input], outputs=pdf_output ) with gr.Tab("Search"): query_input = gr.Textbox(label="Enter Search Query") search_output = gr.Textbox(label="Search Confidence Result", interactive=False) search_button = gr.Button("Search") search_button.click( search_api, inputs=query_input, outputs=search_output ) with gr.Tab("Answer with RAG"): question_input = gr.Textbox(label="Enter Question for RAG") rag_output = gr.Textbox(label="RAG Answer Result", interactive=False) rag_button = gr.Button("Get Answer") rag_button.click( rag_api, inputs=question_input, outputs=rag_output ) # Launch the app if __name__ == "__main__": demo.launch()