PraisonAI 0.0.43__py3-none-any.whl → 0.0.44__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of PraisonAI might be problematic. Click here for more details.

praisonai/deploy.py CHANGED
@@ -56,7 +56,7 @@ class CloudDeployer:
56
56
  file.write("FROM python:3.11-slim\n")
57
57
  file.write("WORKDIR /app\n")
58
58
  file.write("COPY . .\n")
59
- file.write("RUN pip install flask praisonai==0.0.43 gunicorn markdown\n")
59
+ file.write("RUN pip install flask praisonai==0.0.44 gunicorn markdown\n")
60
60
  file.write("EXPOSE 8080\n")
61
61
  file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
62
62
 
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
praisonai/ui/chat.py CHANGED
@@ -11,6 +11,22 @@ load_dotenv()
11
11
  import chainlit.data as cl_data
12
12
  from chainlit.step import StepDict
13
13
  from literalai.helper import utc_now
14
+ import logging
15
+
16
+ # Set up logging
17
+ logger = logging.getLogger(__name__)
18
+ log_level = os.getenv("LOGLEVEL", "INFO").upper()
19
+ logger.handlers = []
20
+
21
+ # Set up logging to console
22
+ console_handler = logging.StreamHandler()
23
+ console_handler.setLevel(log_level)
24
+ console_formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
25
+ console_handler.setFormatter(console_formatter)
26
+ logger.addHandler(console_handler)
27
+
28
+ # Set the logging level for the logger
29
+ logger.setLevel(log_level)
14
30
 
15
31
  now = utc_now()
16
32
 
@@ -43,9 +59,51 @@ def initialize_db():
43
59
  FOREIGN KEY (threadId) REFERENCES threads (id)
44
60
  )
45
61
  ''')
62
+ cursor.execute('''
63
+ CREATE TABLE IF NOT EXISTS settings (
64
+ id INTEGER PRIMARY KEY AUTOINCREMENT,
65
+ key TEXT UNIQUE,
66
+ value TEXT
67
+ )
68
+ ''')
69
+ conn.commit()
70
+ conn.close()
71
+
72
+ def save_setting(key: str, value: str):
73
+ """Saves a setting to the database.
74
+
75
+ Args:
76
+ key: The setting key.
77
+ value: The setting value.
78
+ """
79
+ conn = sqlite3.connect(DB_PATH)
80
+ cursor = conn.cursor()
81
+ cursor.execute(
82
+ """
83
+ INSERT OR REPLACE INTO settings (id, key, value)
84
+ VALUES ((SELECT id FROM settings WHERE key = ?), ?, ?)
85
+ """,
86
+ (key, key, value),
87
+ )
46
88
  conn.commit()
47
89
  conn.close()
48
90
 
91
+ def load_setting(key: str) -> str:
92
+ """Loads a setting from the database.
93
+
94
+ Args:
95
+ key: The setting key.
96
+
97
+ Returns:
98
+ The setting value, or None if the key is not found.
99
+ """
100
+ conn = sqlite3.connect(DB_PATH)
101
+ cursor = conn.cursor()
102
+ cursor.execute('SELECT value FROM settings WHERE key = ?', (key,))
103
+ result = cursor.fetchone()
104
+ conn.close()
105
+ return result[0] if result else None
106
+
49
107
  def save_thread_to_db(thread):
50
108
  conn = sqlite3.connect(DB_PATH)
51
109
  cursor = conn.cursor()
@@ -57,7 +115,7 @@ def save_thread_to_db(thread):
57
115
  # No steps to save as steps are empty in the provided thread data
58
116
  conn.commit()
59
117
  conn.close()
60
- print("saved")
118
+ logger.debug("Thread saved to DB")
61
119
 
62
120
  def update_thread_in_db(thread):
63
121
  conn = sqlite3.connect(DB_PATH)
@@ -70,7 +128,7 @@ def update_thread_in_db(thread):
70
128
  ''', (thread['id'], thread['name'], thread['createdAt'], thread['userId'], thread['userIdentifier']))
71
129
 
72
130
  # Fetch message_history from metadata
73
- message_history = thread['metadata']['message_history']
131
+ message_history = cl.user_session.get("message_history", [])
74
132
 
75
133
  # Ensure user messages come first followed by assistant messages
76
134
  user_messages = [msg for msg in message_history if msg['role'] == 'user']
@@ -102,15 +160,29 @@ def update_thread_in_db(thread):
102
160
 
103
161
  conn.commit()
104
162
  conn.close()
