import gradio as gr import requests def call_api(query: str) -> str: """ Calls the public API with the given query. """ url = "https://adityashriv-refudgee-crisis-deepseek.hf.space/query/" params = {"input_text": query} headers = {"accept": "application/json"} try: response = requests.get(url, params=params, headers=headers) response.raise_for_status() # raise exception for HTTP errors json_data = response.json() if isinstance(json_data, dict): result = response["response"] else: result = json_data except Exception as e: result = f"Error: {e}" return result def chat_response(user_message: str, history: list) -> tuple: """ Processes a chat message by sending the query to the API and updating the conversation history in openai-style format. """ reply = call_api(user_message) # Append the user's message and the API response using dictionary format. history.append({"role": "user", "content": user_message}) history.append({"role": "assistant", "content": reply}) return "", history # Sample questions as lists, which will populate the input textbox. sample_questions = [ ["What are the primary mental health challenges faced by refugee children?"], ["What is the current status of the refugee crisis in Europe?"], ["Tell me about refugee trends in the Middle East."], ["How can technology aid in addressing the mental health needs of refugee children?"], ["What policies are in place to address refugee crises?"] ] with gr.Blocks() as demo: gr.Markdown( """ # Refugee Crisis Query Chat **Note:** The first query may take some time to respond due to model cold start. Enter your query below or select one of the sample questions to get started. """ ) user_input = gr.Textbox(show_label=False, placeholder="Enter your query here...", lines=1) gr.Examples( examples=sample_questions, inputs=[user_input], label="Sample Questions" ) # Specify type="messages" for the Chatbot component. chatbot = gr.Chatbot(type="messages") state = gr.State([]) send_button = gr.Button("Send") send_button.click(chat_response, inputs=[user_input, state], outputs=[user_input, chatbot]) user_input.submit(chat_response, inputs=[user_input, state], outputs=[user_input, chatbot]) demo.launch(share=True)