ZaryabKhan14 commited on
Commit
d2bd156
1 Parent(s): dc5fd84

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -16
app.py CHANGED
@@ -1,3 +1,5 @@
 
 
1
  import streamlit as st
2
  import openai
3
  import os
@@ -10,39 +12,70 @@ api_key = os.getenv("api_key")
10
  # Initialize OpenAI client
11
  client = openai.Client(api_key=api_key)
12
 
13
- def assistant_chatbot(user_query):
14
- thread = client.beta.threads.create()
 
 
 
 
 
15
 
16
  message = client.beta.threads.messages.create(
17
- thread_id=thread.id,
18
  role="user",
19
  content=user_query,
20
  )
21
 
22
  run = client.beta.threads.runs.create(
23
- thread_id=thread.id,
24
- assistant_id="asst_6o7w7E8I6m0cVfM3zFzePcb9", # Replace with your assistant ID
25
  instructions="Provide information related to health queries. Remember, this is not medical advice. For serious health concerns, consult a healthcare professional.",
26
  )
27
 
28
  # Wait for the run to complete
29
  while not run.completed_at:
30
- # Streamlit does not have a direct equivalent to time.sleep(), so we poll the run status
31
- run = client.beta.threads.runs.retrieve(thread_id=thread.id, run_id=run.id)
32
 
33
- messages = client.beta.threads.messages.list(thread_id=thread.id)
34
  last_message = messages.data[0]
35
  response = last_message.content[0].text.value
36
- return response
 
 
 
 
 
 
 
37
 
38
  # Streamlit app layout
39
  st.title("Health Assistant Chatbot")
 
40
 
41
- user_query = st.text_input("Enter your health query:")
 
 
42
 
43
- if st.button("Submit"):
44
- if user_query:
45
- response = assistant_chatbot(user_query)
46
- st.write(response)
47
- else:
48
- st.write("Please enter a query.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from datetime import datetime
2
+
3
  import streamlit as st
4
  import openai
5
  import os
 
12
  # Initialize OpenAI client
13
  client = openai.Client(api_key=api_key)
14
 
15
+ # Function to handle the chat with the assistant
16
+ def assistant_chatbot(user_query, thread_id=None):
17
+ if thread_id is None:
18
+ thread = client.beta.threads.create()
19
+ thread_id = thread.id
20
+ else:
21
+ thread_id = thread_id
22
 
23
  message = client.beta.threads.messages.create(
24
+ thread_id=thread_id,
25
  role="user",
26
  content=user_query,
27
  )
28
 
29
  run = client.beta.threads.runs.create(
30
+ thread_id=thread_id,
31
+ assistant_id="asst_6o7w7E8I6m0cVfM3zFzePcb9",
32
  instructions="Provide information related to health queries. Remember, this is not medical advice. For serious health concerns, consult a healthcare professional.",
33
  )
34
 
35
  # Wait for the run to complete
36
  while not run.completed_at:
37
+ run = client.beta.threads.runs.retrieve(thread_id=thread_id, run_id=run.id)
 
38
 
39
+ messages = client.beta.threads.messages.list(thread_id=thread_id)
40
  last_message = messages.data[0]
41
  response = last_message.content[0].text.value
42
+
43
+ return response, thread_id
44
+
45
+ # Streamlit app layout and logic
46
+ if 'thread_id' not in st.session_state:
47
+ st.session_state['thread_id'] = None
48
+
49
+
50
 
51
  # Streamlit app layout
52
  st.title("Health Assistant Chatbot")
53
+ st.sidebar.write("Ask any health-related questions. (This is not medical advice.)")
54
 
55
+ # Persistent state for messages
56
+ if 'messages' not in st.session_state:
57
+ st.session_state['messages'] = []
58
 
59
+ user_query = st.sidebar.text_input("Enter your health query:", key="query")
60
+
61
+ if st.sidebar.button("Submit"):
62
+ if user_query.strip():
63
+ response, thread_id = assistant_chatbot(user_query, st.session_state['thread_id'])
64
+ st.session_state['thread_id'] = thread_id
65
+ timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
66
+ st.session_state['messages'].append((timestamp, "User", user_query))
67
+ st.session_state['messages'].append((timestamp, "Bot", response))
68
+
69
+ if st.sidebar.button("Clear Chat"):
70
+ st.session_state['messages'] = []
71
+
72
+ # Chat container
73
+ chat_container = st.container()
74
+ with chat_container:
75
+ for timestamp, role, message in st.session_state['messages']:
76
+ st.markdown(f"**{timestamp} {role}**: {message}")
77
+
78
+ st.sidebar.markdown("---")
79
+ if st.sidebar.button("Export Chat"):
80
+ st.session_state['messages'] = []
81
+ st.sidebar.write("Disclaimer: This chatbot provides information, not medical advice.")