163
+ logger.debug("Thread updated in DB")
164
+
165
+ def delete_thread_from_db(thread_id: str):
166
+ """Deletes a thread and its steps from the database.
167
+
168
+ Args:
169
+ thread_id: The ID of the thread to delete.
170
+ """
171
+ conn = sqlite3.connect(DB_PATH)
172
+ cursor = conn.cursor()
173
+ cursor.execute('DELETE FROM threads WHERE id = ?', (thread_id,))
174
+ cursor.execute('DELETE FROM steps WHERE threadId = ?', (thread_id,))
175
+ conn.commit()
176
+ conn.close()
105
177
 
106
178
  def load_threads_from_db():
107
179
  conn = sqlite3.connect(DB_PATH)
108
180
  cursor = conn.cursor()
109
- cursor.execute('SELECT * FROM threads')
181
+ cursor.execute('SELECT * FROM threads ORDER BY createdAt ASC')
110
182
  thread_rows = cursor.fetchall()
111
183
  threads = []
112
184
  for thread_row in thread_rows:
113
- cursor.execute('SELECT * FROM steps WHERE threadId = ?', (thread_row[0],))
185
+ cursor.execute('SELECT * FROM steps WHERE threadId = ? ORDER BY createdAt ASC', (thread_row[0],))
114
186
  step_rows = cursor.fetchall()
115
187
  steps = []
116
188
  for step_row in step_rows:
@@ -131,6 +203,7 @@ def load_threads_from_db():
131
203
  "steps": steps
132
204
  })
133
205
  conn.close()
206
+ logger.debug("Threads loaded from DB")
134
207
  return threads
135
208
 
136
209
  # Initialize the database
@@ -141,9 +214,11 @@ deleted_thread_ids = [] # type: List[str]
141
214
 
142
215
  class TestDataLayer(cl_data.BaseDataLayer):
143
216
  async def get_user(self, identifier: str):
217
+ logger.debug(f"Getting user: {identifier}")
144
218
  return cl.PersistedUser(id="test", createdAt=now, identifier=identifier)
145
219
 
146
220
  async def create_user(self, user: cl.User):
221
+ logger.debug(f"Creating user: {user.identifier}")
147
222
  return cl.PersistedUser(id="test", createdAt=now, identifier=user.identifier)
148
223
 
149
224
  async def update_thread(
@@ -154,6 +229,7 @@ class TestDataLayer(cl_data.BaseDataLayer):
154
229
  metadata: Optional[Dict] = None,
155
230
  tags: Optional[List[str]] = None,
156
231
  ):
232
+ logger.debug(f"Updating thread: {thread_id}")
157
233
  thread = next((t for t in thread_history if t["id"] == thread_id), None)
158
234
  if thread:
159
235
  if name:
@@ -162,10 +238,12 @@ class TestDataLayer(cl_data.BaseDataLayer):
162
238
  thread["metadata"] = metadata
163
239
  if tags:
164
240
  thread["tags"] = tags
165
- update_thread_in_db(thread)
241
+
242
+ logger.debug(f"Thread: {thread}")
166
243
  cl.user_session.set("message_history", thread['metadata']['message_history'])
167
244
  cl.user_session.set("thread_id", thread["id"])
168
- print("Updated")
245
+ update_thread_in_db(thread)
246
+ logger.debug(f"Thread updated: {thread_id}")
169
247
 
170
248
  else:
171
249
  thread_history.append(
@@ -191,6 +269,7 @@ class TestDataLayer(cl_data.BaseDataLayer):
191
269
  "steps": [],
192
270
  }
193
271
  save_thread_to_db(thread)
272
+ logger.debug(f"Thread created: {thread_id}")
194
273
 
195
274
  @cl_data.queue_until_user_message()
196
275
  async def create_step(self, step_dict: StepDict):
@@ -204,48 +283,79 @@ class TestDataLayer(cl_data.BaseDataLayer):
204
283
  thread["steps"].append(step_dict)
205
284
 
206
285
  async def get_thread_author(self, thread_id: str):
286
+ logger.debug(f"Getting thread author: {thread_id}")
207
287
  return "admin"
208
288
 
209
289
  async def list_threads(
210
290
  self, pagination: cl_data.Pagination, filters: cl_data.ThreadFilter
211
291
  ) -> cl_data.PaginatedResponse[cl_data.ThreadDict]:
292
+ logger.debug(f"Listing threads")
212
293
  return cl_data.PaginatedResponse(
213
- data=[t for t in thread_history if t["id"] not in deleted_thread_ids],
294
+ data=[t for t in thread_history if t["id"] not in deleted_thread_ids][::-1],
214
295
  pageInfo=cl_data.PageInfo(
215
296
  hasNextPage=False, startCursor=None, endCursor=None
216
297
  ),
217
298
  )
218
299
 
219
300
  async def get_thread(self, thread_id: str):
301
+ logger.debug(f"Getting thread: {thread_id}")
220
302
  thread_history = load_threads_from_db()
221
303
  return next((t for t in thread_history if t["id"] == thread_id), None)
222
304
 
223
305
  async def delete_thread(self, thread_id: str):
