PraisonAI 0.0.27__py3-none-any.whl → 0.0.29__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/chainlit_ui.py CHANGED
@@ -19,6 +19,56 @@ config_list = [
19
19
  ]
20
20
  agent_file = "test.yaml"
21
21
 
22
+ actions=[
23
+ cl.Action(name="run", value="run", label="✅ Run"),
24
+ cl.Action(name="modify", value="modify", label="🔧 Modify"),
25
+ ]
26
+
27
+ @cl.action_callback("run")
28
+ async def on_run(action):
29
+ await main(cl.Message(content=""))
30
+
31
+ @cl.action_callback("modify")
32
+ async def on_modify(action):
33
+ await cl.Message(content="Modify the agents and tools from below settings").send()
34
+
35
+
36
+ @cl.set_chat_profiles
37
+ async def set_profiles(current_user: cl.User):
38
+ return [
39
+ cl.ChatProfile(
40
+ name="Auto",
41
+ markdown_description="Automatically generate agents and tasks based on your input.",
42
+ starters=[
43
+ cl.Starter(
44
+ label="Create a movie script",
45
+ message="Create a movie script about a futuristic society where AI and humans coexist, focusing on the conflict and resolution between them. Start with an intriguing opening scene.",
46
+ icon="/public/movie.svg",
47
+ ),
48
+ cl.Starter(
49
+ label="Design a fantasy world",
50
+ message="Design a detailed fantasy world with unique geography, cultures, and magical systems. Start by describing the main continent and its inhabitants.",
51
+ icon="/public/fantasy.svg",
52
+ ),
53
+ cl.Starter(
54
+ label="Write a futuristic political thriller",
55
+ message="Write a futuristic political thriller involving a conspiracy within a global government. Start with a high-stakes meeting that sets the plot in motion.",
56
+ icon="/public/thriller.svg",
57
+ ),
58
+ cl.Starter(
59
+ label="Develop a new board game",
60
+ message="Develop a new, innovative board game. Describe the game's objective, rules, and unique mechanics. Create a scenario to illustrate gameplay.",
61
+ icon="/public/game.svg",
62
+ ),
63
+ ]
64
+ ),
65
+ cl.ChatProfile(
66
+ name="Manual",
67
+ markdown_description="Manually define your agents and tasks using a YAML file.",
68
+ ),
69
+ ]
70
+
71
+
22
72
  @cl.on_chat_start
23
73
  async def start_chat():
24
74
  cl.user_session.set(
@@ -29,6 +79,7 @@ async def start_chat():
29
79
  [
30
80
  TextInput(id="Model", label="OpenAI - Model", initial=config_list[0]['model']),
31
81
  TextInput(id="BaseUrl", label="OpenAI - Base URL", initial=config_list[0]['base_url']),
82
+ TextInput(id="ApiKey", label="OpenAI - API Key", initial=config_list[0]['api_key']),
32
83
  Select(
33
84
  id="Framework",
34
85
  label="Framework",
@@ -37,7 +88,53 @@ async def start_chat():
37
88
  ),
38
89
  ]
39
90
  ).send()
40
- # await on_settings_update(settings)
91
+ cl.user_session.set("settings", settings)
92
+ chat_profile = cl.user_session.get("chat_profile")
93
+ if chat_profile=="Manual":
94
+
95
+ agent_file = "agents.yaml"
96
+ full_agent_file_path = os.path.abspath(agent_file) # Get full path
97
+ if os.path.exists(full_agent_file_path):
98
+ with open(full_agent_file_path, 'r') as f:
99
+ yaml_content = f.read()
100
+ msg = cl.Message(content=yaml_content, language="yaml")
101
+ await msg.send()
102
+
103
+
104
+ full_tools_file_path = os.path.abspath("tools.py") # Get full path
105
+ if os.path.exists(full_tools_file_path):
106
+ with open(full_tools_file_path, 'r') as f:
107
+ tools_content = f.read()
108
+ msg = cl.Message(content=tools_content, language="python")
109
+ await msg.send()
110
+
111
+ settings = await cl.ChatSettings(
112
+ [
113
+ TextInput(id="Model", label="OpenAI - Model", initial=config_list[0]['model']),
114
+ TextInput(id="BaseUrl", label="OpenAI - Base URL", initial=config_list[0]['base_url']),
115
+ TextInput(id="ApiKey", label="OpenAI - API Key", initial=config_list[0]['api_key']),
116
+ Select(
117
+ id="Framework",
118
+ label="Framework",
119
+ values=["crewai", "autogen"],
120
+ initial_index=0,
121
+ ),
122
+ TextInput(id="agents", label="agents.yaml", initial=yaml_content, multiline=True),
123
+ TextInput(id="tools", label="tools.py", initial=tools_content, multiline=True),
124
+ ]
125
+ ).send()
126
+ cl.user_session.set("settings", settings)
127
+
128
+ res = await cl.AskActionMessage(
129
+ content="Pick an action!",
130
+ actions=actions,
131
+ ).send()
132
+ if res and res.get("value") == "modify":
133
+ await cl.Message(content="Modify the agents and tools from below settings", actions=actions).send()
134
+ elif res and res.get("value") == "run":
135
+ await main(cl.Message(content="", actions=actions))
136
+
137
+ await on_settings_update(settings)
41
138
 
