PraisonAI 2.2.52__tar.gz → 2.3.3__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.
Files changed (98) hide show
  1. praisonai-2.3.3/PKG-INFO +1033 -0
  2. praisonai-2.3.3/PraisonAI.egg-info/PKG-INFO +1033 -0
  3. praisonai-2.3.3/PraisonAI.egg-info/SOURCES.txt +53 -0
  4. praisonai-2.3.3/PraisonAI.egg-info/dependency_links.txt +1 -0
  5. praisonai-2.3.3/PraisonAI.egg-info/entry_points.txt +4 -0
  6. praisonai-2.3.3/PraisonAI.egg-info/requires.txt +102 -0
  7. praisonai-2.3.3/PraisonAI.egg-info/top_level.txt +1 -0
  8. praisonai-2.3.3/README.md +936 -0
  9. praisonai-2.3.3/praisonai/__init__.py +31 -0
  10. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/agents_generator.py +191 -12
  11. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/auto.py +19 -4
  12. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/chainlit_ui.py +1 -1
  13. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/cli.py +529 -12
  14. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/deploy.py +4 -4
  15. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/inc/models.py +10 -6
  16. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/test.py +1 -1
  17. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/agents.py +4 -4
  18. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/chat.py +5 -5
  19. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/code.py +5 -5
  20. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/colab.py +2 -2
  21. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/realtime.py +5 -5
  22. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/realtimeclient/__init__.py +3 -3
  23. praisonai-2.3.3/praisonai/version.py +1 -0
  24. praisonai-2.3.3/pyproject.toml +116 -0
  25. praisonai-2.3.3/setup.cfg +4 -0
  26. praisonai-2.3.3/tests/test.py +108 -0
  27. praisonai-2.3.3/tests/test_agents_playbook.py +36 -0
  28. praisonai-2.3.3/tests/test_basic.py +32 -0
  29. praisonai-2.3.3/tests/test_custom_tools_fix.py +83 -0
  30. praisonai-2.3.3/tests/test_double_api_fix.py +187 -0
  31. praisonai-2.3.3/tests/test_phase2_refactor.py +152 -0
  32. praisonai-2.3.3/tests/test_runner.py +355 -0
  33. praisonai-2.2.52/PKG-INFO +0 -104
  34. praisonai-2.2.52/README.md +0 -9
  35. praisonai-2.2.52/praisonai/README.md +0 -5
  36. praisonai-2.2.52/praisonai/__init__.py +0 -6
  37. praisonai-2.2.52/praisonai/public/android-chrome-192x192.png +0 -0
  38. praisonai-2.2.52/praisonai/public/android-chrome-512x512.png +0 -0
  39. praisonai-2.2.52/praisonai/public/apple-touch-icon.png +0 -0
  40. praisonai-2.2.52/praisonai/public/fantasy.svg +0 -3
  41. praisonai-2.2.52/praisonai/public/favicon-16x16.png +0 -0
  42. praisonai-2.2.52/praisonai/public/favicon-32x32.png +0 -0
  43. praisonai-2.2.52/praisonai/public/favicon.ico +0 -0
  44. praisonai-2.2.52/praisonai/public/game.svg +0 -3
  45. praisonai-2.2.52/praisonai/public/logo_dark.png +0 -0
  46. praisonai-2.2.52/praisonai/public/logo_light.png +0 -0
  47. praisonai-2.2.52/praisonai/public/movie.svg +0 -3
  48. praisonai-2.2.52/praisonai/public/praison-ai-agents-architecture-dark.png +0 -0
  49. praisonai-2.2.52/praisonai/public/praison-ai-agents-architecture.png +0 -0
  50. praisonai-2.2.52/praisonai/public/thriller.svg +0 -3
  51. praisonai-2.2.52/praisonai/setup/config.yaml +0 -60
  52. praisonai-2.2.52/praisonai/setup/setup_conda_env.sh +0 -105
  53. praisonai-2.2.52/praisonai/ui/README.md +0 -21
  54. praisonai-2.2.52/praisonai/ui/config/chainlit.md +0 -1
  55. praisonai-2.2.52/praisonai/ui/config/translations/bn.json +0 -231
  56. praisonai-2.2.52/praisonai/ui/config/translations/en-US.json +0 -229
  57. praisonai-2.2.52/praisonai/ui/config/translations/gu.json +0 -231
  58. praisonai-2.2.52/praisonai/ui/config/translations/he-IL.json +0 -231
  59. praisonai-2.2.52/praisonai/ui/config/translations/hi.json +0 -231
  60. praisonai-2.2.52/praisonai/ui/config/translations/kn.json +0 -231
  61. praisonai-2.2.52/praisonai/ui/config/translations/ml.json +0 -231
  62. praisonai-2.2.52/praisonai/ui/config/translations/mr.json +0 -231
  63. praisonai-2.2.52/praisonai/ui/config/translations/ta.json +0 -231
  64. praisonai-2.2.52/praisonai/ui/config/translations/te.json +0 -231
  65. praisonai-2.2.52/praisonai/ui/config/translations/zh-CN.json +0 -229
  66. praisonai-2.2.52/praisonai/ui/public/fantasy.svg +0 -3
  67. praisonai-2.2.52/praisonai/ui/public/game.svg +0 -3
  68. praisonai-2.2.52/praisonai/ui/public/logo_dark.png +0 -0
  69. praisonai-2.2.52/praisonai/ui/public/logo_light.png +0 -0
  70. praisonai-2.2.52/praisonai/ui/public/movie.svg +0 -3
  71. praisonai-2.2.52/praisonai/ui/public/praison.css +0 -3
  72. praisonai-2.2.52/praisonai/ui/public/thriller.svg +0 -3
  73. praisonai-2.2.52/praisonai/ui/tools.md +0 -133
  74. praisonai-2.2.52/praisonai/version.py +0 -1
  75. praisonai-2.2.52/pyproject.toml +0 -288
  76. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/__main__.py +0 -0
  77. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/api/call.py +0 -0
  78. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/inbuilt_tools/__init__.py +0 -0
  79. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
  80. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/inc/__init__.py +0 -0
  81. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/inc/config.py +0 -0
  82. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/scheduler.py +0 -0
  83. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/setup/__init__.py +0 -0
  84. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/setup/build.py +0 -0
  85. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/setup/post_install.py +0 -0
  86. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/setup/setup_conda_env.py +0 -0
  87. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/setup.py +0 -0
  88. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/train.py +0 -0
  89. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/train_vision.py +0 -0
  90. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/callbacks.py +0 -0
  91. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/colab_chainlit.py +0 -0
  92. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/components/aicoder.py +0 -0
  93. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/context.py +0 -0
  94. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/database_config.py +0 -0
  95. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/db.py +0 -0
  96. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/realtimeclient/tools.py +0 -0
  97. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/ui/sql_alchemy.py +0 -0
  98. {praisonai-2.2.52 → praisonai-2.3.3}/praisonai/upload_vision.py +0 -0
