praisonAI 2.2.93__tar.gz → 2.2.96__tar.gz
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.
- praisonai-2.2.96/PKG-INFO +131 -0
- praisonai-2.2.96/PraisonAI.egg-info/PKG-INFO +131 -0
- praisonai-2.2.96/PraisonAI.egg-info/SOURCES.txt +53 -0
- praisonai-2.2.96/PraisonAI.egg-info/dependency_links.txt +1 -0
- praisonai-2.2.96/PraisonAI.egg-info/entry_points.txt +4 -0
- praisonai-2.2.96/PraisonAI.egg-info/requires.txt +102 -0
- praisonai-2.2.96/PraisonAI.egg-info/top_level.txt +1 -0
- praisonai-2.2.96/README.md +34 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/cli.py +146 -6
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/deploy.py +1 -1
- praisonai-2.2.96/praisonai/version.py +1 -0
- praisonai-2.2.96/pyproject.toml +116 -0
- praisonai-2.2.96/setup.cfg +4 -0
- praisonai-2.2.96/tests/test.py +105 -0
- praisonai-2.2.96/tests/test_agents_playbook.py +36 -0
- praisonai-2.2.96/tests/test_basic.py +32 -0
- praisonai-2.2.96/tests/test_custom_tools_fix.py +83 -0
- praisonai-2.2.96/tests/test_double_api_fix.py +187 -0
- praisonai-2.2.96/tests/test_phase2_refactor.py +152 -0
- praisonai-2.2.96/tests/test_runner.py +355 -0
- praisonai-2.2.93/PKG-INFO +0 -110
- praisonai-2.2.93/README.md +0 -9
- praisonai-2.2.93/praisonai/README.md +0 -5
- praisonai-2.2.93/praisonai/public/android-chrome-192x192.png +0 -0
- praisonai-2.2.93/praisonai/public/android-chrome-512x512.png +0 -0
- praisonai-2.2.93/praisonai/public/apple-touch-icon.png +0 -0
- praisonai-2.2.93/praisonai/public/fantasy.svg +0 -3
- praisonai-2.2.93/praisonai/public/favicon-16x16.png +0 -0
- praisonai-2.2.93/praisonai/public/favicon-32x32.png +0 -0
- praisonai-2.2.93/praisonai/public/favicon.ico +0 -0
- praisonai-2.2.93/praisonai/public/game.svg +0 -3
- praisonai-2.2.93/praisonai/public/logo_dark.png +0 -0
- praisonai-2.2.93/praisonai/public/logo_light.png +0 -0
- praisonai-2.2.93/praisonai/public/movie.svg +0 -3
- praisonai-2.2.93/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
- praisonai-2.2.93/praisonai/public/praison-ai-agents-architecture.png +0 -0
- praisonai-2.2.93/praisonai/public/thriller.svg +0 -3
- praisonai-2.2.93/praisonai/setup/config.yaml +0 -60
- praisonai-2.2.93/praisonai/setup/setup_conda_env.sh +0 -105
- praisonai-2.2.93/praisonai/ui/README.md +0 -21
- praisonai-2.2.93/praisonai/ui/config/chainlit.md +0 -1
- praisonai-2.2.93/praisonai/ui/config/translations/bn.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/en-US.json +0 -229
- praisonai-2.2.93/praisonai/ui/config/translations/gu.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/he-IL.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/hi.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/kn.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/ml.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/mr.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/ta.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/te.json +0 -231
- praisonai-2.2.93/praisonai/ui/config/translations/zh-CN.json +0 -229
- praisonai-2.2.93/praisonai/ui/public/fantasy.svg +0 -3
- praisonai-2.2.93/praisonai/ui/public/game.svg +0 -3
- praisonai-2.2.93/praisonai/ui/public/logo_dark.png +0 -0
- praisonai-2.2.93/praisonai/ui/public/logo_light.png +0 -0
- praisonai-2.2.93/praisonai/ui/public/movie.svg +0 -3
- praisonai-2.2.93/praisonai/ui/public/praison.css +0 -3
- praisonai-2.2.93/praisonai/ui/public/thriller.svg +0 -3
- praisonai-2.2.93/praisonai/ui/tools.md +0 -133
- praisonai-2.2.93/praisonai/version.py +0 -1
- praisonai-2.2.93/pyproject.toml +0 -299
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/__init__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/__main__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/agents_generator.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/api/call.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/auto.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/chainlit_ui.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/__init__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/config.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/inc/models.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/scheduler.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/__init__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/build.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/post_install.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/setup.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/test.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/train.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/train_vision.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/agents.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/callbacks.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/chat.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/code.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/colab.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/colab_chainlit.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/context.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/database_config.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/db.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtime.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtimeclient/__init__.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/realtimeclient/tools.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/ui/sql_alchemy.py +0 -0
- {praisonai-2.2.93 → praisonai-2.2.96}/praisonai/upload_vision.py +0 -0
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PraisonAI
|
|
3
|
+
Version: 2.2.96
|
|
4
|
+
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
|
+
Author: Mervin Praison
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://docs.praison.ai
|
|
8
|
+
Project-URL: Repository, https://github.com/mervinpraison/PraisonAI
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
Requires-Dist: rich>=13.7
|
|
12
|
+
Requires-Dist: markdown>=3.5
|
|
13
|
+
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.0.167
|
|
15
|
+
Requires-Dist: python-dotenv>=0.19.0
|
|
16
|
+
Requires-Dist: instructor>=1.3.3
|
|
17
|
+
Requires-Dist: PyYAML>=6.0
|
|
18
|
+
Requires-Dist: mcp>=1.6.0
|
|
19
|
+
Provides-Extra: ui
|
|
20
|
+
Requires-Dist: chainlit==2.5.5; extra == "ui"
|
|
21
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "ui"
|
|
22
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "ui"
|
|
23
|
+
Requires-Dist: greenlet>=3.0.3; extra == "ui"
|
|
24
|
+
Requires-Dist: pydantic<=2.10.1; extra == "ui"
|
|
25
|
+
Provides-Extra: gradio
|
|
26
|
+
Requires-Dist: gradio>=4.26.0; extra == "gradio"
|
|
27
|
+
Provides-Extra: api
|
|
28
|
+
Requires-Dist: flask>=3.0.0; extra == "api"
|
|
29
|
+
Requires-Dist: fastapi>=0.115.0; extra == "api"
|
|
30
|
+
Requires-Dist: uvicorn>=0.34.0; extra == "api"
|
|
31
|
+
Provides-Extra: agentops
|
|
32
|
+
Requires-Dist: agentops>=0.3.12; extra == "agentops"
|
|
33
|
+
Provides-Extra: google
|
|
34
|
+
Requires-Dist: langchain-google-genai>=2.1.0; extra == "google"
|
|
35
|
+
Provides-Extra: openai
|
|
36
|
+
Requires-Dist: langchain-openai<0.3.0,>=0.2.1; extra == "openai"
|
|
37
|
+
Provides-Extra: anthropic
|
|
38
|
+
Requires-Dist: langchain-anthropic>=0.3.0; extra == "anthropic"
|
|
39
|
+
Provides-Extra: cohere
|
|
40
|
+
Requires-Dist: langchain-cohere<0.4.0,>=0.3.0; extra == "cohere"
|
|
41
|
+
Provides-Extra: chat
|
|
42
|
+
Requires-Dist: chainlit==2.5.5; extra == "chat"
|
|
43
|
+
Requires-Dist: litellm>=1.72.6; extra == "chat"
|
|
44
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "chat"
|
|
45
|
+
Requires-Dist: greenlet>=3.0.3; extra == "chat"
|
|
46
|
+
Requires-Dist: tavily-python==0.5.0; extra == "chat"
|
|
47
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "chat"
|
|
48
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "chat"
|
|
49
|
+
Requires-Dist: playwright>=1.47.0; extra == "chat"
|
|
50
|
+
Requires-Dist: rich; extra == "chat"
|
|
51
|
+
Requires-Dist: pydantic<=2.10.1; extra == "chat"
|
|
52
|
+
Provides-Extra: code
|
|
53
|
+
Requires-Dist: chainlit==2.5.5; extra == "code"
|
|
54
|
+
Requires-Dist: litellm>=1.72.6; extra == "code"
|
|
55
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "code"
|
|
56
|
+
Requires-Dist: greenlet>=3.0.3; extra == "code"
|
|
57
|
+
Requires-Dist: tavily-python==0.5.0; extra == "code"
|
|
58
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "code"
|
|
59
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "code"
|
|
60
|
+
Requires-Dist: playwright>=1.47.0; extra == "code"
|
|
61
|
+
Requires-Dist: pydantic<=2.10.1; extra == "code"
|
|
62
|
+
Provides-Extra: realtime
|
|
63
|
+
Requires-Dist: chainlit==2.5.5; extra == "realtime"
|
|
64
|
+
Requires-Dist: litellm>=1.72.6; extra == "realtime"
|
|
65
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "realtime"
|
|
66
|
+
Requires-Dist: greenlet>=3.0.3; extra == "realtime"
|
|
67
|
+
Requires-Dist: tavily-python==0.5.0; extra == "realtime"
|
|
68
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "realtime"
|
|
69
|
+
Requires-Dist: websockets>=12.0; extra == "realtime"
|
|
70
|
+
Requires-Dist: plotly>=5.24.0; extra == "realtime"
|
|
71
|
+
Requires-Dist: yfinance>=0.2.44; extra == "realtime"
|
|
72
|
+
Requires-Dist: duckduckgo_search>=6.3.0; extra == "realtime"
|
|
73
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "realtime"
|
|
74
|
+
Provides-Extra: call
|
|
75
|
+
Requires-Dist: twilio>=7.0.0; extra == "call"
|
|
76
|
+
Requires-Dist: fastapi>=0.95.0; extra == "call"
|
|
77
|
+
Requires-Dist: uvicorn>=0.20.0; extra == "call"
|
|
78
|
+
Requires-Dist: websockets>=12.0; extra == "call"
|
|
79
|
+
Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
|
|
80
|
+
Requires-Dist: pyngrok>=1.4.0; extra == "call"
|
|
81
|
+
Requires-Dist: rich; extra == "call"
|
|
82
|
+
Requires-Dist: openai>=1.54.0; extra == "call"
|
|
83
|
+
Provides-Extra: train
|
|
84
|
+
Provides-Extra: crewai
|
|
85
|
+
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
86
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "crewai"
|
|
87
|
+
Provides-Extra: autogen
|
|
88
|
+
Requires-Dist: pyautogen==0.2.29; extra == "autogen"
|
|
89
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen"
|
|
90
|
+
Requires-Dist: crewai; extra == "autogen"
|
|
91
|
+
Provides-Extra: autogen-v4
|
|
92
|
+
Requires-Dist: autogen-agentchat>=0.4.0; extra == "autogen-v4"
|
|
93
|
+
Requires-Dist: autogen-ext[openai]>=0.4.0; extra == "autogen-v4"
|
|
94
|
+
Requires-Dist: autogen-core>=0.4.0; extra == "autogen-v4"
|
|
95
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen-v4"
|
|
96
|
+
Requires-Dist: crewai; extra == "autogen-v4"
|
|
97
|
+
|
|
98
|
+
# PraisonAI Package
|
|
99
|
+
|
|
100
|
+
## Development
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Install
|
|
104
|
+
uv sync
|
|
105
|
+
|
|
106
|
+
# Build
|
|
107
|
+
uv build
|
|
108
|
+
|
|
109
|
+
# Publish
|
|
110
|
+
uv publish
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Version Bump
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# From project root
|
|
117
|
+
python src/praisonai/scripts/bump_version.py 2.2.96
|
|
118
|
+
|
|
119
|
+
# With praisonaiagents dependency
|
|
120
|
+
python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Release
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# From project root (runs uv lock, build, git tag, gh release)
|
|
127
|
+
python src/praisonai/scripts/release.py
|
|
128
|
+
|
|
129
|
+
# Then publish
|
|
130
|
+
cd src/praisonai && uv publish
|
|
131
|
+
```
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: PraisonAI
|
|
3
|
+
Version: 2.2.96
|
|
4
|
+
Summary: PraisonAI is an AI Agents Framework with Self Reflection. PraisonAI application combines PraisonAI Agents, AutoGen, and CrewAI into a low-code solution for building and managing multi-agent LLM systems, focusing on simplicity, customisation, and efficient human-agent collaboration.
|
|
5
|
+
Author: Mervin Praison
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://docs.praison.ai
|
|
8
|
+
Project-URL: Repository, https://github.com/mervinpraison/PraisonAI
|
|
9
|
+
Requires-Python: >=3.10
|
|
10
|
+
Description-Content-Type: text/markdown
|
|
11
|
+
Requires-Dist: rich>=13.7
|
|
12
|
+
Requires-Dist: markdown>=3.5
|
|
13
|
+
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.0.167
|
|
15
|
+
Requires-Dist: python-dotenv>=0.19.0
|
|
16
|
+
Requires-Dist: instructor>=1.3.3
|
|
17
|
+
Requires-Dist: PyYAML>=6.0
|
|
18
|
+
Requires-Dist: mcp>=1.6.0
|
|
19
|
+
Provides-Extra: ui
|
|
20
|
+
Requires-Dist: chainlit==2.5.5; extra == "ui"
|
|
21
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "ui"
|
|
22
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "ui"
|
|
23
|
+
Requires-Dist: greenlet>=3.0.3; extra == "ui"
|
|
24
|
+
Requires-Dist: pydantic<=2.10.1; extra == "ui"
|
|
25
|
+
Provides-Extra: gradio
|
|
26
|
+
Requires-Dist: gradio>=4.26.0; extra == "gradio"
|
|
27
|
+
Provides-Extra: api
|
|
28
|
+
Requires-Dist: flask>=3.0.0; extra == "api"
|
|
29
|
+
Requires-Dist: fastapi>=0.115.0; extra == "api"
|
|
30
|
+
Requires-Dist: uvicorn>=0.34.0; extra == "api"
|
|
31
|
+
Provides-Extra: agentops
|
|
32
|
+
Requires-Dist: agentops>=0.3.12; extra == "agentops"
|
|
33
|
+
Provides-Extra: google
|
|
34
|
+
Requires-Dist: langchain-google-genai>=2.1.0; extra == "google"
|
|
35
|
+
Provides-Extra: openai
|
|
36
|
+
Requires-Dist: langchain-openai<0.3.0,>=0.2.1; extra == "openai"
|
|
37
|
+
Provides-Extra: anthropic
|
|
38
|
+
Requires-Dist: langchain-anthropic>=0.3.0; extra == "anthropic"
|
|
39
|
+
Provides-Extra: cohere
|
|
40
|
+
Requires-Dist: langchain-cohere<0.4.0,>=0.3.0; extra == "cohere"
|
|
41
|
+
Provides-Extra: chat
|
|
42
|
+
Requires-Dist: chainlit==2.5.5; extra == "chat"
|
|
43
|
+
Requires-Dist: litellm>=1.72.6; extra == "chat"
|
|
44
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "chat"
|
|
45
|
+
Requires-Dist: greenlet>=3.0.3; extra == "chat"
|
|
46
|
+
Requires-Dist: tavily-python==0.5.0; extra == "chat"
|
|
47
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "chat"
|
|
48
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "chat"
|
|
49
|
+
Requires-Dist: playwright>=1.47.0; extra == "chat"
|
|
50
|
+
Requires-Dist: rich; extra == "chat"
|
|
51
|
+
Requires-Dist: pydantic<=2.10.1; extra == "chat"
|
|
52
|
+
Provides-Extra: code
|
|
53
|
+
Requires-Dist: chainlit==2.5.5; extra == "code"
|
|
54
|
+
Requires-Dist: litellm>=1.72.6; extra == "code"
|
|
55
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "code"
|
|
56
|
+
Requires-Dist: greenlet>=3.0.3; extra == "code"
|
|
57
|
+
Requires-Dist: tavily-python==0.5.0; extra == "code"
|
|
58
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "code"
|
|
59
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "code"
|
|
60
|
+
Requires-Dist: playwright>=1.47.0; extra == "code"
|
|
61
|
+
Requires-Dist: pydantic<=2.10.1; extra == "code"
|
|
62
|
+
Provides-Extra: realtime
|
|
63
|
+
Requires-Dist: chainlit==2.5.5; extra == "realtime"
|
|
64
|
+
Requires-Dist: litellm>=1.72.6; extra == "realtime"
|
|
65
|
+
Requires-Dist: aiosqlite>=0.20.0; extra == "realtime"
|
|
66
|
+
Requires-Dist: greenlet>=3.0.3; extra == "realtime"
|
|
67
|
+
Requires-Dist: tavily-python==0.5.0; extra == "realtime"
|
|
68
|
+
Requires-Dist: crawl4ai>=0.7.0; extra == "realtime"
|
|
69
|
+
Requires-Dist: websockets>=12.0; extra == "realtime"
|
|
70
|
+
Requires-Dist: plotly>=5.24.0; extra == "realtime"
|
|
71
|
+
Requires-Dist: yfinance>=0.2.44; extra == "realtime"
|
|
72
|
+
Requires-Dist: duckduckgo_search>=6.3.0; extra == "realtime"
|
|
73
|
+
Requires-Dist: sqlalchemy>=2.0.36; extra == "realtime"
|
|
74
|
+
Provides-Extra: call
|
|
75
|
+
Requires-Dist: twilio>=7.0.0; extra == "call"
|
|
76
|
+
Requires-Dist: fastapi>=0.95.0; extra == "call"
|
|
77
|
+
Requires-Dist: uvicorn>=0.20.0; extra == "call"
|
|
78
|
+
Requires-Dist: websockets>=12.0; extra == "call"
|
|
79
|
+
Requires-Dist: flaml[automl]>=2.3.1; extra == "call"
|
|
80
|
+
Requires-Dist: pyngrok>=1.4.0; extra == "call"
|
|
81
|
+
Requires-Dist: rich; extra == "call"
|
|
82
|
+
Requires-Dist: openai>=1.54.0; extra == "call"
|
|
83
|
+
Provides-Extra: train
|
|
84
|
+
Provides-Extra: crewai
|
|
85
|
+
Requires-Dist: crewai>=0.157.0; extra == "crewai"
|
|
86
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "crewai"
|
|
87
|
+
Provides-Extra: autogen
|
|
88
|
+
Requires-Dist: pyautogen==0.2.29; extra == "autogen"
|
|
89
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen"
|
|
90
|
+
Requires-Dist: crewai; extra == "autogen"
|
|
91
|
+
Provides-Extra: autogen-v4
|
|
92
|
+
Requires-Dist: autogen-agentchat>=0.4.0; extra == "autogen-v4"
|
|
93
|
+
Requires-Dist: autogen-ext[openai]>=0.4.0; extra == "autogen-v4"
|
|
94
|
+
Requires-Dist: autogen-core>=0.4.0; extra == "autogen-v4"
|
|
95
|
+
Requires-Dist: praisonai-tools>=0.0.22; extra == "autogen-v4"
|
|
96
|
+
Requires-Dist: crewai; extra == "autogen-v4"
|
|
97
|
+
|
|
98
|
+
# PraisonAI Package
|
|
99
|
+
|
|
100
|
+
## Development
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Install
|
|
104
|
+
uv sync
|
|
105
|
+
|
|
106
|
+
# Build
|
|
107
|
+
uv build
|
|
108
|
+
|
|
109
|
+
# Publish
|
|
110
|
+
uv publish
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
## Version Bump
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
# From project root
|
|
117
|
+
python src/praisonai/scripts/bump_version.py 2.2.96
|
|
118
|
+
|
|
119
|
+
# With praisonaiagents dependency
|
|
120
|
+
python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Release
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# From project root (runs uv lock, build, git tag, gh release)
|
|
127
|
+
python src/praisonai/scripts/release.py
|
|
128
|
+
|
|
129
|
+
# Then publish
|
|
130
|
+
cd src/praisonai && uv publish
|
|
131
|
+
```
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
PraisonAI.egg-info/PKG-INFO
|
|
4
|
+
PraisonAI.egg-info/SOURCES.txt
|
|
5
|
+
PraisonAI.egg-info/dependency_links.txt
|
|
6
|
+
PraisonAI.egg-info/entry_points.txt
|
|
7
|
+
PraisonAI.egg-info/requires.txt
|
|
8
|
+
PraisonAI.egg-info/top_level.txt
|
|
9
|
+
praisonai/__init__.py
|
|
10
|
+
praisonai/__main__.py
|
|
11
|
+
praisonai/agents_generator.py
|
|
12
|
+
praisonai/auto.py
|
|
13
|
+
praisonai/chainlit_ui.py
|
|
14
|
+
praisonai/cli.py
|
|
15
|
+
praisonai/deploy.py
|
|
16
|
+
praisonai/scheduler.py
|
|
17
|
+
praisonai/setup.py
|
|
18
|
+
praisonai/test.py
|
|
19
|
+
praisonai/train.py
|
|
20
|
+
praisonai/train_vision.py
|
|
21
|
+
praisonai/upload_vision.py
|
|
22
|
+
praisonai/version.py
|
|
23
|
+
praisonai/api/call.py
|
|
24
|
+
praisonai/inbuilt_tools/__init__.py
|
|
25
|
+
praisonai/inbuilt_tools/autogen_tools.py
|
|
26
|
+
praisonai/inc/__init__.py
|
|
27
|
+
praisonai/inc/config.py
|
|
28
|
+
praisonai/inc/models.py
|
|
29
|
+
praisonai/setup/__init__.py
|
|
30
|
+
praisonai/setup/build.py
|
|
31
|
+
praisonai/setup/post_install.py
|
|
32
|
+
praisonai/setup/setup_conda_env.py
|
|
33
|
+
praisonai/ui/agents.py
|
|
34
|
+
praisonai/ui/callbacks.py
|
|
35
|
+
praisonai/ui/chat.py
|
|
36
|
+
praisonai/ui/code.py
|
|
37
|
+
praisonai/ui/colab.py
|
|
38
|
+
praisonai/ui/colab_chainlit.py
|
|
39
|
+
praisonai/ui/context.py
|
|
40
|
+
praisonai/ui/database_config.py
|
|
41
|
+
praisonai/ui/db.py
|
|
42
|
+
praisonai/ui/realtime.py
|
|
43
|
+
praisonai/ui/sql_alchemy.py
|
|
44
|
+
praisonai/ui/components/aicoder.py
|
|
45
|
+
praisonai/ui/realtimeclient/__init__.py
|
|
46
|
+
praisonai/ui/realtimeclient/tools.py
|
|
47
|
+
tests/test.py
|
|
48
|
+
tests/test_agents_playbook.py
|
|
49
|
+
tests/test_basic.py
|
|
50
|
+
tests/test_custom_tools_fix.py
|
|
51
|
+
tests/test_double_api_fix.py
|
|
52
|
+
tests/test_phase2_refactor.py
|
|
53
|
+
tests/test_runner.py
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
rich>=13.7
|
|
2
|
+
markdown>=3.5
|
|
3
|
+
pyparsing>=3.0.0
|
|
4
|
+
praisonaiagents>=0.0.167
|
|
5
|
+
python-dotenv>=0.19.0
|
|
6
|
+
instructor>=1.3.3
|
|
7
|
+
PyYAML>=6.0
|
|
8
|
+
mcp>=1.6.0
|
|
9
|
+
|
|
10
|
+
[agentops]
|
|
11
|
+
agentops>=0.3.12
|
|
12
|
+
|
|
13
|
+
[anthropic]
|
|
14
|
+
langchain-anthropic>=0.3.0
|
|
15
|
+
|
|
16
|
+
[api]
|
|
17
|
+
flask>=3.0.0
|
|
18
|
+
fastapi>=0.115.0
|
|
19
|
+
uvicorn>=0.34.0
|
|
20
|
+
|
|
21
|
+
[autogen]
|
|
22
|
+
pyautogen==0.2.29
|
|
23
|
+
praisonai-tools>=0.0.22
|
|
24
|
+
crewai
|
|
25
|
+
|
|
26
|
+
[autogen-v4]
|
|
27
|
+
autogen-agentchat>=0.4.0
|
|
28
|
+
autogen-ext[openai]>=0.4.0
|
|
29
|
+
autogen-core>=0.4.0
|
|
30
|
+
praisonai-tools>=0.0.22
|
|
31
|
+
crewai
|
|
32
|
+
|
|
33
|
+
[call]
|
|
34
|
+
twilio>=7.0.0
|
|
35
|
+
fastapi>=0.95.0
|
|
36
|
+
uvicorn>=0.20.0
|
|
37
|
+
websockets>=12.0
|
|
38
|
+
flaml[automl]>=2.3.1
|
|
39
|
+
pyngrok>=1.4.0
|
|
40
|
+
rich
|
|
41
|
+
openai>=1.54.0
|
|
42
|
+
|
|
43
|
+
[chat]
|
|
44
|
+
chainlit==2.5.5
|
|
45
|
+
litellm>=1.72.6
|
|
46
|
+
aiosqlite>=0.20.0
|
|
47
|
+
greenlet>=3.0.3
|
|
48
|
+
tavily-python==0.5.0
|
|
49
|
+
crawl4ai>=0.7.0
|
|
50
|
+
sqlalchemy>=2.0.36
|
|
51
|
+
playwright>=1.47.0
|
|
52
|
+
rich
|
|
53
|
+
pydantic<=2.10.1
|
|
54
|
+
|
|
55
|
+
[code]
|
|
56
|
+
chainlit==2.5.5
|
|
57
|
+
litellm>=1.72.6
|
|
58
|
+
aiosqlite>=0.20.0
|
|
59
|
+
greenlet>=3.0.3
|
|
60
|
+
tavily-python==0.5.0
|
|
61
|
+
crawl4ai>=0.7.0
|
|
62
|
+
sqlalchemy>=2.0.36
|
|
63
|
+
playwright>=1.47.0
|
|
64
|
+
pydantic<=2.10.1
|
|
65
|
+
|
|
66
|
+
[cohere]
|
|
67
|
+
langchain-cohere<0.4.0,>=0.3.0
|
|
68
|
+
|
|
69
|
+
[crewai]
|
|
70
|
+
crewai>=0.157.0
|
|
71
|
+
praisonai-tools>=0.0.22
|
|
72
|
+
|
|
73
|
+
[google]
|
|
74
|
+
langchain-google-genai>=2.1.0
|
|
75
|
+
|
|
76
|
+
[gradio]
|
|
77
|
+
gradio>=4.26.0
|
|
78
|
+
|
|
79
|
+
[openai]
|
|
80
|
+
langchain-openai<0.3.0,>=0.2.1
|
|
81
|
+
|
|
82
|
+
[realtime]
|
|
83
|
+
chainlit==2.5.5
|
|
84
|
+
litellm>=1.72.6
|
|
85
|
+
aiosqlite>=0.20.0
|
|
86
|
+
greenlet>=3.0.3
|
|
87
|
+
tavily-python==0.5.0
|
|
88
|
+
crawl4ai>=0.7.0
|
|
89
|
+
websockets>=12.0
|
|
90
|
+
plotly>=5.24.0
|
|
91
|
+
yfinance>=0.2.44
|
|
92
|
+
duckduckgo_search>=6.3.0
|
|
93
|
+
sqlalchemy>=2.0.36
|
|
94
|
+
|
|
95
|
+
[train]
|
|
96
|
+
|
|
97
|
+
[ui]
|
|
98
|
+
chainlit==2.5.5
|
|
99
|
+
sqlalchemy>=2.0.36
|
|
100
|
+
aiosqlite>=0.20.0
|
|
101
|
+
greenlet>=3.0.3
|
|
102
|
+
pydantic<=2.10.1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
praisonai
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# PraisonAI Package
|
|
2
|
+
|
|
3
|
+
## Development
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# Install
|
|
7
|
+
uv sync
|
|
8
|
+
|
|
9
|
+
# Build
|
|
10
|
+
uv build
|
|
11
|
+
|
|
12
|
+
# Publish
|
|
13
|
+
uv publish
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Version Bump
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# From project root
|
|
20
|
+
python src/praisonai/scripts/bump_version.py 2.2.96
|
|
21
|
+
|
|
22
|
+
# With praisonaiagents dependency
|
|
23
|
+
python src/praisonai/scripts/bump_version.py 2.2.96 --agents 0.0.167
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Release
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# From project root (runs uv lock, build, git tag, gh release)
|
|
30
|
+
python src/praisonai/scripts/release.py
|
|
31
|
+
|
|
32
|
+
# Then publish
|
|
33
|
+
cd src/praisonai && uv publish
|
|
34
|
+
```
|
|
@@ -578,6 +578,9 @@ class PraisonAI:
|
|
|
578
578
|
parser.add_argument("--goal", type=str, help="Goal for context engineering")
|
|
579
579
|
parser.add_argument("--auto-analyze", action="store_true", help="Enable automatic analysis in context engineering")
|
|
580
580
|
parser.add_argument("--research", action="store_true", help="Run deep research on a topic")
|
|
581
|
+
parser.add_argument("--query-rewrite", action="store_true", help="Rewrite query before research for better results")
|
|
582
|
+
parser.add_argument("--rewrite-tools", type=str, help="Tools for query rewriter (e.g., 'internet_search' or path to tools.py)")
|
|
583
|
+
parser.add_argument("--tools", "-t", type=str, help="Path to tools.py file for research agent")
|
|
581
584
|
parser.add_argument("--save", "-s", action="store_true", help="Save research output to file (output/research/)")
|
|
582
585
|
parser.add_argument("--verbose", "-v", action="store_true", help="Enable verbose output for research")
|
|
583
586
|
|
|
@@ -721,7 +724,10 @@ class PraisonAI:
|
|
|
721
724
|
research_model = getattr(args, 'model', None)
|
|
722
725
|
verbose = getattr(args, 'verbose', False)
|
|
723
726
|
save = getattr(args, 'save', False)
|
|
724
|
-
|
|
727
|
+
query_rewrite = getattr(args, 'query_rewrite', False)
|
|
728
|
+
rewrite_tools = getattr(args, 'rewrite_tools', None)
|
|
729
|
+
tools_path = getattr(args, 'tools', None)
|
|
730
|
+
self.handle_research_command(research_query, research_model, verbose, save, query_rewrite, tools_path, rewrite_tools)
|
|
725
731
|
sys.exit(0)
|
|
726
732
|
|
|
727
733
|
# Only check framework availability for agent-related operations
|
|
@@ -961,7 +967,7 @@ class PraisonAI:
|
|
|
961
967
|
print(f"[red]ERROR: Context engineering failed: {e}[/red]")
|
|
962
968
|
sys.exit(1)
|
|
963
969
|
|
|
964
|
-
def handle_research_command(self, query: str, model: str = None, verbose: bool = False, save: bool = False) -> str:
|
|
970
|
+
def handle_research_command(self, query: str, model: str = None, verbose: bool = False, save: bool = False, query_rewrite: bool = False, tools_path: str = None, rewrite_tools: str = None) -> str:
|
|
965
971
|
"""
|
|
966
972
|
Handle the research command by creating a DeepResearchAgent and running it.
|
|
967
973
|
|
|
@@ -970,6 +976,9 @@ class PraisonAI:
|
|
|
970
976
|
model: Model for deep research (optional, defaults to o4-mini-deep-research)
|
|
971
977
|
verbose: Enable verbose output (default: False)
|
|
972
978
|
save: Save output to file (default: False)
|
|
979
|
+
query_rewrite: Rewrite query before research (default: False)
|
|
980
|
+
tools_path: Path to tools.py file with custom tools (default: None)
|
|
981
|
+
rewrite_tools: Tools for query rewriter (tool names or file path)
|
|
973
982
|
|
|
974
983
|
Returns:
|
|
975
984
|
str: Research report
|
|
@@ -984,6 +993,62 @@ class PraisonAI:
|
|
|
984
993
|
logging.getLogger('httpx').setLevel(logging.WARNING)
|
|
985
994
|
logging.getLogger('httpcore').setLevel(logging.WARNING)
|
|
986
995
|
|
|
996
|
+
# Rewrite query if requested
|
|
997
|
+
original_query = query
|
|
998
|
+
if query_rewrite:
|
|
999
|
+
try:
|
|
1000
|
+
from praisonaiagents import QueryRewriterAgent, RewriteStrategy
|
|
1001
|
+
print("[bold cyan]Rewriting query for better research results...[/bold cyan]")
|
|
1002
|
+
|
|
1003
|
+
# Load rewrite tools if specified
|
|
1004
|
+
rewrite_tools_list = []
|
|
1005
|
+
if rewrite_tools:
|
|
1006
|
+
if os.path.isfile(rewrite_tools):
|
|
1007
|
+
# Load from file
|
|
1008
|
+
try:
|
|
1009
|
+
import inspect
|
|
1010
|
+
spec = importlib.util.spec_from_file_location("rewrite_tools_module", rewrite_tools)
|
|
1011
|
+
if spec and spec.loader:
|
|
1012
|
+
module = importlib.util.module_from_spec(spec)
|
|
1013
|
+
spec.loader.exec_module(module)
|
|
1014
|
+
for name, obj in inspect.getmembers(module):
|
|
1015
|
+
if inspect.isfunction(obj) and not name.startswith('_'):
|
|
1016
|
+
rewrite_tools_list.append(obj)
|
|
1017
|
+
if rewrite_tools_list:
|
|
1018
|
+
print(f"[cyan]Loaded {len(rewrite_tools_list)} tools for query rewriter[/cyan]")
|
|
1019
|
+
except Exception as e:
|
|
1020
|
+
print(f"[yellow]Warning: Failed to load rewrite tools: {e}[/yellow]")
|
|
1021
|
+
else:
|
|
1022
|
+
# Treat as comma-separated tool names
|
|
1023
|
+
try:
|
|
1024
|
+
from praisonaiagents.tools import TOOL_MAPPINGS
|
|
1025
|
+
import praisonaiagents.tools as tools_module
|
|
1026
|
+
|
|
1027
|
+
tool_names = [t.strip() for t in rewrite_tools.split(',')]
|
|
1028
|
+
for tool_name in tool_names:
|
|
1029
|
+
if tool_name in TOOL_MAPPINGS:
|
|
1030
|
+
try:
|
|
1031
|
+
tool = getattr(tools_module, tool_name)
|
|
1032
|
+
rewrite_tools_list.append(tool)
|
|
1033
|
+
except Exception as e:
|
|
1034
|
+
print(f"[yellow]Warning: Failed to load rewrite tool '{tool_name}': {e}[/yellow]")
|
|
1035
|
+
else:
|
|
1036
|
+
print(f"[yellow]Warning: Unknown rewrite tool '{tool_name}'[/yellow]")
|
|
1037
|
+
if rewrite_tools_list:
|
|
1038
|
+
print(f"[cyan]Using rewrite tools: {', '.join(tool_names)}[/cyan]")
|
|
1039
|
+
except ImportError:
|
|
1040
|
+
print("[yellow]Warning: Could not import tools module[/yellow]")
|
|
1041
|
+
|
|
1042
|
+
rewriter = QueryRewriterAgent(model="gpt-4o-mini", verbose=verbose, tools=rewrite_tools_list if rewrite_tools_list else None)
|
|
1043
|
+
result = rewriter.rewrite(query, strategy=RewriteStrategy.AUTO)
|
|
1044
|
+
query = result.primary_query
|
|
1045
|
+
print(f"[cyan]Original:[/cyan] {original_query}")
|
|
1046
|
+
print(f"[cyan]Rewritten:[/cyan] {query}")
|
|
1047
|
+
except ImportError:
|
|
1048
|
+
print("[yellow]Warning: QueryRewriterAgent not available, using original query[/yellow]")
|
|
1049
|
+
except Exception as e:
|
|
1050
|
+
print(f"[yellow]Warning: Query rewrite failed ({e}), using original query[/yellow]")
|
|
1051
|
+
|
|
987
1052
|
print("[bold green]Starting Deep Research...[/bold green]")
|
|
988
1053
|
print(f"Query: {query}")
|
|
989
1054
|
|
|
@@ -993,11 +1058,86 @@ class PraisonAI:
|
|
|
993
1058
|
|
|
994
1059
|
print(f"Model: {model}")
|
|
995
1060
|
|
|
996
|
-
#
|
|
997
|
-
|
|
1061
|
+
# Load tools if specified
|
|
1062
|
+
tools_list = []
|
|
1063
|
+
if tools_path:
|
|
1064
|
+
# Check if it's a file path or comma-separated tool names
|
|
1065
|
+
if os.path.isfile(tools_path):
|
|
1066
|
+
# Load from file
|
|
1067
|
+
try:
|
|
1068
|
+
import inspect
|
|
1069
|
+
spec = importlib.util.spec_from_file_location("tools_module", tools_path)
|
|
1070
|
+
if spec and spec.loader:
|
|
1071
|
+
module = importlib.util.module_from_spec(spec)
|
|
1072
|
+
spec.loader.exec_module(module)
|
|
1073
|
+
# Get all callable functions from the module
|
|
1074
|
+
for name, obj in inspect.getmembers(module):
|
|
1075
|
+
if inspect.isfunction(obj) and not name.startswith('_'):
|
|
1076
|
+
tools_list.append(obj)
|
|
1077
|
+
if tools_list:
|
|
1078
|
+
print(f"[cyan]Loaded {len(tools_list)} tools from {tools_path}[/cyan]")
|
|
1079
|
+
except Exception as e:
|
|
1080
|
+
print(f"[yellow]Warning: Failed to load tools from {tools_path}: {e}[/yellow]")
|
|
1081
|
+
else:
|
|
1082
|
+
# Treat as comma-separated tool names (e.g., "internet_search,wiki_search")
|
|
1083
|
+
try:
|
|
1084
|
+
from praisonaiagents.tools import TOOL_MAPPINGS
|
|
1085
|
+
import praisonaiagents.tools as tools_module
|
|
1086
|
+
|
|
1087
|
+
tool_names = [t.strip() for t in tools_path.split(',')]
|
|
1088
|
+
for tool_name in tool_names:
|
|
1089
|
+
if tool_name in TOOL_MAPPINGS:
|
|
1090
|
+
try:
|
|
1091
|
+
tool = getattr(tools_module, tool_name)
|
|
1092
|
+
tools_list.append(tool)
|
|
1093
|
+
except Exception as e:
|
|
1094
|
+
print(f"[yellow]Warning: Failed to load tool '{tool_name}': {e}[/yellow]")
|
|
1095
|
+
else:
|
|
1096
|
+
print(f"[yellow]Warning: Unknown tool '{tool_name}'[/yellow]")
|
|
1097
|
+
if tools_list:
|
|
1098
|
+
print(f"[cyan]Loaded {len(tools_list)} built-in tools: {', '.join(tool_names)}[/cyan]")
|
|
1099
|
+
except ImportError:
|
|
1100
|
+
print("[yellow]Warning: Could not import tools module[/yellow]")
|
|
998
1101
|
|
|
999
|
-
#
|
|
1000
|
-
|
|
1102
|
+
# If tools are provided, use Agent with tools first, then DeepResearchAgent
|
|
1103
|
+
if tools_list:
|
|
1104
|
+
from praisonaiagents import Agent, Task, PraisonAIAgents
|
|
1105
|
+
|
|
1106
|
+
# Create a research assistant agent with tools
|
|
1107
|
+
research_assistant = Agent(
|
|
1108
|
+
name="Research Assistant",
|
|
1109
|
+
role="Information Gatherer",
|
|
1110
|
+
goal="Gather relevant information using available tools",
|
|
1111
|
+
backstory="You are an expert at using tools to gather information for research.",
|
|
1112
|
+
tools=tools_list,
|
|
1113
|
+
llm="gpt-4o-mini",
|
|
1114
|
+
verbose=False
|
|
1115
|
+
)
|
|
1116
|
+
|
|
1117
|
+
# Create task to gather initial information
|
|
1118
|
+
gather_task = Task(
|
|
1119
|
+
description=f"Use your tools to gather relevant information about: {query}",
|
|
1120
|
+
expected_output="A summary of information gathered from the tools",
|
|
1121
|
+
agent=research_assistant
|
|
1122
|
+
)
|
|
1123
|
+
|
|
1124
|
+
print("[cyan]Gathering information with tools...[/cyan]")
|
|
1125
|
+
agents = PraisonAIAgents(agents=[research_assistant], tasks=[gather_task], verbose=0)
|
|
1126
|
+
tool_results = agents.start()
|
|
1127
|
+
|
|
1128
|
+
# Enhance query with tool results
|
|
1129
|
+
enhanced_query = f"{query}\n\nAdditional context from tools:\n{tool_results}"
|
|
1130
|
+
print("[cyan]Tools context gathered, starting deep research...[/cyan]")
|
|
1131
|
+
|
|
1132
|
+
# Create DeepResearchAgent
|
|
1133
|
+
agent = DeepResearchAgent(model=model)
|
|
1134
|
+
result = agent.research(enhanced_query)
|
|
1135
|
+
else:
|
|
1136
|
+
# Create DeepResearchAgent (verbose=True is default for streaming output)
|
|
1137
|
+
agent = DeepResearchAgent(model=model)
|
|
1138
|
+
|
|
1139
|
+
# Execute the research
|
|
1140
|
+
result = agent.research(query)
|
|
1001
1141
|
|
|
1002
1142
|
print("\n[bold green]Research Complete![/bold green]")
|
|
1003
1143
|
print("\n" + "="*60)
|
|
@@ -57,7 +57,7 @@ class CloudDeployer:
|
|
|
57
57
|
file.write("FROM python:3.11-slim\n")
|
|
58
58
|
file.write("WORKDIR /app\n")
|
|
59
59
|
file.write("COPY . .\n")
|
|
60
|
-
file.write("RUN pip install flask praisonai==2.2.
|
|
60
|
+
file.write("RUN pip install flask praisonai==2.2.96 gunicorn markdown\n")
|
|
61
61
|
file.write("EXPOSE 8080\n")
|
|
62
62
|
file.write('CMD ["gunicorn", "-b", "0.0.0.0:8080", "api:app"]\n')
|
|
63
63
|
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "2.2.96"
|