224
306
  deleted_thread_ids.append(thread_id)
307
+ delete_thread_from_db(thread_id)
308
+ logger.debug(f"Deleted thread: {thread_id}")
225
309
 
226
310
  cl_data._data_layer = TestDataLayer()
227
311
 
228
312
  @cl.on_chat_start
229
313
  async def start():
230
314
  initialize_db()
231
- await cl.ChatSettings(
315
+ model_name = load_setting("model_name")
316
+
317
+ if model_name:
318
+ cl.user_session.set("model_name", model_name)
319
+ else:
320
+ # If no setting found, use default or environment variable
321
+ model_name = os.getenv("MODEL_NAME", "gpt-3.5-turbo")
322
+ cl.user_session.set("model_name", model_name)
323
+ logger.debug(f"Model name: {model_name}")
324
+ settings = cl.ChatSettings(
232
325
  [
233
326
  TextInput(
234
327
  id="model_name",
235
328
  label="Enter the Model Name",
236
- placeholder="e.g., gpt-3.5-turbo"
329
+ placeholder="e.g., gpt-3.5-turbo",
330
+ initial=model_name
237
331
  )
238
332
  ]
239
- ).send()
333
+ )
334
+ cl.user_session.set("settings", settings)
335
+ await settings.send()
240
336
 
241
337
  @cl.on_settings_update
242
338
  async def setup_agent(settings):
339
+ logger.debug(settings)
340
+ cl.user_session.set("settings", settings)
243
341
  model_name = settings["model_name"]
244
342
  cl.user_session.set("model_name", model_name)
343
+
344
+ # Save in settings table
345
+ save_setting("model_name", model_name)
346
+
347
+ # Save in thread metadata
348
+ thread_id = cl.user_session.get("thread_id")
349
+ if thread_id:
350
+ thread = await cl_data.get_thread(thread_id)
351
+ if thread:
352
+ metadata = thread.get("metadata", {})
353
+ metadata["model_name"] = model_name
354
+ await cl_data.update_thread(thread_id, metadata=metadata)
245
355
 
246
356
  @cl.on_message
247
357
  async def main(message: cl.Message):
248
- model_name = cl.user_session.get("model_name", "gpt-3.5-turbo")
358
+ model_name = load_setting("model_name") or os.getenv("MODEL_NAME") or "gpt-3.5-turbo"
249
359
  message_history = cl.user_session.get("message_history", [])
250
360
  message_history.append({"role": "user", "content": message.content})
251
361
 
@@ -266,9 +376,9 @@ async def main(message: cl.Message):
266
376
  if token := part['choices'][0]['delta']['content']:
267
377
  await msg.stream_token(token)
268
378
  full_response += token
269
- print(full_response)
379
+ logger.debug(f"Full response: {full_response}")
270
380
  message_history.append({"role": "assistant", "content": full_response})
271
- print(message_history)
381
+ logger.debug(f"Message history: {message_history}")
272
382
  cl.user_session.set("message_history", message_history)
273
383
  await msg.update()
274
384
 
@@ -291,6 +401,20 @@ async def send_count():
291
401
 
292
402
  @cl.on_chat_resume
293
403
  async def on_chat_resume(thread: cl_data.ThreadDict):
404
+ logger.info(f"Resuming chat: {thread['id']}")
405
+ model_name = load_setting("model_name") or os.getenv("MODEL_NAME") or "gpt-3.5-turbo"
406
+ logger.debug(f"Model name: {model_name}")
407
+ settings = cl.ChatSettings(
408
+ [
409
+ TextInput(
410
+ id="model_name",
411
+ label="Enter the Model Name",
412
+ placeholder="e.g., gpt-3.5-turbo",
413
+ initial=model_name
414
+ )
415
+ ]
416
+ )
417
+ await settings.send()
294
418
  thread_id = thread["id"]
295
419
  cl.user_session.set("thread_id", thread["id"])
296
420
  message_history = cl.user_session.get("message_history", [])
@@ -303,6 +427,6 @@ async def on_chat_resume(thread: cl_data.ThreadDict):
303
427
  elif msg_type == "assistant_message":
304
428
  message_history.append({"role": "assistant", "content": message.get("output", "")})
305
429
  else:
306
- print(f"Message without type: {message}")
430
+ logger.warning(f"Message without type: {message}")
307
431
 
