import gradio as gr import os from huggingface_hub import login from dotenv import load_dotenv from embedding import embeddings from db.chroma import load_and_setup_db, search_cases from chat.hermes_llm import ChatManager # Load environment variables load_dotenv() # Login to Hugging Face # login(token=os.getenv("HUGGINGFACEHUB_API_TOKEN"), add_to_git_credential=True) # Initialize components VECTOR_DB_PATH = os.getenv("VECTOR_DB_PATH") vector_store = load_and_setup_db(VECTOR_DB_PATH, embeddings) legal_chat = ChatManager(temperature=0.1) def process_query(query, chat_history): try: # Search relevant cases results = search_cases(vectorstore=vector_store, query=query, k=1) response=None if len(results)>0: # Get response from chat manager response = legal_chat.get_response(results[0]['content'], query=query) response_final = f"""{response}\n\nkilde:[case_id:{results[0]['metadata']['case_id']}]""" else : response_final =" Det ønskede ord blev ikke fundet i nogen sager. Prøv met et andet søgeord" # Update chat history chat_history.append((query, response_final)) return "", chat_history except Exception as e: return "", chat_history + [(query, f"Det ønskede ord blev ikke fundet i nogen sager. Prøv met et andet søgeord")] # Create Gradio interface with gr.Blocks(title="Jurai Insight") as demo: gr.Markdown("# Jurai Insight") gr.Markdown("Forudsig fremtiden, byg din sag på data.") chatbot = gr.Chatbot( [], elem_id="chatbot", bubble_full_width=False, height=400 ) with gr.Row(): query_input = gr.Textbox( placeholder="Indtast dit spørgsmål her...", show_label=False, scale=4 ) submit_btn = gr.Button("Sende", scale=1) # Set up event handlers submit_btn.click( process_query, inputs=[query_input, chatbot], outputs=[query_input, chatbot] ) query_input.submit( process_query, inputs=[query_input, chatbot], outputs=[query_input, chatbot] ) if __name__ == "__main__": demo.launch(share=True)