42
139
  @cl.on_settings_update
43
140
  async def on_settings_update(settings):
@@ -45,8 +142,20 @@ async def on_settings_update(settings):
45
142
  global config_list, framework
46
143
  config_list[0]['model'] = settings["Model"]
47
144
  config_list[0]['base_url'] = settings["BaseUrl"]
145
+ config_list[0]['api_key'] = settings["ApiKey"]
146
+ os.environ["OPENAI_API_KEY"] = config_list[0]['api_key']
147
+ os.environ["OPENAI_MODEL_NAME"] = config_list[0]['model']
148
+ os.environ["OPENAI_API_BASE"] = config_list[0]['base_url']
48
149
  framework = settings["Framework"]
49
- print("Settings updated:", settings)
150
+
151
+ if "agents" in settings:
152
+ with open("agents.yaml", "w") as f:
153
+ f.write(settings["agents"])
154
+ if "tools" in settings:
155
+ with open("tools.py", "w") as f:
156
+ f.write(settings["tools"])
157
+
158
+ print("Settings updated")
50
159
 
51
160
  @cl.on_chat_resume
52
161
  async def on_chat_resume(thread: ThreadDict):
@@ -59,20 +168,52 @@ async def on_chat_resume(thread: ThreadDict):
59
168
  message_history.append({"role": "assistant", "content": message["content"]})
60
169
  cl.user_session.set("message_history", message_history)
61
170
 
171
+ # @cl.step(type="tool")
172
+ # async def tool(data: Optional[str] = None, language: Optional[str] = None):
173
+ # return cl.Message(content=data, language=language)
174
+
62
175
  @cl.on_message
63
176
  async def main(message: cl.Message):
64
177
  """Run PraisonAI with the provided message as the topic."""
65
178
  message_history = cl.user_session.get("message_history")
66
179
  message_history.append({"role": "user", "content": message.content})
67
180
  topic = message.content
68
- agent_file = "test.yaml"
69
- generator = AutoGenerator(topic=topic, framework=framework, config_list=config_list)
70
- agent_file = generator.generate()
71
- agents_generator = AgentsGenerator(agent_file, framework, config_list)
72
- result = agents_generator.generate_crew_and_kickoff()
73
- msg = cl.Message(content=result)
74
- await msg.send()
75
- message_history.append({"role": "assistant", "content": message.content})
181
+ chat_profile = cl.user_session.get("chat_profile")
182
+
183
+ if chat_profile == "Auto":
184
+ agent_file = "agents.yaml"
185
+ generator = AutoGenerator(topic=topic, agent_file=agent_file, framework=framework, config_list=config_list)
186
+ agent_file = generator.generate()
187
+ agents_generator = AgentsGenerator(agent_file, framework, config_list)
188
+ result = agents_generator.generate_crew_and_kickoff()
189
+ msg = cl.Message(content=result)
190
+ await msg.send()
191
+ message_history.append({"role": "assistant", "content": message.content})
192
+ else: # chat_profile == "Manual"
193
+ agent_file = "agents.yaml"
194
+ full_agent_file_path = os.path.abspath(agent_file) # Get full path
195
+ full_tools_file_path = os.path.abspath("tools.py")
196
+ if os.path.exists(full_agent_file_path):
197
+ with open(full_agent_file_path, 'r') as f:
198
+ yaml_content = f.read()
199
+ # tool_res = await tool()
200
+ msg_agents = cl.Message(content=yaml_content, language="yaml")
201
+ await msg_agents.send()
202
+ if os.path.exists(full_tools_file_path):
203
+ with open(full_tools_file_path, 'r') as f:
204
+ tools_content = f.read()
205
+ msg_tools = cl.Message(content=tools_content, language="python")
206
+ await msg_tools.send()
207
+ else:
208
+ # If the file doesn't exist, follow the same process as "Auto"
209
+ generator = AutoGenerator(topic=topic, agent_file=agent_file, framework=framework, config_list=config_list)
210
+ agent_file = generator.generate()
211
+
212
+ agents_generator = AgentsGenerator(agent_file, framework, config_list)
213
+ result = agents_generator.generate_crew_and_kickoff()
214
+ msg = cl.Message(content=result, actions=actions)
215
+ await msg.send()
216
+ message_history.append({"role": "assistant", "content": message.content})
76
217
 