308
432
  cl.user_session.set("message_history", message_history)
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M840.5 798.2L662.3 599.5l-151 173.7-173.7-173.7-167.7 201c-21 30.4 0.9 71.8 37.9 71.6l594.7-3.3c36.2-0.1 57.8-40.3 38-70.6z" fill="#FFB89A" /><path d="M741.6 647.3l-52.3-47.7c-12.2-11.2-31.2-10.3-42.4 1.9s-10.3 31.2 1.9 42.4l52.3 47.7c5.8 5.3 13 7.8 20.2 7.8 8.1 0 16.2-3.3 22.2-9.8 11.2-12.1 10.3-31.1-1.9-42.3zM631.2 546.5c-12.4-11-31.4-9.8-42.3 2.6l-98.8 111.7-171-165.7L87.9 724.7c-11.8 11.7-11.8 30.7-0.1 42.4 5.9 5.9 13.6 8.9 21.3 8.9 7.6 0 15.3-2.9 21.1-8.7l189.4-188.1 173.8 168.5L633.8 589c11-12.5 9.8-31.5-2.6-42.5z" fill="#33CC99" /><path d="M721.3 342.8m-35.1 0a35.1 35.1 0 1 0 70.2 0 35.1 35.1 0 1 0-70.2 0Z" fill="#33CC99" /><path d="M743.2 175.1H191.6c-70.6 0-128.3 57.7-128.3 128.3v499.2c0 70.6 57.7 128.3 128.3 128.3h551.5c70.6 0 128.3-57.7 128.3-128.3V303.5c0.1-70.6-57.7-128.4-128.2-128.4z m68.3 627.6c0 18.1-7.1 35.2-20.1 48.2-13 13-30.1 20.1-48.2 20.1H191.6c-18.1 0-35.2-7.1-48.2-20.1-13-13-20.1-30.1-20.1-48.2V303.5c0-18.1 7.1-35.2 20.1-48.2 13-13 30.1-20.1 48.2-20.1h551.5c18.1 0 35.2 7.1 48.2 20.1 13 13 20.1 30.1 20.1 48.2v499.2z" fill="#45484C" /><path d="M799.7 90.9H237.2c-16.6 0-30 13.4-30 30s13.4 30 30 30h562.4c26.1 0 50.8 10.3 69.4 28.9 18.6 18.6 28.9 43.3 28.9 69.4v482.4c0 16.6 13.4 30 30 30s30-13.4 30-30V249.2C958 161.9 887 90.9 799.7 90.9z" fill="#45484C" /></svg>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M570.2 842c-50.6 0-278.7-180-278.7-401.9 0-58.8-2.9-133.1-1-183.9-50.8 3.2-91.4 45.7-91.4 97.3v272.1c37.4 194.7 137.5 334 255.2 334 69.5 0 132.9-48.6 180.9-128.5-20.8 7.1-42.6 10.9-65 10.9z" fill="#FFB89A" /><path d="M926.1 191.8C900.5 74.1 817.9 62.1 704.9 62.1c-29.1 0-60.3 0.8-93 0.8-36 0-70.5-1.1-102.5-1.1-109.7 0-189.8 12.5-201.3 123.7-20.4 198.3 30 617.1 306.1 617.1S939 414.3 926.1 191.8z m-76.9 268.5c-9.5 47.9-22.3 90.8-38.1 127.7-16.8 39.2-37 71.4-60 95.8-37.3 39.5-82.1 58.7-137 58.7-53.4 0-97.6-20.1-134.9-61.6-45.5-50.5-79.8-131.5-99-234.2-15.6-83.5-20.3-178.9-12.4-255.2 1.8-17.3 5.7-30.7 11.6-39.8 4.4-6.8 10.1-11.7 18.7-15.8 25.8-12.5 70.8-14.2 111.4-14.2 15 0 30.7 0.2 47.3 0.5 17.8 0.3 36.2 0.6 55.2 0.6 17.2 0 33.9-0.2 50-0.4 15.1-0.2 29.3-0.4 43.1-0.4 44.5 0 89.5 1.8 118 15.1 15.9 7.4 33.4 20.8 43.6 63 2.6 53.3 3.6 153.5-17.5 260.2z" fill="#4E5155" /><path d="M532 841.7c-32.5 22.3-70.6 33.7-113.2 33.7-29.7 0-57.3-6-82.1-17.7-23.2-11-44.7-27.4-63.9-48.7-46-50.9-80.3-131.3-99.2-232.4-15.1-80.6-19.6-172.9-12-246.8 3-29.5 12-50.2 27.5-63.2 14.2-12 35.1-19.2 65.8-22.9 16.5-2 28.2-16.9 26.3-33.3-2-16.5-16.9-28.2-33.3-26.3-42.9 5.1-73.8 16.7-97.4 36.5-27.9 23.5-43.8 57.2-48.5 103-8.2 79.3-3.4 178.1 12.7 264 9.7 51.9 23.4 99.4 40.6 141.2 19.8 48.1 44.4 88.6 73 120.4 51.6 57.2 115.7 86.2 190.6 86.2 55 0 104.5-14.9 147.2-44.2 13.7-9.4 17.1-28.1 7.7-41.7-9.4-13.7-28.1-17.2-41.8-7.8z" fill="#4E5155" /><path d="M519.7 248.5c-16.6 0-30 13.4-30 30v91.3c0 16.6 13.4 30 30 30s30-13.4 30-30v-91.3c0-16.6-13.5-30-30-30zM299.5 385.5c0-16.6-13.4-30-30-30s-30 13.4-30 30v91.3c0 16.6 13.4 30 30 30s30-13.4 30-30v-91.3zM754.6 248.5c-16.6 0-30 13.4-30 30v91.3c0 16.6 13.4 30 30 30s30-13.4 30-30v-91.3c0-16.6-13.4-30-30-30zM716.7 554.5c0-16.6-13.4-30-30-30H551v30c0 58.5 38.1 123.7 92.8 123.7 22.9 0 45-11.9 62.2-33.6 10.3-13 8.1-31.9-4.9-42.1-13-10.3-31.9-8.1-42.1 4.9-5.3 6.7-11.1 10.9-15.1 10.9-4.3 0-11.9-5.1-19.1-16.4-3.3-5.3-6.2-11.2-8.4-17.4h70.4c16.4 0 29.9-13.4 29.9-30zM401.6 704c-25.4 0-46.1-24.2-46.1-53.9 0-16.6-13.4-30-30-30s-30 13.4-30 30c0 62.8 47.6 113.9 106.1 113.9 16.6 0 30-13.4 30-30s-13.5-30-30-30z" fill="#33CC99" /></svg>
Binary file
Binary file
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M861.9 383.8H218.1c-36.4 0-66.1-29.8-66.1-66.1V288c0-36.4 29.8-66.1 66.1-66.1h643.8c36.4 0 66.1 29.8 66.1 66.1v29.7c0 36.3-29.8 66.1-66.1 66.1z" fill="#FFB89A" /><path d="M822.9 129.2H199.8c-77.2 0-140.4 63.2-140.4 140.4v487.2c0 77.2 63.2 140.4 140.4 140.4h623.1c77.2 0 140.4-63.2 140.4-140.4V269.6c0-77.2-63.2-140.4-140.4-140.4z m80.4 177H760.4L864.6 201c5.4 3.3 10.4 7.3 15 11.8 15.3 15.3 23.7 35.4 23.7 56.8v36.6z m-673.3 0l104-117h61.3l-109.1 117H230z m247.4-117h169.2L532 306.2H368.3l109.1-117z m248.8 0h65.6L676 306.2h-60l112.5-114.8-2.3-2.2zM143 212.9c15.3-15.3 35.4-23.7 56.8-23.7h53.9l-104 117h-30.4v-36.5c0.1-21.4 8.5-41.5 23.7-56.8z m736.6 600.7c-15.3 15.3-35.4 23.7-56.8 23.7h-623c-21.3 0-41.5-8.4-56.8-23.7-15.3-15.3-23.7-35.4-23.7-56.8V366.2h783.9v390.6c0.1 21.3-8.3 41.5-23.6 56.8z" fill="#45484C" /><path d="M400.5 770.6V430.9L534.1 508c14.3 8.3 19.3 26.6 11 41-8.3 14.3-26.6 19.3-41 11l-43.6-25.2v131.8l114.1-65.9-7.5-4.3c-14.3-8.3-19.3-26.6-11-41 8.3-14.3 26.6-19.3 41-11l97.5 56.3-294.1 169.9z" fill="#33CC99" /></svg>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!-- Uploaded to: SVG Repo, www.svgrepo.com, Generator: SVG Repo Mixer Tools -->
3
+ <svg width="800px" height="800px" viewBox="0 0 1024 1024" class="icon" version="1.1" xmlns="http://www.w3.org/2000/svg"><path d="M188.3 766.5a94.4 135.8 0 1 0 188.8 0 94.4 135.8 0 1 0-188.8 0Z" fill="#FFB89A" /><path d="M931.5 397s0-0.1 0 0c-34.2-82.6-119.3-141-218.8-141-129.7 0-234.9 99.3-234.9 221.9 0 52.1 19.1 100.1 50.9 138 1 14.5 1.8 29.1 1.8 43.6 0 148.5 98.1 269 219.2 269 121 0 219.2-120.4 219.2-269 0-70.1-1.7-214.7-37.4-262.5z m-36.6 347.5c-8.7 25.3-21.1 47.9-36.8 67.1-29.8 36.5-68.3 56.7-108.5 56.7s-78.7-20.1-108.5-56.7c-15.7-19.2-28-41.8-36.8-67.1-9.3-26.9-13.9-55.5-13.9-85.1 0-16.8-1-33.5-2-47.7l-1.3-19.5-12.6-15c-24.1-28.6-36.8-63-36.8-99.3 0-89.3 78.5-161.9 174.9-161.9 36.4 0 71.4 10.3 101 29.7 28.4 18.7 65.5 81.7 65.5 81.7s17.9 27.5 24.7 98.2c4.5 46.5 5 95.9 5 133.8 0.1 29.6-4.6 58.2-13.9 85.1zM377.1 219.9c-51.8 0-93.8 42-93.8 93.8s42 93.8 93.8 93.8 93.8-42 93.8-93.8-42-93.8-93.8-93.8z m0 127.5c-18.6 0-33.8-15.2-33.8-33.8 0-18.6 15.2-33.8 33.8-33.8 18.6 0 33.8 15.2 33.8 33.8 0 18.7-15.1 33.8-33.8 33.8z" fill="#45484C" /><path d="M521.2 206.7m-50.3 0a50.3 50.3 0 1 0 100.6 0 50.3 50.3 0 1 0-100.6 0Z" fill="#45484C" /><path d="M653 156.4m-50.3 0a50.3 50.3 0 1 0 100.6 0 50.3 50.3 0 1 0-100.6 0Z" fill="#45484C" /><path d="M781.9 158.4m-50.3 0a50.3 50.3 0 1 0 100.6 0 50.3 50.3 0 1 0-100.6 0Z" fill="#45484C" /><path d="M909 206.7m-50.3 0a50.3 50.3 0 1 0 100.6 0 50.3 50.3 0 1 0-100.6 0Z" fill="#45484C" /><path d="M263.9 602.7c44.7 0 81 31.5 81 70.3 0 20.9-10.2 35.9-18.7 44.8l-15.9 19.7-0.5 27.2c0.7 7.2 0.6 16.9 0.6 24.7v4.8c0 33.7-27.4 61.2-61.2 61.2-14.9 0-33.3-9.6-48.1-25-15.2-15.9-24.6-35.9-24.6-52.3v-3.2c0-12.7 0-36.2 1-60.2 1.4-33 7.4-57.3 7.4-57.3 3.9-14.7 13.4-28.2 26.8-38 14.8-11 32.8-16.7 52.2-16.7m0-60c-66.4 0-122 42.4-137 99.4-10.9 23-10.4 112.6-10.4 135.9 0 66.9 65.8 137.3 132.7 137.3 66.9 0 121.2-54.3 121.2-121.2 0-9.2 0.3-23-0.8-34.9 22-23 35.4-53.2 35.4-86.3-0.1-71.9-63.2-130.2-141.1-130.2zM444.4 559.9c-26.4 0-47.8 21.4-47.8 47.8s21.4 47.8 47.8 47.8 47.8-21.4 47.8-47.8-21.4-47.8-47.8-47.8zM377.1 494.5c-15.2 0-27.5 12.3-27.5 27.5s12.3 27.5 27.5 27.5 27.5-12.3 27.5-27.5c0-15.3-12.3-27.5-27.5-27.5zM288.1 471.5c-15.2 0-27.5 12.3-27.5 27.5s12.3 27.5 27.5 27.5 27.5-12.3 27.5-27.5-12.4-27.5-27.5-27.5zM188.3 477.9c-15.2 0-27.5 12.3-27.5 27.5s12.3 27.5 27.5 27.5 27.5-12.3 27.5-27.5-12.3-27.5-27.5-27.5zM100.6 538.4c-15.2 0-27.5 12.3-27.5 27.5s12.3 27.5 27.5 27.5 27.5-12.3 27.5-27.5c-0.1-15.2-12.4-27.5-27.5-27.5z" fill="#45484C" /><path d="M670.1 584.6c-41.4 0-80.2-20.3-103.9-54.3-9.5-13.6-6.2-32.3 7.4-41.8 13.6-9.5 32.3-6.2 41.8 7.4 12.5 17.9 33 28.6 54.7 28.6 36.8 0 66.7-29.9 66.7-66.7 0-19.8-8.7-38.4-23.9-51.2-12.7-10.6-14.4-29.6-3.7-42.3s29.6-14.4 42.3-3.7c28.9 24.2 45.4 59.6 45.4 97.2-0.1 70-56.9 126.8-126.8 126.8z" fill="#33CC99" /><path d="M853 556.4c-26 0-49.6-14.5-60.1-36.9-7-15-0.6-32.9 14.4-39.9s32.9-0.6 39.9 14.4c0.3 0.6 2.2 2.4 5.8 2.4 1.2 0 2.3-0.2 3.3-0.6 15.5-5.9 32.8 1.8 38.7 17.3 5.9 15.5-1.8 32.8-17.3 38.7-7.9 3.1-16.2 4.6-24.7 4.6z" fill="#33CC99" /></svg>
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PraisonAI
3
- Version: 0.0.43
3
+ Version: 0.0.44
4
4
  Summary: PraisonAI application combines AutoGen and CrewAI or similar frameworks into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customization, and efficient human-agent collaboration.