@@ -0,0 +1,1033 @@
1
+ Metadata-Version: 2.4
2
+ Name: PraisonAI
3
+ Version: 2.3.3
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.178
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
+ <p align="center">
99
+ <picture>
100
+ <source media="(prefers-color-scheme: dark)" srcset="docs/logo/dark.png" />
101
+ <source media="(prefers-color-scheme: light)" srcset="docs/logo/light.png" />
102
+ <img alt="PraisonAI Logo" src="docs/logo/light.png" />
103
+ </picture>
104
+ </p>
105
+
106
+ <p align="center">
107
+ <a href="https://github.com/MervinPraison/PraisonAI"><img src="https://static.pepy.tech/badge/PraisonAI" alt="Total Downloads" /></a>
108
+ <a href="https://github.com/MervinPraison/PraisonAI"><img src="https://img.shields.io/github/v/release/MervinPraison/PraisonAI" alt="Latest Stable Version" /></a>
109
+ <a href="https://github.com/MervinPraison/PraisonAI"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License" /></a>
110
+ </p>
111
+
112
+ <div align="center">
113
+
114
+ # Praison AI
115
+
116
+ <a href="https://trendshift.io/repositories/9130" target="_blank"><img src="https://trendshift.io/api/badge/repositories/9130" alt="MervinPraison%2FPraisonAI | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
117
+
118
+ </div>
119
+
120
+ PraisonAI is a production-ready Multi-AI Agents framework with self-reflection, designed to create AI Agents to automate and solve problems ranging from simple tasks to complex challenges. By integrating PraisonAI Agents, AG2 (Formerly AutoGen), and CrewAI into a low-code solution, it streamlines the building and management of multi-agent LLM systems, emphasising simplicity, customisation, and effective human-agent collaboration.
121
+
122
+ <div align="center">
123
+ <a href="https://docs.praison.ai">
124
+ <p align="center">
125
+ <img src="https://img.shields.io/badge/📚_Documentation-Visit_docs.praison.ai-blue?style=for-the-badge&logo=bookstack&logoColor=white" alt="Documentation" />
126
+ </p>
127
+ </a>
128
+ </div>
129
+
130
+ ## Key Features
131
+
132
+ - 🤖 Automated AI Agents Creation
133
+ - 🔄 Self Reflection AI Agents
134
+ - 🧠 Reasoning AI Agents
135
+ - 👁️ Multi Modal AI Agents
136
+ - 🤝 Multi Agent Collaboration
137
+ - 🎭 AI Agent Workflow
138
+ - 📚 Add Custom Knowledge
139
+ - 🧠 Agents with Short and Long Term Memory
140
+ - 📄 Chat with PDF Agents
141
+ - 💻 Code Interpreter Agents
142
+ - 📚 RAG Agents
143
+ - 🤔 Async & Parallel Processing
144
+ - 🔄 Auto Agents
145
+ - 🔢 Math Agents
146
+ - 🎯 Structured Output Agents
147
+ - 🔗 LangChain Integrated Agents
148
+ - 📞 Callback Agents
149
+ - 🤏 Mini AI Agents
150
+ - 🛠️ 100+ Custom Tools
151
+ - 📄 YAML Configuration
152
+ - 💯 100+ LLM Support
153
+ - 🔬 **Deep Research Agents** (OpenAI & Gemini)
154
+ - 🔄 **Query Rewriter Agent** (HyDE, Step-back, Multi-query)
155
+ - 🌐 **Native Web Search** (OpenAI, Gemini, Anthropic, xAI, Perplexity)
156
+ - 📥 **Web Fetch** (Retrieve full content from URLs - Anthropic)
157
+ - 💾 **Prompt Caching** (Reduce costs & latency - OpenAI, Anthropic, Bedrock, Deepseek)
158
+ - 🧠 **Claude Memory Tool** (Persistent cross-conversation memory - Anthropic Beta)
159
+ - 💾 **File-Based Memory** (Zero-dependency persistent memory for all agents)
160
+
161
+ ## Using Python Code
162
+
163
+ Light weight package dedicated for coding:
164
+ ```bash
165
+ pip install praisonaiagents
166
+ ```
167
+
168
+ ```bash
169
+ export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
170
+ ```
171
+
172
+ ### 1. Single Agent
173
+
174
+ Create app.py file and add the code below:
175
+ ```python
176
+ from praisonaiagents import Agent
177
+ agent = Agent(instructions="Your are a helpful AI assistant")
178
+ agent.start("Write a movie script about a robot in Mars")
179
+ ```
180
+
181
+ Run:
182
+ ```bash
183
+ python app.py
184
+ ```
185
+
186
+ ### 2. Multi Agents
187
+
188
+ Create app.py file and add the code below:
189
+ ```python
190
+ from praisonaiagents import Agent, PraisonAIAgents
191
+
192
+ research_agent = Agent(instructions="Research about AI")
193
+ summarise_agent = Agent(instructions="Summarise research agent's findings")
194
+ agents = PraisonAIAgents(agents=[research_agent, summarise_agent])
195
+ agents.start()
196
+ ```
197
+
198
+ Run:
199
+ ```bash
200
+ python app.py
201
+ ```
202
+
203
+ ### 3. Deep Research Agent
204
+
205
+ Automated research with real-time streaming, web search, and citations using OpenAI or Gemini Deep Research APIs.
206
+
207
+ ```python
208
+ from praisonaiagents import DeepResearchAgent
209
+
210
+ # OpenAI Deep Research
211
+ agent = DeepResearchAgent(
212
+ model="o4-mini-deep-research", # or "o3-deep-research"
213
+ verbose=True
214
+ )
215
+
216
+ result = agent.research("What are the latest AI trends in 2025?")
217
+ print(result.report)
218
+ print(f"Citations: {len(result.citations)}")
219
+ ```
220
+
221
+ ```python
222
+ # Gemini Deep Research
223
+ from praisonaiagents import DeepResearchAgent
224
+
225
+ agent = DeepResearchAgent(
226
+ model="deep-research-pro", # Auto-detected as Gemini
227
+ verbose=True
228
+ )
229
+
230
+ result = agent.research("Research quantum computing advances")
231
+ print(result.report)
232
+ ```
233
+
234
+ **Features:**
235
+ - 🔍 Multi-provider support (OpenAI, Gemini, LiteLLM)
236
+ - 📡 Real-time streaming with reasoning summaries
237
+ - 📚 Structured citations with URLs
238
+ - 🛠️ Built-in tools: web search, code interpreter, MCP, file search
239
+ - 🔄 Automatic provider detection from model name
240
+
241
+ ### 4. Query Rewriter Agent
242
+
243
+ Transform user queries to improve RAG retrieval quality using multiple strategies.
244
+
245
+ ```python
246
+ from praisonaiagents import QueryRewriterAgent, RewriteStrategy
247
+
248
+ agent = QueryRewriterAgent(model="gpt-4o-mini")
249
+
250
+ # Basic - expands abbreviations, adds context
251
+ result = agent.rewrite("AI trends")
252
+ print(result.primary_query) # "What are the current trends in Artificial Intelligence?"
253
+
254
+ # HyDE - generates hypothetical document for semantic matching
255
+ result = agent.rewrite("What is quantum computing?", strategy=RewriteStrategy.HYDE)
256
+
257
+ # Step-back - generates broader context question
258
+ result = agent.rewrite("GPT-4 vs Claude 3?", strategy=RewriteStrategy.STEP_BACK)
259
+
260
+ # Sub-queries - decomposes complex questions
261
+ result = agent.rewrite("RAG setup and best embedding models?", strategy=RewriteStrategy.SUB_QUERIES)
262
+
263
+ # Contextual - resolves references using chat history
264
+ result = agent.rewrite("What about cost?", chat_history=[...])
265
+ ```
266
+
267
+ **Strategies:**
268
+ - **BASIC**: Expand abbreviations, fix typos, add context
269
+ - **HYDE**: Generate hypothetical document for semantic matching
270
+ - **STEP_BACK**: Generate higher-level concept questions
271
+ - **SUB_QUERIES**: Decompose multi-part questions
272
+ - **MULTI_QUERY**: Generate multiple paraphrased versions
273
+ - **CONTEXTUAL**: Resolve references using conversation history
274
+ - **AUTO**: Automatically detect best strategy
275
+
276
+ ### 5. Agent Memory (Zero Dependencies)
277
+
278
+ Enable persistent memory for agents - works out of the box without any extra packages.
279
+
280
+ ```python
281
+ from praisonaiagents import Agent
282
+
283
+ # Enable memory with a single parameter
284
+ agent = Agent(
285
+ name="Personal Assistant",
286
+ instructions="You are a helpful assistant that remembers user preferences.",
287
+ memory=True, # Enables file-based memory (no extra deps!)
288
+ user_id="user123" # Isolate memory per user
289
+ )
290
+
291
+ # Store memories programmatically
292
+ agent.store_memory("User prefers dark mode", memory_type="short_term")
293
+ agent.store_memory("User's name is John", memory_type="long_term", importance=0.9)
294
+
295
+ # Memory is automatically injected into conversations
296
+ result = agent.start("What do you know about me?")
297
+ # Agent will recall: "Your name is John and you prefer dark mode"
298
+
299
+ # Memory persists across sessions - create new agent with same user_id
300
+ agent2 = Agent(name="Assistant", memory=True, user_id="user123")
301
+ # agent2 automatically loads all previous memories!
302
+ ```
303
+
304
+ **Memory Types:**
305
+ - **Short-term**: Rolling buffer of recent context (auto-expires)
306
+ - **Long-term**: Persistent important facts (sorted by importance)
307
+ - **Entity**: People, places, organizations with attributes
308
+ - **Episodic**: Date-based interaction history
309
+
310
+ **Storage Options:**
311
+ | Option | Dependencies | Description |
312
+ |--------|-------------|-------------|
313
+ | `memory=True` | None | File-based JSON storage (default) |
314
+ | `memory="file"` | None | Explicit file-based storage |
315
+ | `memory="sqlite"` | Built-in | SQLite with indexing |
316
+ | `memory="chromadb"` | chromadb | Vector/semantic search |
317
+
318
+ ## Using No Code
319
+
320
+ ### Auto Mode:
321
+ ```bash
322
+ pip install praisonai
323
+ export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
324
+ praisonai --auto create a movie script about Robots in Mars
325
+ ```
326
+
327
+ ### Query Rewriting (works with any command):
328
+ ```bash
329
+ # Rewrite query for better results (uses QueryRewriterAgent)
330
+ praisonai "AI trends" --query-rewrite
331
+
332
+ # Rewrite with search tools (agent decides when to search)
333
+ praisonai "latest developments" --query-rewrite --rewrite-tools "internet_search"
334
+
335
+ # Works with any prompt
336
+ praisonai "explain quantum computing" --query-rewrite -v
337
+ ```
338
+
339
+ ### Deep Research CLI:
340
+ ```bash
341
+ # Default: OpenAI (o4-mini-deep-research)
342
+ praisonai research "What are the latest AI trends in 2025?"
343
+
344
+ # Use Gemini
345
+ praisonai research --model deep-research-pro "Your research query"
346
+
347
+ # Rewrite query before research
348
+ praisonai research --query-rewrite "AI trends"
349
+
350
+ # Rewrite with search tools
351
+ praisonai research --query-rewrite --rewrite-tools "internet_search" "AI trends"
352
+
353
+ # Use custom tools from file (gathers context before deep research)
354
+ praisonai research --tools tools.py "Your research query"
355
+ praisonai research -t my_tools.py "Your research query"
356
+
357
+ # Use built-in tools by name (comma-separated)
358
+ praisonai research --tools "internet_search,wiki_search" "Your query"
359
+ praisonai research -t "yfinance,calculator_tools" "Stock analysis query"
360
+
361
+ # Save output to file (output/research/{query}.md)
362
+ praisonai research --save "Your research query"
363
+ praisonai research -s "Your research query"
364
+
365
+ # Combine options
366
+ praisonai research --query-rewrite --tools tools.py --save "Your research query"
367
+
368
+ # Verbose mode (show debug logs)
369
+ praisonai research -v "Your research query"
370
+ ```
371
+
372
+ ## Using JavaScript Code
373
+
374
+ ```bash
375
+ npm install praisonai
376
+ export OPENAI_API_KEY=xxxxxxxxxxxxxxxxxxxxxx
377
+ ```
378
+
379
+ ```javascript
380
+ const { Agent } = require('praisonai');
381
+ const agent = new Agent({ instructions: 'You are a helpful AI assistant' });
382
+ agent.start('Write a movie script about a robot in Mars');
383
+ ```
384
+
385
+ ![PraisonAI CLI Demo](docs/demo/praisonai-cli-demo.gif)
386
+
387
+ ## Star History
388
+
389
+ [![Star History Chart](https://api.star-history.com/svg?repos=MervinPraison/PraisonAI&type=Date)](https://docs.praison.ai)
390
+
391
+ ## AI Agents Flow
392
+
393
+ ```mermaid
394
+ graph LR
395
+ %% Define the main flow
396
+ Start([▶ Start]) --> Agent1
397
+ Agent1 --> Process[⚙ Process]
398
+ Process --> Agent2
399
+ Agent2 --> Output([✓ Output])
400
+ Process -.-> Agent1
401
+
402
+ %% Define subgraphs for agents and their tasks
403
+ subgraph Agent1[ ]
404
+ Task1[📋 Task]
405
+ AgentIcon1[🤖 AI Agent]
406
+ Tools1[🔧 Tools]
407
+
408
+ Task1 --- AgentIcon1
409
+ AgentIcon1 --- Tools1
410
+ end
411
+
412
+ subgraph Agent2[ ]
413
+ Task2[📋 Task]
414
+ AgentIcon2[🤖 AI Agent]
415
+ Tools2[🔧 Tools]
416
+
417
+ Task2 --- AgentIcon2
418
+ AgentIcon2 --- Tools2
419
+ end
420
+
421
+ classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
422
+ classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
423
+ classDef tools fill:#2E8B57,stroke:#7C90A0,color:#fff
424
+ classDef transparent fill:none,stroke:none
425
+
426
+ class Start,Output,Task1,Task2 input
427
+ class Process,AgentIcon1,AgentIcon2 process
428
+ class Tools1,Tools2 tools
429
+ class Agent1,Agent2 transparent
430
+ ```
431
+
432
+ ## AI Agents with Tools
433
+
434
+ Create AI agents that can use tools to interact with external systems and perform actions.
435
+
436
+ ```mermaid
437
+ flowchart TB
438
+ subgraph Tools
439
+ direction TB
440
+ T3[Internet Search]
441
+ T1[Code Execution]
442
+ T2[Formatting]
443
+ end
444
+
445
+ Input[Input] ---> Agents
446
+ subgraph Agents
447
+ direction LR
448
+ A1[Agent 1]
449
+ A2[Agent 2]
450
+ A3[Agent 3]
451
+ end
452
+ Agents ---> Output[Output]
453
+
454
+ T3 --> A1
455
+ T1 --> A2
456
+ T2 --> A3
457
+
458
+ style Tools fill:#189AB4,color:#fff
459
+ style Agents fill:#8B0000,color:#fff
460
+ style Input fill:#8B0000,color:#fff
461
+ style Output fill:#8B0000,color:#fff
462
+ ```
463
+
464
+ ## AI Agents with Memory
465
+
466
+ Create AI agents with memory capabilities for maintaining context and information across tasks.
467
+
468
+ ```mermaid
469
+ flowchart TB
470
+ subgraph Memory
471
+ direction TB
472
+ STM[Short Term]
473
+ LTM[Long Term]
474
+ end
475
+
476
+ subgraph Store
477
+ direction TB
478
+ DB[(Vector DB)]
479
+ end
480
+
481
+ Input[Input] ---> Agents
482
+ subgraph Agents
483
+ direction LR
484
+ A1[Agent 1]
485
+ A2[Agent 2]
486
+ A3[Agent 3]
487
+ end
488
+ Agents ---> Output[Output]
489
+
490
+ Memory <--> Store
491
+ Store <--> A1
492
+ Store <--> A2
493
+ Store <--> A3
494
+
495
+ style Memory fill:#189AB4,color:#fff
496
+ style Store fill:#2E8B57,color:#fff
497
+ style Agents fill:#8B0000,color:#fff
498
+ style Input fill:#8B0000,color:#fff
499
+ style Output fill:#8B0000,color:#fff
500
+ ```
501
+
502
+ ## AI Agents with Different Processes
503
+
504
+ ### Sequential Process
505
+
506
+ The simplest form of task execution where tasks are performed one after another.
507
+
508
+ ```mermaid
509
+ graph LR
510
+ Input[Input] --> A1
511
+ subgraph Agents
512
+ direction LR
513
+ A1[Agent 1] --> A2[Agent 2] --> A3[Agent 3]
514
+ end
515
+ A3 --> Output[Output]
516
+
517
+ classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
518
+ classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
519
+ classDef transparent fill:none,stroke:none
520
+
521
+ class Input,Output input
522
+ class A1,A2,A3 process
523
+ class Agents transparent
524
+ ```
525
+
526
+ ### Hierarchical Process
527
+
528
+ Uses a manager agent to coordinate task execution and agent assignments.
529
+
530
+ ```mermaid
531
+ graph TB
532
+ Input[Input] --> Manager
533
+
534
+ subgraph Agents
535
+ Manager[Manager Agent]
536
+
537
+ subgraph Workers
538
+ direction LR
539
+ W1[Worker 1]
540
+ W2[Worker 2]
541
+ W3[Worker 3]
542
+ end
543
+
544
+ Manager --> W1
545
+ Manager --> W2
546
+ Manager --> W3
547
+ end
548
+
549
+ W1 --> Manager
550
+ W2 --> Manager
551
+ W3 --> Manager
552
+ Manager --> Output[Output]
553
+
554
+ classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
555
+ classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
556
+ classDef transparent fill:none,stroke:none
557
+
558
+ class Input,Output input
559
+ class Manager,W1,W2,W3 process
560
+ class Agents,Workers transparent
561
+ ```
562
+
563
+ ### Workflow Process
564
+
565
+ Advanced process type supporting complex task relationships and conditional execution.
566
+
567
+ ```mermaid
568
+ graph LR
569
+ Input[Input] --> Start
570
+
571
+ subgraph Workflow
572
+ direction LR
573
+ Start[Start] --> C1{Condition}
574
+ C1 --> |Yes| A1[Agent 1]
575
+ C1 --> |No| A2[Agent 2]
576
+ A1 --> Join
577
+ A2 --> Join
578
+ Join --> A3[Agent 3]
579
+ end
580
+
581
+ A3 --> Output[Output]
582
+
583
+ classDef input fill:#8B0000,stroke:#7C90A0,color:#fff
584
+ classDef process fill:#189AB4,stroke:#7C90A0,color:#fff
585
+ classDef decision fill:#2E8B57,stroke:#7C90A0,color:#fff
586
+ classDef transparent fill:none,stroke:none
587
+
588
+ class Input,Output input
589
+ class Start,A1,A2,A3,Join process
590
+ class C1 decision
591
+ class Workflow transparent
592
+ ```
593
+
594
+ #### Agentic Routing Workflow
595
+
596
+ Create AI agents that can dynamically route tasks to specialized LLM instances.
597
+
598
+ ```mermaid
599
+ flowchart LR
600
+ In[In] --> Router[LLM Call Router]
601
+ Router --> LLM1[LLM Call 1]
602
+ Router --> LLM2[LLM Call 2]
603
+ Router --> LLM3[LLM Call 3]
604
+ LLM1 --> Out[Out]
605
+ LLM2 --> Out
606
+ LLM3 --> Out
607
+
608
+ style In fill:#8B0000,color:#fff
609
+ style Router fill:#2E8B57,color:#fff
610
+ style LLM1 fill:#2E8B57,color:#fff
611
+ style LLM2 fill:#2E8B57,color:#fff
612
+ style LLM3 fill:#2E8B57,color:#fff
613
+ style Out fill:#8B0000,color:#fff
614
+ ```
615
+
616
+ #### Agentic Orchestrator Worker
617
+
618
+ Create AI agents that orchestrate and distribute tasks among specialized workers.
619
+
620
+ ```mermaid
621
+ flowchart LR
622
+ In[In] --> Router[LLM Call Router]
623
+ Router --> LLM1[LLM Call 1]
624
+ Router --> LLM2[LLM Call 2]
625
+ Router --> LLM3[LLM Call 3]
626
+ LLM1 --> Synthesizer[Synthesizer]
627
+ LLM2 --> Synthesizer
628
+ LLM3 --> Synthesizer
629
+ Synthesizer --> Out[Out]
630
+
631
+ style In fill:#8B0000,color:#fff
632
+ style Router fill:#2E8B57,color:#fff
633
+ style LLM1 fill:#2E8B57,color:#fff
634
+ style LLM2 fill:#2E8B57,color:#fff
635
+ style LLM3 fill:#2E8B57,color:#fff
636
+ style Synthesizer fill:#2E8B57,color:#fff
637
+ style Out fill:#8B0000,color:#fff
638
+ ```
639
+
640
+ #### Agentic Autonomous Workflow
641
+
642
+ Create AI agents that can autonomously monitor, act, and adapt based on environment feedback.
643
+
644
+ ```mermaid
645
+ flowchart LR
646
+ Human[Human] <--> LLM[LLM Call]
647
+ LLM -->|ACTION| Environment[Environment]
648
+ Environment -->|FEEDBACK| LLM
649
+ LLM --> Stop[Stop]
650
+
651
+ style Human fill:#8B0000,color:#fff
652
+ style LLM fill:#2E8B57,color:#fff
653
+ style Environment fill:#8B0000,color:#fff
654
+ style Stop fill:#333,color:#fff
655
+ ```
656
+
657
+ #### Agentic Parallelization
658
+
659
+ Create AI agents that can execute tasks in parallel for improved performance.
660
+
661
+ ```mermaid
662
+ flowchart LR
663
+ In[In] --> LLM2[LLM Call 2]
664
+ In --> LLM1[LLM Call 1]
665
+ In --> LLM3[LLM Call 3]
666
+ LLM1 --> Aggregator[Aggregator]
667
+ LLM2 --> Aggregator
668
+ LLM3 --> Aggregator
669
+ Aggregator --> Out[Out]
670
+
671
+ style In fill:#8B0000,color:#fff
672
+ style LLM1 fill:#2E8B57,color:#fff
673
+ style LLM2 fill:#2E8B57,color:#fff
674
+ style LLM3 fill:#2E8B57,color:#fff
675
+ style Aggregator fill:#fff,color:#000
676
+ style Out fill:#8B0000,color:#fff
677
+ ```
678
+
679
+ #### Agentic Prompt Chaining
680
+
681
+ Create AI agents with sequential prompt chaining for complex workflows.
682
+
683
+ ```mermaid
684
+ flowchart LR
685
+ In[In] --> LLM1[LLM Call 1] --> Gate{Gate}
686
+ Gate -->|Pass| LLM2[LLM Call 2] -->|Output 2| LLM3[LLM Call 3] --> Out[Out]
687
+ Gate -->|Fail| Exit[Exit]
688
+
689
+ style In fill:#8B0000,color:#fff
690
+ style LLM1 fill:#2E8B57,color:#fff
691
+ style LLM2 fill:#2E8B57,color:#fff
692
+ style LLM3 fill:#2E8B57,color:#fff
693
+ style Out fill:#8B0000,color:#fff
694
+ style Exit fill:#8B0000,color:#fff
695
+ ```
696
+
697
+ #### Agentic Evaluator Optimizer
698
+
699
+ Create AI agents that can generate and optimize solutions through iterative feedback.
700
+
701
+ ```mermaid
702
+ flowchart LR
703
+ In[In] --> Generator[LLM Call Generator]
704
+ Generator -->|SOLUTION| Evaluator[LLM Call Evaluator] -->|ACCEPTED| Out[Out]
705
+ Evaluator -->|REJECTED + FEEDBACK| Generator
706
+
707
+ style In fill:#8B0000,color:#fff
708
+ style Generator fill:#2E8B57,color:#fff
709
+ style Evaluator fill:#2E8B57,color:#fff
710
+ style Out fill:#8B0000,color:#fff
711
+ ```
712
+
713
+ #### Repetitive Agents
714
+
715
+ Create AI agents that can efficiently handle repetitive tasks through automated loops.
716
+
717
+ ```mermaid
718
+ flowchart LR
719
+ In[Input] --> LoopAgent[("Looping Agent")]
720
+ LoopAgent --> Task[Task]
721
+ Task --> |Next iteration| LoopAgent
722
+ Task --> |Done| Out[Output]
723
+
724
+ style In fill:#8B0000,color:#fff
725
+ style LoopAgent fill:#2E8B57,color:#fff,shape:circle
726
+ style Task fill:#2E8B57,color:#fff
727
+ style Out fill:#8B0000,color:#fff
728
+ ```
729
+
730
+ ## Adding Models
731
+
732
+ <div align="center">
733
+ <a href="https://docs.praison.ai/models">
734
+ <p align="center">
735
+ <img src="https://img.shields.io/badge/%F0%9F%93%9A_Models-Visit_docs.praison.ai-blue?style=for-the-badge&logo=bookstack&logoColor=white" alt="Models" />
736
+ </p>
737
+ </a>
738
+ </div>
739
+
740
+ ## Ollama Integration
741
+ ```bash
742
+ export OPENAI_BASE_URL=http://localhost:11434/v1
743
+ ```
744
+
745
+ ## Groq Integration
746
+ Replace xxxx with Groq API KEY:
747
+ ```bash
748
+ export OPENAI_API_KEY=xxxxxxxxxxx
749
+ export OPENAI_BASE_URL=https://api.groq.com/openai/v1
750
+ ```
751
+
752
+ ## No Code Options
753
+
754
+ ## Agents Playbook
755
+
756
+ ### Simple Playbook Example
757
+
758
+ Create `agents.yaml` file and add the code below:
759
+
760
+ ```yaml
761
+ framework: praisonai
762
+ topic: Artificial Intelligence
763
+ roles:
764
+ screenwriter:
765
+ backstory: "Skilled in crafting scripts with engaging dialogue about {topic}."
766
+ goal: Create scripts from concepts.
767
+ role: Screenwriter
768
+ tasks:
769
+ scriptwriting_task:
770
+ description: "Develop scripts with compelling characters and dialogue about {topic}."
771
+ expected_output: "Complete script ready for production."
772
+ ```
773
+
774
+ *To run the playbook:*
775
+ ```bash
776
+ praisonai agents.yaml
777
+ ```
778
+
779
+ ## Use 100+ Models
780
+
781
+ - https://docs.praison.ai/models/
782
+ <div align="center">
783
+ <a href="https://docs.praison.ai">
784
+ <p align="center">
785
+ <img src="https://img.shields.io/badge/📚_Documentation-Visit_docs.praison.ai-blue?style=for-the-badge&logo=bookstack&logoColor=white" alt="Documentation" />
786
+ </p>
787
+ </a>
788
+ </div>
789
+
790
+
791
+ ## Custom Tools
792
+
793
+ ### Using `@tool` Decorator
794
+
795
+ ```python
796
+ from praisonaiagents import Agent, tool
797
+
798
+ @tool
799
+ def search(query: str) -> str:
800
+ """Search the web for information."""
801
+ return f"Results for: {query}"
802
+
803
+ @tool
804
+ def calculate(expression: str) -> float:
805
+ """Evaluate a math expression."""
806
+ return eval(expression)
807
+
808
+ agent = Agent(
809
+ instructions="You are a helpful assistant",
810
+ tools=[search, calculate]
811
+ )
812
+ agent.start("Search for AI news and calculate 15*4")
813
+ ```
814
+
815
+ ### Using `BaseTool` Class
816
+
817
+ ```python
818
+ from praisonaiagents import Agent, BaseTool
819
+
820
+ class WeatherTool(BaseTool):
821
+ name = "weather"
822
+ description = "Get current weather for a location"
823
+
824
+ def run(self, location: str) -> str:
825
+ return f"Weather in {location}: 72°F, Sunny"
826
+
827
+ agent = Agent(
828
+ instructions="You are a weather assistant",
829
+ tools=[WeatherTool()]
830
+ )
831
+ agent.start("What's the weather in Paris?")
832
+ ```
833
+
834
+ ### Creating a Tool Package (pip installable)
835
+
836
+ ```toml
837
+ # pyproject.toml
838
+ [project]
839
+ name = "my-praisonai-tools"
840
+ version = "1.0.0"
841
+ dependencies = ["praisonaiagents"]
842
+
843
+ [project.entry-points."praisonaiagents.tools"]
844
+ my_tool = "my_package:MyTool"
845
+ ```
846
+
847
+ ```python
848
+ # my_package/__init__.py
849
+ from praisonaiagents import BaseTool
850
+
851
+ class MyTool(BaseTool):
852
+ name = "my_tool"
853
+ description = "My custom tool"
854
+
855
+ def run(self, param: str) -> str:
856
+ return f"Result: {param}"
857
+ ```
858
+
859
+ After `pip install`, tools are auto-discovered:
860
+ ```python
861
+ agent = Agent(tools=["my_tool"]) # Works automatically!
862
+ ```
863
+
864
+
865
+ ## Prompt Expansion
866
+
867
+ Expand short prompts into detailed, actionable prompts:
868
+
869
+ ### CLI Usage
870
+
871
+ ```bash
872
+ # Expand a short prompt into detailed prompt
873
+ praisonai "write a movie script in 3 lines" --expand-prompt
874
+
875
+ # With verbose output
876
+ praisonai "blog about AI" --expand-prompt -v
877
+
878
+ # With tools for context gathering
879
+ praisonai "latest AI trends" --expand-prompt --expand-tools tools.py
880
+
881
+ # Combine with query rewrite
882
+ praisonai "AI news" --query-rewrite --expand-prompt
883
+ ```
884
+
885
+ ### Programmatic Usage
886
+
887
+ ```python
888
+ from praisonaiagents import PromptExpanderAgent, ExpandStrategy
889
+
890
+ # Basic usage
891
+ agent = PromptExpanderAgent()
892
+ result = agent.expand("write a movie script in 3 lines")
893
+ print(result.expanded_prompt)
894
+
895
+ # With specific strategy
896
+ result = agent.expand("blog about AI", strategy=ExpandStrategy.DETAILED)
897
+
898
+ # Available strategies: BASIC, DETAILED, STRUCTURED, CREATIVE, AUTO
899
+ ```
900
+
901
+ **Key Difference:**
902
+ - `--query-rewrite`: Optimizes queries for **search/retrieval** (RAG)
903
+ - `--expand-prompt`: Expands prompts for **detailed task execution**
904
+
905
+
906
+ ## Web Search, Web Fetch & Prompt Caching
907
+
908
+ ### CLI Usage
909
+
910
+ ```bash
911
+ # Web Search - Get real-time information
912
+ praisonai "What are the latest AI news today?" --web-search --llm openai/gpt-4o-search-preview
913
+
914
+ # Web Fetch - Retrieve and analyze URL content (Anthropic only)
915
+ praisonai "Summarize https://docs.praison.ai" --web-fetch --llm anthropic/claude-sonnet-4-20250514
916
+
917
+ # Prompt Caching - Reduce costs for repeated prompts
918
+ praisonai "Analyze this document..." --prompt-caching --llm anthropic/claude-sonnet-4-20250514
919
+ ```
920
+
921
+ ### Programmatic Usage
922
+
923
+ ```python
924
+ from praisonaiagents import Agent
925
+
926
+ # Web Search
927
+ agent = Agent(
928
+ instructions="You are a research assistant",
929
+ llm="openai/gpt-4o-search-preview",
930
+ web_search=True
931
+ )
932
+
933
+ # Web Fetch (Anthropic only)
934
+ agent = Agent(
935
+ instructions="You are a content analyzer",
936
+ llm="anthropic/claude-sonnet-4-20250514",
937
+ web_fetch=True
938
+ )
939
+
940
+ # Prompt Caching
941
+ agent = Agent(
942
+ instructions="You are an AI assistant..." * 50, # Long system prompt
943
+ llm="anthropic/claude-sonnet-4-20250514",
944
+ prompt_caching=True
945
+ )
946
+ ```
947
+
948
+ **Supported Providers:**
949
+ | Feature | Providers |
950
+ |---------|-----------|
951
+ | Web Search | OpenAI, Gemini, Anthropic, xAI, Perplexity |
952
+ | Web Fetch | Anthropic |
953
+ | Prompt Caching | OpenAI (auto), Anthropic, Bedrock, Deepseek |
954
+
955
+
956
+ ## Development:
957
+
958
+ Below is used for development only.
959
+
960
+ ### Using uv
961
+ ```bash
962
+ # Install uv if you haven't already
963
+ pip install uv
964
+
965
+ # Install from requirements
966
+ uv pip install -r pyproject.toml
967
+
968
+ # Install with extras
969
+ uv pip install -r pyproject.toml --extra code
970
+ uv pip install -r pyproject.toml --extra "crewai,autogen"
971
+ ```
972
+
973
+ ### Bump and Release
974
+
975
+ ```bash
976
+ # From project root - bumps version and releases in one command
977
+ python src/praisonai/scripts/bump_and_release.py 2.2.99
978
+
979
+ # With praisonaiagents dependency
980
+ python src/praisonai/scripts/bump_and_release.py 2.2.99 --agents 0.0.169
981
+
982
+ # Then publish
983
+ cd src/praisonai && uv publish
984
+ ```
985
+
986
+ ## Contributing
987
+
988
+ - Fork on GitHub: Use the "Fork" button on the repository page.
989
+ - Clone your fork: `git clone https://github.com/yourusername/praisonAI.git`
990
+ - Create a branch: `git checkout -b new-feature`
991
+ - Make changes and commit: `git commit -am "Add some feature"`
992
+ - Push to your fork: `git push origin new-feature`
993
+ - Submit a pull request via GitHub's web interface.
994
+ - Await feedback from project maintainers.
995
+
996
+ ## Other Features
997
+
998
+ - 🔄 Use CrewAI or AG2 (Formerly AutoGen) Framework
999
+ - 💻 Chat with ENTIRE Codebase
1000
+ - 🎨 Interactive UIs
1001
+ - 📄 YAML-based Configuration
1002
+ - 🛠️ Custom Tool Integration
1003
+ - 🔍 Internet Search Capability (using Crawl4AI and Tavily)
1004
+ - 🖼️ Vision Language Model (VLM) Support
1005
+ - 🎙️ Real-time Voice Interaction
1006
+
1007
+ ## Video Tutorials
1008
+
1009
+ | Topic | Video |
1010
+ |-------|--------|
1011
+ | AI Agents with Self Reflection | [![Self Reflection](https://img.youtube.com/vi/vLXobEN2Vc8/0.jpg)](https://www.youtube.com/watch?v=vLXobEN2Vc8) |
1012
+ | Reasoning Data Generating Agent | [![Reasoning Data](https://img.youtube.com/vi/fUT332Y2zA8/0.jpg)](https://www.youtube.com/watch?v=fUT332Y2zA8) |
1013
+ | AI Agents with Reasoning | [![Reasoning](https://img.youtube.com/vi/KNDVWGN3TpM/0.jpg)](https://www.youtube.com/watch?v=KNDVWGN3TpM) |
1014
+ | Multimodal AI Agents | [![Multimodal](https://img.youtube.com/vi/hjAWmUT1qqY/0.jpg)](https://www.youtube.com/watch?v=hjAWmUT1qqY) |
1015
+ | AI Agents Workflow | [![Workflow](https://img.youtube.com/vi/yWTH44QPl2A/0.jpg)](https://www.youtube.com/watch?v=yWTH44QPl2A) |
1016
+ | Async AI Agents | [![Async](https://img.youtube.com/vi/VhVQfgo00LE/0.jpg)](https://www.youtube.com/watch?v=VhVQfgo00LE) |
1017
+ | Mini AI Agents | [![Mini](https://img.youtube.com/vi/OkvYp5aAGSg/0.jpg)](https://www.youtube.com/watch?v=OkvYp5aAGSg) |
1018
+ | AI Agents with Memory | [![Memory](https://img.youtube.com/vi/1hVfVxvPnnQ/0.jpg)](https://www.youtube.com/watch?v=1hVfVxvPnnQ) |
1019
+ | Repetitive Agents | [![Repetitive](https://img.youtube.com/vi/dAYGxsjDOPg/0.jpg)](https://www.youtube.com/watch?v=dAYGxsjDOPg) |
1020
+ | Introduction | [![Introduction](https://img.youtube.com/vi/Fn1lQjC0GO0/0.jpg)](https://www.youtube.com/watch?v=Fn1lQjC0GO0) |
1021
+ | Tools Overview | [![Tools Overview](https://img.youtube.com/vi/XaQRgRpV7jo/0.jpg)](https://www.youtube.com/watch?v=XaQRgRpV7jo) |
1022
+ | Custom Tools | [![Custom Tools](https://img.youtube.com/vi/JSU2Rndh06c/0.jpg)](https://www.youtube.com/watch?v=JSU2Rndh06c) |
1023
+ | Firecrawl Integration | [![Firecrawl](https://img.youtube.com/vi/UoqUDcLcOYo/0.jpg)](https://www.youtube.com/watch?v=UoqUDcLcOYo) |
1024
+ | User Interface | [![UI](https://img.youtube.com/vi/tg-ZjNl3OCg/0.jpg)](https://www.youtube.com/watch?v=tg-ZjNl3OCg) |
1025
+ | Crawl4AI Integration | [![Crawl4AI](https://img.youtube.com/vi/KAvuVUh0XU8/0.jpg)](https://www.youtube.com/watch?v=KAvuVUh0XU8) |
1026
+ | Chat Interface | [![Chat](https://img.youtube.com/vi/sw3uDqn2h1Y/0.jpg)](https://www.youtube.com/watch?v=sw3uDqn2h1Y) |
1027
+ | Code Interface | [![Code](https://img.youtube.com/vi/_5jQayO-MQY/0.jpg)](https://www.youtube.com/watch?v=_5jQayO-MQY) |
1028
+ | Mem0 Integration | [![Mem0](https://img.youtube.com/vi/KIGSgRxf1cY/0.jpg)](https://www.youtube.com/watch?v=KIGSgRxf1cY) |
1029
+ | Training | [![Training](https://img.youtube.com/vi/aLawE8kwCrI/0.jpg)](https://www.youtube.com/watch?v=aLawE8kwCrI) |
1030
+ | Realtime Voice Interface | [![Realtime](https://img.youtube.com/vi/frRHfevTCSw/0.jpg)](https://www.youtube.com/watch?v=frRHfevTCSw) |
1031
+ | Call Interface | [![Call](https://img.youtube.com/vi/m1cwrUG2iAk/0.jpg)](https://www.youtube.com/watch?v=m1cwrUG2iAk) |
1032
+ | Reasoning Extract Agents | [![Reasoning Extract](https://img.youtube.com/vi/2PPamsADjJA/0.jpg)](https://www.youtube.com/watch?v=2PPamsADjJA) |
1033
+