usmanyousaf commited on
Commit
cb45b55
1 Parent(s): 1626ec3

Upload 14 files

Browse files

in progress mode-3 voice assistance

.gitattributes CHANGED
@@ -33,3 +33,6 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ imgs/streamlit128.png filter=lfs diff=lfs merge=lfs -text
37
+ imgs/stsidebarimg.png filter=lfs diff=lfs merge=lfs -text
38
+ imgs/stuser.png filter=lfs diff=lfs merge=lfs -text
app.py ADDED
@@ -0,0 +1,351 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from statistics import mode
2
+ import streamlit as st
3
+ import logging
4
+ from PIL import Image, ImageEnhance
5
+ import base64
6
+ from groq import Groq
7
+ import urllib
8
+ logging.basicConfig(level=logging.INFO)
9
+
10
+
11
+
12
+ OPENAI_API_KEY = "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"
13
+ client = Groq(api_key=OPENAI_API_KEY)
14
+
15
+ st.set_page_config(
16
+ page_title="app.py",
17
+ page_icon="imgs/avatar_streamly.png",
18
+ layout="wide",
19
+ initial_sidebar_state="auto",
20
+
21
+ )
22
+
23
+ st.markdown(
24
+ """
25
+ <style>
26
+ .centered-title {
27
+ text-align: center;
28
+ font-size: 3em;
29
+ font-weight: bold;
30
+ }
31
+ </style>
32
+ """,
33
+ unsafe_allow_html=True
34
+ )
35
+ st.markdown('<div class="centered-title">Chat with Therapist</div>', unsafe_allow_html=True)
36
+
37
+ def generate_google_maps_link(location, search_term="therapists or hospitals near"):
38
+ """Generate a Google Maps search link for nearby therapists or hospitals."""
39
+ query = f"{search_term} {location}"
40
+ encoded_query = urllib.parse.quote(query)
41
+ google_maps_url = f"https://www.google.com/maps/search/{encoded_query}"
42
+ return google_maps_url
43
+
44
+
45
+ def img_to_base64(image_path):
46
+ """Convert an image to base64 encoding for display."""
47
+ try:
48
+ with open(image_path, "rb") as img_file:
49
+ return base64.b64encode(img_file.read()).decode()
50
+ except Exception as e:
51
+ logging.error(f"Error converting image to base64: {str(e)}")
52
+ return None
53
+
54
+ # Initialize session state
55
+ def initialize_session_state():
56
+ if "conversation_history" not in st.session_state:
57
+ st.session_state.conversation_history = []
58
+ if "history" not in st.session_state:
59
+ st.session_state.history = []
60
+ if "user_details" not in st.session_state:
61
+ st.session_state.user_details = {}
62
+
63
+ initialize_session_state()
64
+
65
+ def initialize_conversation():
66
+ """Initialize the conversation history with system and assistant messages for the AI therapist."""
67
+ assistant_message = "Hello! I am Your AI Therapist. How can I assist you today?"
68
+ st.session_state.conversation_history = [
69
+ {"role": "assistant", "content": assistant_message}
70
+ ]
71
+
72
+ def on_chat_submit(chat_input1):
73
+ user_input = chat_input1.strip()
74
+ st.session_state.conversation_history.append({"role": "user", "content": user_input})
75
+
76
+ fixed_prompt = [
77
+ {"role": "system", "content": """
78
+ You are an AI therapist named Virtual Therapist, designed to provide conversational support and mental health guidance in a clear, concise, and professional manner. Your responses should:
79
+ 1. Be short and to the point: Offer brief but supportive answers, especially in a therapeutic setting.
80
+ 2. Maintain a professional tone: Use a calm, empathetic, and professional approach in all interactions.
81
+ 3. Encourage open dialogue: Ask open-ended questions to understand the user’s concerns without over-explaining.
82
+ 4. Provide solutions or suggestions where appropriate: Offer coping techniques, resources, or quick advice.
83
+ 5. Stay respectful and non-judgmental: Ensure all responses reflect respect and care for the user's emotions and mental well-being.
84
+ 6. Avoid lengthy explanations: Provide short, clear guidance, and direct the user to professional help when needed.
85
+ """}
86
+ ]
87
+
88
+ conversation_history_with_prompt = fixed_prompt + st.session_state.conversation_history
89
+
90
+ assistant_reply = "I'm here to listen. Could you tell me more about how you're feeling?"
91
+ try:
92
+ model_engine = "llama3-8b-8192"
93
+ response = client.chat.completions.create(
94
+ messages=conversation_history_with_prompt,
95
+ model=model_engine
96
+ )
97
+ assistant_reply = response.choices[0].message.content
98
+ except Exception as e:
99
+ logging.error(f"Error occurred: {e}")
100
+ st.error(f"An error occurred: {str(e)}")
101
+
102
+ st.session_state.conversation_history.append({"role": "assistant", "content": assistant_reply})
103
+
104
+ def main():
105
+ """Main function to display Streamlit updates and handle chat interface."""
106
+ initialize_session_state()
107
+
108
+ if not st.session_state.conversation_history:
109
+ st.session_state.conversation_history = initialize_conversation()
110
+
111
+ st.markdown(
112
+ """
113
+ <style>
114
+ .cover-glow {
115
+ width: 100%;
116
+ height: auto;
117
+ padding: 3px;
118
+ box-shadow:
119
+ 0 0 5px #330000,
120
+ 0 0 10px #660000,
121
+ 0 0 15px #990000,
122
+ 0 0 20px #CC0000,
123
+ 0 0 25px #FF0000,
124
+ 0 0 30px #FF3333,
125
+ 0 0 35px #FF6666;
126
+ border-radius: 45px;
127
+ }
128
+ </style>
129
+ """,
130
+ unsafe_allow_html=True,
131
+ )
132
+
133
+ img_path = "imgs/sidebar_streamly_avatar.png"
134
+ img_base64 = img_to_base64(img_path)
135
+ if img_base64:
136
+ st.sidebar.markdown(
137
+ f'<img src="data:image/png;base64,{img_base64}" class="cover-glow">',
138
+ unsafe_allow_html=True,
139
+ )
140
+
141
+ st.sidebar.markdown("---")
142
+
143
+ mode = st.sidebar.radio("Select Mode:", options=["Visit Doctor", "Chat with Therapist", "Talk to Therapist"], index=1)
144
+ st.session_state.mode = mode
145
+ st.sidebar.markdown("---")
146
+
147
+
148
+ # Check if the mode is "Talk to Therapist"
149
+ if "mode" in st.session_state and st.session_state["mode"] == "Talk to Therapist":
150
+ # Styling template for the glowing effect
151
+ st.markdown(
152
+ """
153
+ <style>
154
+ .cover-glow {
155
+ width: 100%;
156
+ height: auto;
157
+ padding: 5px;
158
+ box-shadow:
159
+ 0 0 5px #330000,
160
+ 0 0 10px #660000,
161
+ 0 0 15px #990000,
162
+ 0 0 20px #CC0000,
163
+ 0 0 25px #FF0000,
164
+ 0 0 30px #FF3333,
165
+ 0 0 35px #FF6666;
166
+ border-radius: 10px;
167
+ }
168
+ .real-time {
169
+ font-family: Arial, sans-serif;
170
+ font-size: 16px;
171
+ line-height: 1.5;
172
+ color: white;
173
+ background-color: #1E1E1E;
174
+ padding: 15px;
175
+ border-radius: 10px;
176
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
177
+ }
178
+ .progress-message {
179
+ font-size: 18px;
180
+ color: white;
181
+ font-weight: bold;
182
+ margin-top: 1em;
183
+ text-align: center;
184
+ animation: blinker 1.5s linear infinite;
185
+ }
186
+ @keyframes blinker {
187
+ 50% {
188
+ opacity: 0.5;
189
+ }
190
+ }
191
+ </style>
192
+ """,
193
+ unsafe_allow_html=True
194
+ )
195
+
196
+ # Display header with glowing effect
197
+ st.markdown(
198
+ """
199
+ <p class="cover-glow" style="font-size:17px; color:white; background-color:black; font-weight:bold;
200
+ text-align: center; margin-top: 3em; margin-bottom: 3em;">
201
+ TALK TO YOUR AI THERAPIST
202
+ </p>
203
+ """,
204
+ unsafe_allow_html=True
205
+ )
206
+
207
+ # st.write("### Real Time Live Therapy Session")
208
+
209
+ # In-progress message
210
+ st.markdown(
211
+ """
212
+ <style>
213
+ .progress-message {
214
+ font-size: 35px; /* Increased font size */
215
+ color: white;
216
+ font-weight: bold; /* Bold styling */
217
+ margin-top: 1em;
218
+ text-align: center;
219
+ animation: blinker 1.5s linear infinite;
220
+ }
221
+ @keyframes blinker {
222
+ 50% {
223
+ opacity: 0.5;
224
+ }
225
+ }
226
+ </style>
227
+ <p class="progress-message">📞 Real Time Live Therapy Session ☎️</p>
228
+ <p class="progress-message">In Progress ⌛️⌛️</p>
229
+
230
+ """,
231
+ unsafe_allow_html=True
232
+ )
233
+
234
+ # Simulate real-time communication
235
+ # st.write("### Real Time Live Therapy Session")
236
+
237
+
238
+
239
+
240
+
241
+ # Initialize location input field
242
+ location = ""
243
+ # Location input based on mode
244
+ if "mode" in st.session_state and st.session_state["mode"] == "Visit Doctor":
245
+ st.markdown(
246
+ """
247
+ <style>
248
+ .cover-glow {
249
+ width: 100%;
250
+ height: auto;
251
+ padding: 5px;
252
+ box-shadow:
253
+ 0 0 5px #330000,
254
+ 0 0 10px #660000,
255
+ 0 0 15px #990000,
256
+ 0 0 20px #CC0000,
257
+ 0 0 25px #FF0000,
258
+ 0 0 30px #FF3333,
259
+ 0 0 35px #FF6666;
260
+ border-radius: 10px;
261
+ }
262
+ </style>
263
+ """,
264
+ unsafe_allow_html=True
265
+ )
266
+ st.markdown(
267
+ f"""
268
+ <p class="cover-glow" style="font-size:17px; color:white; background-color:black; font-weight:bold;
269
+ text-align: center; margin-top: 3em; margin-bottom: 3em;">
270
+ THERAPIST OR DOCTOR NEAR ME <span style="color:white;">{location.strip()}</span>
271
+ </p>
272
+ """,
273
+ unsafe_allow_html=True
274
+ )
275
+
276
+ # location = st.chat_input("Enter your location here...")
277
+ # if location:
278
+ # st.session_state.user_details["location"] = location
279
+ # if location.strip():
280
+ # google_maps_link = f"https://www.google.com/maps/search/{urllib.parse.quote('therapists or hospitals near ' + location)}"
281
+ # st.markdown(f"Find a licensed therapist or doctor near **{location}**: [Click here to view on Google Maps]({google_maps_link})")
282
+
283
+
284
+ # Initialize session state for storing chat messages
285
+ if "messages" not in st.session_state:
286
+ st.session_state["messages"] = []
287
+
288
+ user_avatar = "imgs/googlemap.png"
289
+ assistant_avatar = "imgs/botreq.png"
290
+
291
+ # Chat input field for location
292
+ location = st.chat_input("Enter your location here...")
293
+
294
+ # Process input if available
295
+ if location:
296
+ # Save user's location input
297
+ st.session_state["messages"].append({"role": "user", "content": location})
298
+
299
+ # Generate Google Maps link and add it as assistant's response
300
+ if location.strip():
301
+ google_maps_link = f"https://www.google.com/maps/search/{urllib.parse.quote('therapists or hospitals near ' + location)}"
302
+ bot_reply = f"Find a licensed therapist or doctor near **{location}**: [Click here to view on Google Maps]({google_maps_link})"
303
+ st.session_state["messages"].append({"role": "assistant", "content": bot_reply})
304
+
305
+ # Display chat history with avatars for user and assistant
306
+ for message in st.session_state["messages"]:
307
+ role = message["role"]
308
+ avatar_image = assistant_avatar if role == "assistant" else user_avatar
309
+ with st.chat_message(role.capitalize(), avatar=avatar_image):
310
+ st.write(message["content"])
311
+
312
+
313
+ show_basic_info = st.sidebar.checkbox("Quick Chat ", value=False)
314
+ if show_basic_info:
315
+ st.sidebar.markdown("""
316
+ ### Quick Chat Guidance
317
+ - **Share Your Feelings**: Express what you're feeling, like "I'm stressed" or "I'm overwhelmed."
318
+ - **How to Respond**: The AI will listen and offer support. Share more if you wish.
319
+ - **Be Open**: Take your time and talk about what's on your mind.
320
+ - **Ask for Help**: If unsure, say "I need help with stress" and the AI will guide you.
321
+ """)
322
+
323
+ show_advanced_info = st.sidebar.checkbox("Comprehensive Guidance", value=False)
324
+ if show_advanced_info:
325
+ st.sidebar.markdown("""
326
+ ### Comprehensive Guidance
327
+ - **Mental Health**:
328
+ - "Seeking help is a sign of strength. Small steps matter."
329
+ - "Therapists can guide you through tough times."
330
+ - "You deserve to feel better."
331
+ - **When to Seek Help**:
332
+ - "Feeling overwhelmed? A therapist can support you."
333
+ - "Reach out to a doctor if mental health feels too much."
334
+ """)
335
+
336
+ if mode == "Chat with Therapist":
337
+ if not st.session_state.conversation_history:
338
+ initialize_conversation()
339
+
340
+ chat_input1 = st.chat_input("Type your message here...")
341
+ if chat_input1:
342
+ on_chat_submit(chat_input1)
343
+
344
+ for message in st.session_state.conversation_history[-10:]:
345
+ role = message["role"]
346
+ avatar_image = "imgs/avatar_streamly.png" if role == "assistant" else "imgs/stuser.png"
347
+ with st.chat_message(role.capitalize(), avatar=avatar_image):
348
+ st.write(message["content"])
349
+
350
+ if __name__ == "__main__":
351
+ main()
imgs/.DS_Store ADDED
Binary file (8.2 kB). View file
 
