import pandas as pd df = pd.read_csv('./dataset1.csv') from sentence_transformers import SentenceTransformer # Assuming your DataFrame is already loaded as 'df' context_data = [] for i in range(len(df)): context = f"Question: {df.iloc[i]['Questions']} Answer: {df.iloc[i]['Answers']}" context_data.append(context) # Embed the contexts embedding_model = SentenceTransformer('all-MiniLM-L6-v2') context_embeddings = embedding_model.encode(context_data) import os # Get the secret key from the environment groq_api_keys = os.environ.get('groq_api_keys') ## LLM used for RAG from langchain_groq import ChatGroq llm = ChatGroq(model="llama-3.1-70b-versatile", api_key=groq_api_keys) ## Embedding model! from langchain_huggingface import HuggingFaceEmbeddings embed_model = HuggingFaceEmbeddings(model_name="mixedbread-ai/mxbai-embed-large-v1") # Create vector store from langchain_chroma import Chroma vectorstore = Chroma( collection_name="medical_dataset_store", embedding_function=embed_model, persist_directory="./", ) # Add data to vector store vectorstore.add_texts(context_data) retriever = vectorstore.as_retriever() from langchain_core.prompts import PromptTemplate template = (""""You are a professional, empathetic mental health support AI assistant. Your role is to offer supportive, informative responses while maintaining appropriate boundaries and encouraging professional help when needed. Context from mental health research: {context} User Message: {question} Please provide a response that: 1. Shows empathy and understanding 2. Provides relevant information based on research data when applicable 3. Encourages professional help when appropriate 4. Offers practical coping strategies when suitable 5. Maintains appropriate boundaries and disclaimers Context: {context} Question: {question} Answer:""") rag_prompt = PromptTemplate.from_template(template) from langchain_core.output_parsers import StrOutputParser from langchain_core.runnables import RunnablePassthrough rag_chain = ( {"context": retriever, "question": RunnablePassthrough()} | rag_prompt | llm | StrOutputParser() ) import gradio as gr def rag_memory_stream(message, history): partial_text = "" for new_text in rag_chain.stream(message): partial_text += new_text yield partial_text # Updated, more interesting examples examples = [ "How can I handle panic attacks effectively?", "What are the early signs of postpartum depression?", "Any strategies for coping with burnout at work?", "Can insomnia be linked to stress or anxiety?", "What are some natural ways to manage depression?" ] # Updated UI title and description title = "Mindful Moments: Your Mental Health AI Companion" description = ( "Empower yourself with real-time AI insights about mental health. " "This interactive demo is for learning purposes only and is not a substitute for professional help." ) demo = gr.ChatInterface( fn=rag_memory_stream, type="messages", title=title, description=description, fill_height=True, examples=examples, theme="soft", # Updated theme for a fresh, friendly look ) if __name__ == "__main__": demo.launch()