import streamlit as st from assistant import create_assistant from db.feedback import save_feedback from db.conversations import save_conversation from judge import evaluate_relevance assistant = create_assistant() st.title("First Aid QA Assistant") user_input = st.text_input("Enter your question:") if st.button("Ask"): with st.spinner("Processing..."): answer = assistant.rag(user_input) st.success("Completed!") st.write(answer) record = assistant.last_call st.write(f"Response time: {record.response_time:.2f}s") st.write(f"Prompt tokens: {record.prompt_tokens}") st.write(f"Completion tokens: {record.completion_tokens}") st.write(f"Cost: ${record.cost:.4f}") conversation_id = save_conversation( record, user_input, assistant.last_rewritten_question or user_input, ) st.session_state.conversation_id = conversation_id relevance, explanation = evaluate_relevance(user_input, answer) save_feedback(conversation_id, "judge", relevance=relevance, explanation=explanation) st.write(f"Relevance: {relevance}") st.write(f"Explanation: {explanation}") conversation_id = st.session_state.get("conversation_id") if conversation_id is not None: col1, col2 = st.columns(2) with col1: if st.button("+1", key=f"feedback_up_{conversation_id}"): save_feedback(conversation_id, "user", score=1) st.success("Thanks!") with col2: if st.button("-1", key=f"feedback_down_{conversation_id}"): save_feedback(conversation_id, "user", score=-1) st.success("Thanks for the feedback!")