5
5
  Author: Mervin Praison
6
6
  Requires-Python: >=3.10,<3.13
@@ -0,0 +1,37 @@
1
+ praisonai/__init__.py,sha256=JrgyPlzZfLlozoW7SHZ1nVJ63rLPR3ki2k5ZPywYrnI,175
2
+ praisonai/__main__.py,sha256=MVgsjMThjBexHt4nhd760JCqvP4x0IQcwo8kULOK4FQ,144
3
+ praisonai/agents_generator.py,sha256=8d1WRbubvEkBrW1HZ7_xnGyqgJi0yxmXa3MgTIqef1c,19127
4
+ praisonai/auto.py,sha256=9spTXqj47Hmmqv5QHRYE_RzSVHH_KoPbaZjskUj2UcE,7895
5
+ praisonai/chainlit_ui.py,sha256=bNR7s509lp0I9JlJNvwCZRUZosC64qdvlFCt8NmFamQ,12216
6
+ praisonai/cli.py,sha256=RAPXxz6FxEG8Ek7XVRrzZ0FE1fwNHRd-prOjVjJjd0k,12180
7
+ praisonai/deploy.py,sha256=K_M5LLw16IJZa2q8pAM0SZ6-8oct33cR-0ccHeufHiU,6031
8
+ praisonai/inbuilt_tools/__init__.py,sha256=mUKnbL6Gram9c9f2m8wJwEzURBLmPEOcHzwySBH89YA,74
9
+ praisonai/inbuilt_tools/autogen_tools.py,sha256=svYkM2N7DVFvbiwgoAS7U_MqTOD8rHf8VD3BaFUV5_Y,14907
10
+ praisonai/inc/__init__.py,sha256=sPDlYBBwdk0VlWzaaM_lG0_LD07lS2HRGvPdxXJFiYg,62
11
+ praisonai/inc/models.py,sha256=1kwP9o56AvN8L38x7eeAzudjAvstN0uWu-woQkgxAe4,5449
12
+ praisonai/public/android-chrome-192x192.png,sha256=ENJEqhDE3XEQViRhKNDezQKRiOiuHOUj5nzRN43fz50,6535
13
+ praisonai/public/android-chrome-512x512.png,sha256=4txEwB0cJkxFVarRdvFGJZR1DtWJ2h-L_2cUEjBXHAc,15244
14
+ praisonai/public/apple-touch-icon.png,sha256=YLlEhlenm24QY_yv-5wb_mxDxJ8H22H_S8Khlvz-zVA,6001
15
+ praisonai/public/fantasy.svg,sha256=4Gs3kIOux-pjGtw6ogI_rv5_viVJxnE5gRwGilsSg0o,1553
16
+ praisonai/public/favicon-16x16.png,sha256=jFiLfRSaEw_kwSxVQQUNV7Auc6oDRvZVKEIiUqC7vYE,429
17
+ praisonai/public/favicon-32x32.png,sha256=cgKvhHroXWNl1Err0TFr8tGepjNzIBpaTinFUT5pbZk,872
18
+ praisonai/public/favicon.ico,sha256=SOcyfycBi_8rd9ff3gmSuZ3M-rkxv1RpHi76cwvmsQ0,15406
19
+ praisonai/public/game.svg,sha256=y2QMaA01m8XzuDjTOBWzupOC3-TpnUl9ah89mIhviUw,2406
20
+ praisonai/public/logo_dark.png,sha256=frHz1zkrnivGssJgk9iy1cabojkVgm8B4MllFwL_CnI,17050
21
+ praisonai/public/logo_light.png,sha256=8cQRti_Ysa30O3_7C3ku2w40LnVUUlUok47H-3ZZHSU,19656
22
+ praisonai/public/movie.svg,sha256=aJ2EQ8vXZusVsF2SeuAVxP4RFJzQ14T26ejrGYdBgzk,1289
23
+ praisonai/public/thriller.svg,sha256=2dYY72EcgbEyTxS4QzjAm37Y4srtPWEW4vCMFki98ZI,3163
24
+ praisonai/test.py,sha256=RZKq3UEFb6AnFFiHER3zBXfNmlteSLBlrTmOvnpnZLo,4092
25
+ praisonai/ui/chat.py,sha256=2T7HJK_fZwYnbB8Z4TCfdb4tK7jelSs80RayTTfmWBo,14354
26
+ praisonai/ui/public/fantasy.svg,sha256=4Gs3kIOux-pjGtw6ogI_rv5_viVJxnE5gRwGilsSg0o,1553
27
+ praisonai/ui/public/game.svg,sha256=y2QMaA01m8XzuDjTOBWzupOC3-TpnUl9ah89mIhviUw,2406
28
+ praisonai/ui/public/logo_dark.png,sha256=frHz1zkrnivGssJgk9iy1cabojkVgm8B4MllFwL_CnI,17050
29
+ praisonai/ui/public/logo_light.png,sha256=8cQRti_Ysa30O3_7C3ku2w40LnVUUlUok47H-3ZZHSU,19656
30
+ praisonai/ui/public/movie.svg,sha256=aJ2EQ8vXZusVsF2SeuAVxP4RFJzQ14T26ejrGYdBgzk,1289
31
+ praisonai/ui/public/thriller.svg,sha256=2dYY72EcgbEyTxS4QzjAm37Y4srtPWEW4vCMFki98ZI,3163
32
+ praisonai/version.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
33
+ praisonai-0.0.44.dist-info/LICENSE,sha256=kqvFysVlnFxYOu0HxCe2HlmZmJtdmNGOxWRRkT9TsWc,1035
34
+ praisonai-0.0.44.dist-info/METADATA,sha256=gl6SQJ80HI7BqfiNXgBcCGW4lZGNUeQhh67o2HXbkP4,8088
35
+ praisonai-0.0.44.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
36
+ praisonai-0.0.44.dist-info/entry_points.txt,sha256=Qg41eW3A1-dvdV5tF7LqChfYof8Rihk2rN1fiEE3vnk,53
37
+ praisonai-0.0.44.dist-info/RECORD,,
@@ -1,23 +0,0 @@
1
- praisonai/__init__.py,sha256=JrgyPlzZfLlozoW7SHZ1nVJ63rLPR3ki2k5ZPywYrnI,175
2
- praisonai/__main__.py,sha256=MVgsjMThjBexHt4nhd760JCqvP4x0IQcwo8kULOK4FQ,144
3
- praisonai/agents_generator.py,sha256=8d1WRbubvEkBrW1HZ7_xnGyqgJi0yxmXa3MgTIqef1c,19127
4
- praisonai/auto.py,sha256=9spTXqj47Hmmqv5QHRYE_RzSVHH_KoPbaZjskUj2UcE,7895
5
- praisonai/chainlit_ui.py,sha256=bNR7s509lp0I9JlJNvwCZRUZosC64qdvlFCt8NmFamQ,12216
6
- praisonai/cli.py,sha256=RAPXxz6FxEG8Ek7XVRrzZ0FE1fwNHRd-prOjVjJjd0k,12180
7
- praisonai/deploy.py,sha256=E-K35liJeVRHhJtEpE9_41IFg0lT4dr1f2amobYxpws,6031
8
- praisonai/inbuilt_tools/__init__.py,sha256=mUKnbL6Gram9c9f2m8wJwEzURBLmPEOcHzwySBH89YA,74
9
- praisonai/inbuilt_tools/autogen_tools.py,sha256=svYkM2N7DVFvbiwgoAS7U_MqTOD8rHf8VD3BaFUV5_Y,14907
10
- praisonai/inc/__init__.py,sha256=sPDlYBBwdk0VlWzaaM_lG0_LD07lS2HRGvPdxXJFiYg,62
11
- praisonai/inc/models.py,sha256=1kwP9o56AvN8L38x7eeAzudjAvstN0uWu-woQkgxAe4,5449
12
- praisonai/public/fantasy.svg,sha256=4Gs3kIOux-pjGtw6ogI_rv5_viVJxnE5gRwGilsSg0o,1553
13
- praisonai/public/game.svg,sha256=y2QMaA01m8XzuDjTOBWzupOC3-TpnUl9ah89mIhviUw,2406
14
- praisonai/public/movie.svg,sha256=aJ2EQ8vXZusVsF2SeuAVxP4RFJzQ14T26ejrGYdBgzk,1289
15
- praisonai/public/thriller.svg,sha256=2dYY72EcgbEyTxS4QzjAm37Y4srtPWEW4vCMFki98ZI,3163
16
- praisonai/test.py,sha256=RZKq3UEFb6AnFFiHER3zBXfNmlteSLBlrTmOvnpnZLo,4092
17
- praisonai/ui/chat.py,sha256=kyfWIIpVdb6D54SnoMPw3MQp0xk6sppgTzT-Xflz9Tw,10149
18
- praisonai/version.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
19
- praisonai-0.0.43.dist-info/LICENSE,sha256=kqvFysVlnFxYOu0HxCe2HlmZmJtdmNGOxWRRkT9TsWc,1035
20
- praisonai-0.0.43.dist-info/METADATA,sha256=UW42K2ecDGhjfNlqV5rd_Xh6xYkQqLSwxMZzRgh6zVY,8088
21
- praisonai-0.0.43.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
22
- praisonai-0.0.43.dist-info/entry_points.txt,sha256=Qg41eW3A1-dvdV5tF7LqChfYof8Rihk2rN1fiEE3vnk,53
23
- praisonai-0.0.43.dist-info/RECORD,,