77
218
  # Load environment variables from .env file
78
219
  load_dotenv()
@@ -90,4 +231,4 @@ def auth_callback(username: str, password: str):
90
231
  identifier=username, metadata={"role": "ADMIN", "provider": "credentials"}
91
232
  )
92
233
  else:
93
- return None
234
+ return None
praisonai/cli.py CHANGED
@@ -156,6 +156,8 @@ class PraisonAI:
156
156
  args.agent_file = 'agents.yaml'
157
157
  if args.agent_file == 'api:app' or args.agent_file == '/app/api:app':
158
158
  args.agent_file = 'agents.yaml'
159
+ if args.agent_file == 'ui':
160
+ args.ui = 'chainlit'
159
161
 
160
162
  return args
161
163
 
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.27 gunicorn markdown\n")
59
+ file.write("RUN pip install flask praisonai==0.0.29 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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: PraisonAI
3
- Version: 0.0.27
3
+ Version: 0.0.29
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
@@ -2,15 +2,15 @@ praisonai/__init__.py,sha256=5SwxMGd4vNUmYedF_HLLQBo4u8zMEWuEfKhHqJrEE1I,59
2
2
  praisonai/__main__.py,sha256=MVgsjMThjBexHt4nhd760JCqvP4x0IQcwo8kULOK4FQ,144
3
3
  praisonai/agents_generator.py,sha256=blzU5uru7rctRUTlnxEER9NLyu4aAd-oUjE-0xo81ww,12787
4
4
  praisonai/auto.py,sha256=CpE9zUbdCP1wR0aLZWKVLxiLU9JOQprRNBK9WKDZVQo,7758
5
- praisonai/chainlit_ui.py,sha256=GO_ZQAp6e4sGaoVr0gb0nQxPIY_3YrLgfsh5CnYa_So,3605
6
- praisonai/cli.py,sha256=_KB_12VoYFSLywFqE0kfbkM76e3DNRK9eeWsFlnfANc,10021
7
- praisonai/deploy.py,sha256=bF66kXQQPzCyFLNY3l50k27rlwdB1yLtnaHu0BV2o5E,6031
5
+ praisonai/chainlit_ui.py,sha256=jXNQfnH3D2xsSvJ0ESuHy-yDgBjudBKb1ODPfbqhYRc,10053
6
+ praisonai/cli.py,sha256=-ikeUf2NUCVvme37X7HwtaDop5ck2Fx802J-Q7b4cyg,10090
7
+ praisonai/deploy.py,sha256=g-E2V9n49GuAg_lQIomNmk1kNxz_EFRFNurp4ggcpjQ,6031
8
8
  praisonai/inbuilt_tools/__init__.py,sha256=mUKnbL6Gram9c9f2m8wJwEzURBLmPEOcHzwySBH89YA,74
9
9
  praisonai/inbuilt_tools/autogen_tools.py,sha256=m3Ws2444hzgkiEjqw9Y4PFb_LsU9ZDD23C03uNsyeu0,14556
10
10
  praisonai/test.py,sha256=RZKq3UEFb6AnFFiHER3zBXfNmlteSLBlrTmOvnpnZLo,4092
11
11
  praisonai/version.py,sha256=ugyuFliEqtAwQmH4sTlc16YXKYbFWDmfyk87fErB8-8,21
12
- praisonai-0.0.27.dist-info/LICENSE,sha256=kqvFysVlnFxYOu0HxCe2HlmZmJtdmNGOxWRRkT9TsWc,1035
13
- praisonai-0.0.27.dist-info/METADATA,sha256=qDqdMkIFJo3jDHWEpDoW9Zf5S_8w0fJcFwHIYLatw2I,9552
14
- praisonai-0.0.27.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
15
- praisonai-0.0.27.dist-info/entry_points.txt,sha256=Qg41eW3A1-dvdV5tF7LqChfYof8Rihk2rN1fiEE3vnk,53
16
- praisonai-0.0.27.dist-info/RECORD,,
12
+ praisonai-0.0.29.dist-info/LICENSE,sha256=kqvFysVlnFxYOu0HxCe2HlmZmJtdmNGOxWRRkT9TsWc,1035
13
+ praisonai-0.0.29.dist-info/METADATA,sha256=p-426v-kQykKjAnegQb4OcRbad5kgwWL8O6tbTSiIMA,9552
14
+ praisonai-0.0.29.dist-info/WHEEL,sha256=sP946D7jFCHeNz5Iq4fL4Lu-PrWrFsgfLXbbkciIZwg,88
15
+ praisonai-0.0.29.dist-info/entry_points.txt,sha256=Qg41eW3A1-dvdV5tF7LqChfYof8Rihk2rN1fiEE3vnk,53
16
+ praisonai-0.0.29.dist-info/RECORD,,