Vela commited on
Commit
d0c513b
Β·
1 Parent(s): 93faeb0

Created project

Browse files
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .venv
README.md CHANGED
@@ -5,7 +5,7 @@ colorFrom: gray
5
  colorTo: indigo
6
  sdk: streamlit
7
  sdk_version: 1.42.1
8
- app_file: app.py
9
  pinned: false
10
  ---
11
 
 
5
  colorTo: indigo
6
  sdk: streamlit
7
  sdk_version: 1.42.1
8
+ app_file: src/app.py
9
  pinned: false
10
  ---
11
 
requirements.txt ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ streamlit
2
+ pandas
3
+ groq
src/__pycache__/main.cpython-312.pyc ADDED
Binary file (434 Bytes). View file
 
src/app.py ADDED
@@ -0,0 +1,20 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from streamlit_app import model,home_page
3
+
4
+
5
+ def main():
6
+
7
+ home_page.page_config()
8
+
9
+ home_page.page_title()
10
+
11
+ username = home_page.get_or_greet_user_name()
12
+
13
+ if username:
14
+
15
+ home_page.display_chat()
16
+
17
+ home_page.handle_user_input()
18
+
19
+ if __name__ == "__main__":
20
+ main()
src/streamlit_app/__pycache__/home_page.cpython-312.pyc ADDED
Binary file (5.14 kB). View file
 
src/streamlit_app/__pycache__/model.cpython-312.pyc ADDED
Binary file (1.62 kB). View file
 
src/streamlit_app/home_page.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from streamlit_app import model
3
+ from utils import logger
4
+
5
+ if "messages" not in st.session_state:
6
+ st.session_state.messages = []
7
+
8
+ def page_config():
9
+ st.set_page_config(page_title="Physio Assist", layout="wide")
10
+ logger.log("info","Configuring the page layout and title")
11
+
12
+ def page_title():
13
+ st.title("πŸ‹οΈβ€β™‚οΈπŸ§‘β€βš•οΈ Welcome to Physio Assist: Your Physical Therapy Companion")
14
+ logger.log("info", "Setting the title to 'Physio Assist: Your Physical Therapy Companion'")
15
+
16
+ def get_or_greet_user_name():
17
+ if 'user_name' not in st.session_state:
18
+ st.session_state.user_name = None
19
+ logger.log("info","user_name not found in session_state, setting to None.")
20
+
21
+ if st.session_state.user_name is None:
22
+ logger.log("info","user_name is None, requesting user input.")
23
+ user_name = st.text_input("Please let me know your name:",
24
+ placeholder="Enter your name buddy")
25
+ if user_name:
26
+ st.session_state.user_name = user_name
27
+ logger.log("info", f"User entered name: {user_name}. Setting session_state.user_name.")
28
+ st.rerun()
29
+ else:
30
+ logger.log("info", f"User already entered a name: {st.session_state.user_name}. Displaying greeting.")
31
+ return st._bottom.subheader(f"Hello {st.session_state.user_name}! How can I assist you today?")
32
+
33
+ def display_chat():
34
+ logger.log("info","Displaying the chat history.")
35
+ for message in st.session_state.messages:
36
+ with st.chat_message(message["role"]):
37
+ st.markdown(message["content"])
38
+ logger.log("info", f"Displayed {len(st.session_state.messages)} messages from the chat history.")
39
+
40
+ def handle_user_input():
41
+ logger.log("info", "Waiting for user input...")
42
+ prompt = st.chat_input("Ask me anything related to physiotherapy. E.g., 'How can I recover from a sprained ankle?'")
43
+
44
+ if prompt :
45
+ with st.chat_message("user"):
46
+ st.markdown(prompt)
47
+ if prompt:
48
+ st.session_state.messages.append({"role": "user", "content": prompt})
49
+
50
+ with st.spinner("Processing your query..."):
51
+ try:
52
+ response = model.get_physiotherapy_assistant_response(prompt)
53
+ with st.chat_message("assistant"):
54
+ st.markdown(response)
55
+ st.session_state.messages.append({"role": "assistant", "content": response})
56
+ logger.log("info",f"Assistant response: {response}")
57
+ except Exception as e:
58
+ st.error(f"An error occurred while processing your query: {str(e)}")
59
+ logger.log("error", f"Error processing user query: {str(e)}")
src/streamlit_app/model.py ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from groq import Groq
2
+
3
+ client = Groq(
4
+ api_key="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",
5
+ )
6
+
7
+ def get_physiotherapy_assistant_response(prompt : str):
8
+ try:
9
+ system_message = """You are a helpful physiotherapy assistant, trained to provide useful information about exercises, recovery, and treatments.
10
+ You can help users with various physical therapy-related queries."""
11
+
12
+ if not prompt or len(prompt.strip()) < 5:
13
+ return "Please provide more details about your physiotherapy question. I need more context to assist you effectively."
14
+
15
+ chat_completion = client.chat.completions.create(
16
+ messages=[
17
+ {"role": "system", "content": system_message},
18
+ {"role": "user", "content": prompt},
19
+ ],
20
+ model="llama-3.3-70b-versatile",
21
+ )
22
+ assistant_response = chat_completion.choices[0].message.content
23
+ return assistant_response
24
+ except Exception as e:
25
+ return f"An error occurred while processing your request: {str(e)}"
src/utils/__pycache__/logger.cpython-312.pyc ADDED
Binary file (1.21 kB). View file
 
src/utils/logger.py ADDED
@@ -0,0 +1,22 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import logging
2
+
3
+ logging.basicConfig(
4
+ level=logging.INFO,
5
+ format='%(asctime)s - %(levelname)s - %(message)s',
6
+ datefmt='%Y-%m-%d %H:%M')
7
+
8
+ def log(log_type,message):
9
+ try:
10
+ log_type = log_type.lower()
11
+ if log_type == "info":
12
+ return logging.info(message)
13
+ elif log_type == "debug":
14
+ return logging.debug(message)
15
+ elif log_type == "warning":
16
+ return logging.error(message)
17
+ elif log_type == "critical":
18
+ return logging.critical(message)
19
+ elif log_type == "error":
20
+ return logging.error(message)
21
+ except Exception as e:
22
+ return f"Invalid log type.Error : {e}"