Flow / app.py
GH111's picture
Create app.py
e36951d
raw
history blame
2.81 kB
import streamlit as st
from transformers import AutoModelForCausalLM, AutoTokenizer
from google.cloud import dialogflow
import kaleido
import cohere
import openai
import tiktoken
import tensorflow_probability as tfp
# Define model paths
dialogflow_agent_path = "path/to/dialogflow_agent.json"
journaling_model_path = "path/to/journaling_model.pt"
llm_model_name = "gpt-j-6B"
# Load models
dialogflow_agent = dialogflow.Agent.from_json(dialogflow_agent_path)
tokenizer = AutoTokenizer.from_pretrained(llm_model_name)
llm_model = AutoModelForCausalLM.from_pretrained(llm_model_name)
# Define emotion and topic choices
emotions = ["Grateful", "Happy", "Sad", "Angry", "Anxious"]
topics = ["Relationships", "Work", "Personal Growth", "Overall Wellbeing"]
# Define breathing exercises
breathing_exercises = {
"4-7-8 Breathing": [4, 7, 8],
"Box Breathing": [4, 4, 4, 4],
}
# Function to generate text with LLM
def generate_text(prompt, num_beams=5):
input_ids = tokenizer(prompt, return_tensors="pt").input_ids
output_ids = llm_model.generate(input_ids, num_beams=num_beams)
return tokenizer.decode(output_ids[0])
# Define individual page functions
def welcome_page():
user_input = st.text_input("Talk to the Therapist", placeholder="Start your conversation")
if user_input:
response = dialogflow_agent.text_query(user_input)
st.write(f"{welcome_message}\n\n{note}\n\n{response.query_result.fulfillment_text}")
def journaling_page():
emotion = st.radio("Choose your emotion", options=emotions)
topic = st.radio("Choose your topic", options=topics)
if emotion and topic:
prompt = f"Write about a time when you felt {emotion} about {topic}."
generated_text = generate_text(prompt)
st.write("Here are some personalized journaling prompts for you:")
for line in generated_text.split('\n'):
st.write(f"- {line}")
def breathing_page():
exercise_name = st.radio("Choose your breathing exercise", options=list(breathing_exercises.keys()))
if exercise_name:
exercise = breathing_exercises[exercise_name]
st.write(f"You selected the {exercise_name} exercise.")
for duration in exercise:
st.write(f"{duration} seconds...")
time.sleep(duration)
st.write("Breathing exercise complete!")
# Streamlit app layout
st.title("Flow: Self-Healing, Wellness, and Goal-Setting")
st.write("Welcome to your journey towards self-healing, wellness, and goal achievement.")
page_selection = st.sidebar.selectbox("Choose your page", options=["Welcome", "Journaling", "Breathing Exercises"])
if page_selection == "Welcome":
welcome_page()
elif page_selection == "Journaling":
journaling_page()
elif page_selection == "Breathing Exercises":
breathing_page()