imgs/avatar_streamly.png ADDED
imgs/bot_request.png ADDED
imgs/botreq.png ADDED
imgs/find_loc_req.png ADDED
imgs/googlemap.png ADDED
imgs/sidebar_streamly_avatar.png ADDED
imgs/slogo.png ADDED
imgs/streamlit128.png ADDED

Git LFS Details

  • SHA256: e14d67db7a9c63d5c0504af4d138f638e06c7e5997a5d716e2b1cea09d2e888f
  • Pointer size: 132 Bytes
  • Size of remote file: 1.12 MB
imgs/streamly_readme.png ADDED
imgs/stsidebarimg.png ADDED

Git LFS Details

  • SHA256: 9c6fcbf201cb007468627caa11f396240c1c14ba89d1145af1ceb1cf886caf6d
  • Pointer size: 132 Bytes
  • Size of remote file: 2.52 MB
imgs/stuser.png ADDED

Git LFS Details

  • SHA256: 07b308ca811337695a63492a49319cbcd125bb08e204eccbae0470f96162f37e
  • Pointer size: 132 Bytes
  • Size of remote file: 1.08 MB
requirements.txt ADDED
@@ -0,0 +1,320 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ streamlit
2
+ streamlit-chat
3
+ openai
4
+ requests
5
+ Image
6
+ langchain
7
+ groq
8
+ PIL
9
+ whisper
10
+ pyttsx3
11
+ wavio
12
+ numpy
13
+ sounddevice
14
+
15
+ absl-py==2.1.0
16
+ aiohappyeyeballs==2.4.3
17
+ aiohttp==3.10.10
18
+ aioice==0.9.0
19
+ aiortc==1.9.0
20
+ aiosignal==1.3.1
21
+ altair==5.4.1
22
+ annotated-types==0.7.0
23
+ anyio==4.6.0
24
+ astunparse==1.6.3
25
+ attrs==24.2.0
26
+ av==12.3.0
27
+ beautifulsoup4==4.12.3
28
+ blinker==1.9.0
29
+ cachetools==5.5.0
30
+ certifi==2024.8.30
31
+ cffi==1.17.1
32
+ charset-normalizer==3.3.2
33
+ click==8.1.7
34
+ cryptography==43.0.1
35
+ dataclasses-json==0.6.7
36
+ distro==1.9.0
37
+ dnspython==2.7.0
38
+ filelock==3.16.1
39
+ Flask==3.1.0
40
+ flatbuffers==24.3.25
41
+ frozenlist==1.4.1
42
+ fsspec==2024.9.0
43
+ gast==0.6.0
44
+ gitdb==4.0.11
45
+ GitPython==3.1.43
46
+ google-crc32c==1.6.0
47
+ google-pasta==0.2.0
48
+ greenlet==3.1.1
49
+ groq==0.11.0
50
+ grpcio==1.67.1
51
+ gTTS==2.5.4
52
+ h11==0.14.0
53
+ h5py==3.12.1
54
+ httpcore==1.0.6
55
+ httpx==0.27.2
56
+ huggingface-hub==0.25.2
57
+ idna==3.10
58
+ ifaddr==0.2.0
59
+ itsdangerous==2.2.0
60
+ Jinja2==3.1.4
61
+ joblib==1.4.2
62
+ jsonpatch==1.33
63
+ jsonpointer==3.0.0
64
+ jsonschema==4.23.0
65
+ jsonschema-specifications==2023.12.1
66
+ keras==3.6.0
67
+ langchain==0.3.3
68
+ langchain-community==0.3.2
69
+ langchain-core==0.3.10
70
+ langchain-huggingface==0.1.0
71
+ langchain-text-splitters==0.3.0
72
+ langsmith==0.1.135
73
+ libclang==18.1.1
74
+ Markdown==3.7
75
+ markdown-it-py==3.0.0
76
+ MarkupSafe==2.1.5
77
+ marshmallow==3.22.0
78
+ mdurl==0.1.2
79
+ ml-dtypes==0.3.2
80
+ mpmath==1.3.0
81
+ multidict==6.1.0
82
+ mypy-extensions==1.0.0
83
+ namex==0.0.8
84
+ narwhals==1.9.1
85
+ networkx==3.4.1
86
+ numpy==1.26.4
87
+ opt_einsum==3.4.0
88
+ optree==0.13.0
89
+ orjson==3.10.7
90
+ outcome==1.3.0.post0
91
+ packaging==24.1
92
+ pandas==2.2.3
93
+ pdfminer.six==20231228
94
+ pdfplumber==0.11.4
95
+ pillow==10.4.0
96
+ propcache==0.2.0
97
+ protobuf==4.25.5
98
+ pyarrow==17.0.0
99
+ PyAudio==0.2.14
100
+ pycparser==2.22
101
+ pydantic==2.9.2
102
+ pydantic-settings==2.5.2
103
+ pydantic_core==2.23.4
104
+ pydeck==0.9.1
105
+ pydub==0.25.1
106
+ pyee==12.0.0
107
+ Pygments==2.18.0
108
+ pylibsrtp==0.10.0
109
+ pyobjc==10.3.1
110
+ pyobjc-core==10.3.1
111
+ pyobjc-framework-Accessibility==10.3.1
112
+ pyobjc-framework-Accounts==10.3.1
113
+ pyobjc-framework-AddressBook==10.3.1
114
+ pyobjc-framework-AdServices==10.3.1
115
+ pyobjc-framework-AdSupport==10.3.1
116
+ pyobjc-framework-AppleScriptKit==10.3.1
117
+ pyobjc-framework-AppleScriptObjC==10.3.1
118
+ pyobjc-framework-ApplicationServices==10.3.1
119
+ pyobjc-framework-AppTrackingTransparency==10.3.1
120
+ pyobjc-framework-AudioVideoBridging==10.3.1
121
+ pyobjc-framework-AuthenticationServices==10.3.1
122
+ pyobjc-framework-AutomaticAssessmentConfiguration==10.3.1
123
+ pyobjc-framework-Automator==10.3.1
124
+ pyobjc-framework-AVFoundation==10.3.1
125
+ pyobjc-framework-AVKit==10.3.1
126
+ pyobjc-framework-AVRouting==10.3.1
127
+ pyobjc-framework-BackgroundAssets==10.3.1
128
+ pyobjc-framework-BrowserEngineKit==10.3.1
129
+ pyobjc-framework-BusinessChat==10.3.1
130
+ pyobjc-framework-CalendarStore==10.3.1
131
+ pyobjc-framework-CallKit==10.3.1
132
+ pyobjc-framework-CFNetwork==10.3.1
133
+ pyobjc-framework-Cinematic==10.3.1
134
+ pyobjc-framework-ClassKit==10.3.1
135
+ pyobjc-framework-CloudKit==10.3.1
136
+ pyobjc-framework-Cocoa==10.3.1
137
+ pyobjc-framework-Collaboration==10.3.1
138
+ pyobjc-framework-ColorSync==10.3.1
139
+ pyobjc-framework-Contacts==10.3.1
140
+ pyobjc-framework-ContactsUI==10.3.1
141
+ pyobjc-framework-CoreAudio==10.3.1
142
+ pyobjc-framework-CoreAudioKit==10.3.1
143
+ pyobjc-framework-CoreBluetooth==10.3.1
144
+ pyobjc-framework-CoreData==10.3.1
145
+ pyobjc-framework-CoreHaptics==10.3.1
146
+ pyobjc-framework-CoreLocation==10.3.1
147
+ pyobjc-framework-CoreMedia==10.3.1
148
+ pyobjc-framework-CoreMediaIO==10.3.1
149
+ pyobjc-framework-CoreMIDI==10.3.1
150
+ pyobjc-framework-CoreML==10.3.1
151
+ pyobjc-framework-CoreMotion==10.3.1
152
+ pyobjc-framework-CoreServices==10.3.1
153
+ pyobjc-framework-CoreSpotlight==10.3.1
154
+ pyobjc-framework-CoreText==10.3.1
155
+ pyobjc-framework-CoreWLAN==10.3.1
156
+ pyobjc-framework-CryptoTokenKit==10.3.1
157
+ pyobjc-framework-DataDetection==10.3.1
158
+ pyobjc-framework-DeviceCheck==10.3.1
159
+ pyobjc-framework-DictionaryServices==10.3.1
160
+ pyobjc-framework-DiscRecording==10.3.1
161
+ pyobjc-framework-DiscRecordingUI==10.3.1
162
+ pyobjc-framework-DiskArbitration==10.3.1
163
+ pyobjc-framework-DVDPlayback==10.3.1
164
+ pyobjc-framework-EventKit==10.3.1
165
+ pyobjc-framework-ExceptionHandling==10.3.1
166
+ pyobjc-framework-ExecutionPolicy==10.3.1
167
+ pyobjc-framework-ExtensionKit==10.3.1
168
+ pyobjc-framework-ExternalAccessory==10.3.1
169
+ pyobjc-framework-FileProvider==10.3.1
170
+ pyobjc-framework-FileProviderUI==10.3.1
171
+ pyobjc-framework-FinderSync==10.3.1
172
+ pyobjc-framework-FSEvents==10.3.1
173
+ pyobjc-framework-GameCenter==10.3.1
174
+ pyobjc-framework-GameController==10.3.1
175
+ pyobjc-framework-GameKit==10.3.1
176
+ pyobjc-framework-GameplayKit==10.3.1
177
+ pyobjc-framework-HealthKit==10.3.1
178
+ pyobjc-framework-ImageCaptureCore==10.3.1
179
+ pyobjc-framework-InputMethodKit==10.3.1
180
+ pyobjc-framework-InstallerPlugins==10.3.1
181
+ pyobjc-framework-InstantMessage==10.3.1
182
+ pyobjc-framework-Intents==10.3.1
183
+ pyobjc-framework-IntentsUI==10.3.1
184
+ pyobjc-framework-IOBluetooth==10.3.1
185
+ pyobjc-framework-IOBluetoothUI==10.3.1
186
+ pyobjc-framework-IOSurface==10.3.1
187
+ pyobjc-framework-iTunesLibrary==10.3.1
188
+ pyobjc-framework-KernelManagement==10.3.1
189
+ pyobjc-framework-LatentSemanticMapping==10.3.1
190
+ pyobjc-framework-LaunchServices==10.3.1
191
+ pyobjc-framework-libdispatch==10.3.1
192
+ pyobjc-framework-libxpc==10.3.1
193
+ pyobjc-framework-LinkPresentation==10.3.1
194
+ pyobjc-framework-LocalAuthentication==10.3.1
195
+ pyobjc-framework-LocalAuthenticationEmbeddedUI==10.3.1
196
+ pyobjc-framework-MailKit==10.3.1
197
+ pyobjc-framework-MapKit==10.3.1
198
+ pyobjc-framework-MediaAccessibility==10.3.1
199
+ pyobjc-framework-MediaLibrary==10.3.1
200
+ pyobjc-framework-MediaPlayer==10.3.1
201
+ pyobjc-framework-MediaToolbox==10.3.1
202
+ pyobjc-framework-Metal==10.3.1
203
+ pyobjc-framework-MetalFX==10.3.1
204
+ pyobjc-framework-MetalKit==10.3.1
205
+ pyobjc-framework-MetalPerformanceShaders==10.3.1
206
+ pyobjc-framework-MetalPerformanceShadersGraph==10.3.1
207
+ pyobjc-framework-MetricKit==10.3.1
208
+ pyobjc-framework-MLCompute==10.3.1
209
+ pyobjc-framework-ModelIO==10.3.1
210
+ pyobjc-framework-MultipeerConnectivity==10.3.1
211
+ pyobjc-framework-NaturalLanguage==10.3.1
212
+ pyobjc-framework-NetFS==10.3.1
213
+ pyobjc-framework-Network==10.3.1
214
+ pyobjc-framework-NetworkExtension==10.3.1
215
+ pyobjc-framework-NotificationCenter==10.3.1
216
+ pyobjc-framework-OpenDirectory==10.3.1
217
+ pyobjc-framework-OSAKit==10.3.1
218
+ pyobjc-framework-OSLog==10.3.1
219
+ pyobjc-framework-PassKit==10.3.1
220
+ pyobjc-framework-PencilKit==10.3.1
221
+ pyobjc-framework-PHASE==10.3.1
222
+ pyobjc-framework-Photos==10.3.1
223
+ pyobjc-framework-PhotosUI==10.3.1
224
+ pyobjc-framework-PreferencePanes==10.3.1
225
+ pyobjc-framework-PushKit==10.3.1
226
+ pyobjc-framework-Quartz==10.3.1
227
+ pyobjc-framework-QuickLookThumbnailing==10.3.1
228
+ pyobjc-framework-ReplayKit==10.3.1
229
+ pyobjc-framework-SafariServices==10.3.1
230
+ pyobjc-framework-SafetyKit==10.3.1
231
+ pyobjc-framework-SceneKit==10.3.1
232
+ pyobjc-framework-ScreenCaptureKit==10.3.1
233
+ pyobjc-framework-ScreenSaver==10.3.1
234
+ pyobjc-framework-ScreenTime==10.3.1
235
+ pyobjc-framework-ScriptingBridge==10.3.1
236
+ pyobjc-framework-SearchKit==10.3.1
237
+ pyobjc-framework-Security==10.3.1
238
+ pyobjc-framework-SecurityFoundation==10.3.1
239
+ pyobjc-framework-SecurityInterface==10.3.1
240
+ pyobjc-framework-SensitiveContentAnalysis==10.3.1
241
+ pyobjc-framework-ServiceManagement==10.3.1
242
+ pyobjc-framework-SharedWithYou==10.3.1
243
+ pyobjc-framework-SharedWithYouCore==10.3.1
244
+ pyobjc-framework-ShazamKit==10.3.1
245
+ pyobjc-framework-Social==10.3.1
246
+ pyobjc-framework-SoundAnalysis==10.3.1
247
+ pyobjc-framework-Speech==10.3.1
248
+ pyobjc-framework-SpriteKit==10.3.1
249
+ pyobjc-framework-StoreKit==10.3.1
250
+ pyobjc-framework-Symbols==10.3.1
251
+ pyobjc-framework-SyncServices==10.3.1
252
+ pyobjc-framework-SystemConfiguration==10.3.1
253
+ pyobjc-framework-SystemExtensions==10.3.1
254
+ pyobjc-framework-ThreadNetwork==10.3.1
255
+ pyobjc-framework-UniformTypeIdentifiers==10.3.1
256
+ pyobjc-framework-UserNotifications==10.3.1
257
+ pyobjc-framework-UserNotificationsUI==10.3.1
258
+ pyobjc-framework-VideoSubscriberAccount==10.3.1
259
+ pyobjc-framework-VideoToolbox==10.3.1
260
+ pyobjc-framework-Virtualization==10.3.1
261
+ pyobjc-framework-Vision==10.3.1
262
+ pyobjc-framework-WebKit==10.3.1
263
+ pyOpenSSL==24.2.1
264
+ PyPDF2==3.0.1
265
+ pypdfium2==4.30.0
266
+ PySocks==1.7.1
267
+ python-dateutil==2.9.0.post0
268
+ python-dotenv==1.0.1
269
+ pyttsx3==2.98
270
+ pytz==2024.2
271
+ PyYAML==6.0.2
272
+ referencing==0.35.1
273
+ regex==2024.9.11
274
+ requests==2.32.3
275
+ requests-toolbelt==1.0.0
276
+ rich==13.9.2
277
+ rpds-py==0.20.0
278
+ safetensors==0.4.5
279
+ scikit-learn==1.5.2
280
+ scipy==1.14.1
281
+ selenium==4.25.0
282
+ sentence-transformers==3.2.0
283
+ setuptools==75.3.0
284
+ six==1.16.0
285
+ smmap==5.0.1
286
+ sniffio==1.3.1
287
+ sortedcontainers==2.4.0
288
+ sounddevice==0.5.1
289
+ soundfile==0.12.1
290
+ soupsieve==2.6
291
+ SpeechRecognition==3.11.0
292
+ SQLAlchemy==2.0.35
293
+ streamlit==1.39.0
294
+ streamlit-webrtc==0.47.9
295
+ sympy==1.13.3
296
+ tenacity==8.5.0
297
+ tensorboard==2.16.2
298
+ tensorboard-data-server==0.7.2
299
+ tensorflow==2.16.2
300
+ termcolor==2.5.0
301
+ threadpoolctl==3.5.0
302
+ tk==0.1.0
303
+ tokenizers==0.20.1
304
+ toml==0.10.2
305
+ torch==2.2.2
306
+ tornado==6.4.1
307
+ tqdm==4.66.5
308
+ transformers==4.45.2
309
+ trio==0.26.2
310
+ trio-websocket==0.11.1
311
+ typing-inspect==0.9.0
312
+ typing_extensions==4.12.2
313
+ tzdata==2024.2
314
+ urllib3==2.2.3
315
+ websocket-client==1.8.0
316
+ Werkzeug==3.1.3
317
+ wheel==0.45.0
318
+ wrapt==1.16.0
319
+ wsproto==1.2.0
320
+ yarl==1.15.2