praisonAI 2.4.0__tar.gz → 2.4.2__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.4.0 → praisonai-2.4.2}/PKG-INFO +289 -3
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/PKG-INFO +289 -3
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/SOURCES.txt +39 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/requires.txt +1 -1
- {praisonai-2.4.0 → praisonai-2.4.2}/README.md +287 -1
- praisonai-2.4.2/praisonai/cli/features/persistence.py +637 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/main.py +6 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/deploy.py +1 -1
- praisonai-2.4.2/praisonai/persistence/__init__.py +84 -0
- praisonai-2.4.2/praisonai/persistence/config.py +238 -0
- praisonai-2.4.2/praisonai/persistence/conversation/__init__.py +25 -0
- praisonai-2.4.2/praisonai/persistence/conversation/base.py +151 -0
- praisonai-2.4.2/praisonai/persistence/conversation/mysql.py +387 -0
- praisonai-2.4.2/praisonai/persistence/conversation/postgres.py +401 -0
- praisonai-2.4.2/praisonai/persistence/conversation/singlestore.py +240 -0
- praisonai-2.4.2/praisonai/persistence/conversation/sqlite.py +341 -0
- praisonai-2.4.2/praisonai/persistence/conversation/supabase.py +203 -0
- praisonai-2.4.2/praisonai/persistence/conversation/surrealdb.py +287 -0
- praisonai-2.4.2/praisonai/persistence/factory.py +234 -0
- praisonai-2.4.2/praisonai/persistence/hooks/__init__.py +18 -0
- praisonai-2.4.2/praisonai/persistence/hooks/agent_hooks.py +297 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/__init__.py +26 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/base.py +144 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/cassandra.py +232 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/chroma.py +295 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/clickhouse.py +242 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/lancedb.py +216 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/milvus.py +277 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/pgvector.py +335 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/pinecone.py +253 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/qdrant.py +301 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/redis_vector.py +291 -0
- praisonai-2.4.2/praisonai/persistence/knowledge/weaviate.py +223 -0
- praisonai-2.4.2/praisonai/persistence/migrations/__init__.py +10 -0
- praisonai-2.4.2/praisonai/persistence/migrations/manager.py +251 -0
- praisonai-2.4.2/praisonai/persistence/orchestrator.py +406 -0
- praisonai-2.4.2/praisonai/persistence/state/__init__.py +21 -0
- praisonai-2.4.2/praisonai/persistence/state/base.py +107 -0
- praisonai-2.4.2/praisonai/persistence/state/dynamodb.py +226 -0
- praisonai-2.4.2/praisonai/persistence/state/firestore.py +175 -0
- praisonai-2.4.2/praisonai/persistence/state/memory.py +245 -0
- praisonai-2.4.2/praisonai/persistence/state/mongodb.py +158 -0
- praisonai-2.4.2/praisonai/persistence/state/redis.py +190 -0
- praisonai-2.4.2/praisonai/persistence/state/upstash.py +144 -0
- praisonai-2.4.2/praisonai/persistence/tests/__init__.py +3 -0
- praisonai-2.4.2/praisonai/persistence/tests/test_all_backends.py +633 -0
- praisonai-2.4.2/praisonai/version.py +1 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/pyproject.toml +1 -1
- praisonai-2.4.0/praisonai/version.py +0 -1
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/dependency_links.txt +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/entry_points.txt +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/PraisonAI.egg-info/top_level.txt +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/__main__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/agent_scheduler.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/agents_generator.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/api/call.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/auto.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/chainlit_ui.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/agent_scheduler.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/agents.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/at_mentions.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/auto_memory.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/autonomy_mode.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/background.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/base.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/checkpoints.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/compare.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/cost_tracker.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/eval.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/external_agents.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/fast_context.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/flow_display.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/git_integration.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/guardrail.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/handoff.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/hooks.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/image.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/interactive_tui.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/knowledge.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/mcp.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/message_queue.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/metrics.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/n8n.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/profile.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/profiling.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/repo_map.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/router.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/sandbox_executor.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/session.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/skills.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/slash_commands.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/telemetry.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/todo.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/tools.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/features/workflow.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/cli/schedule_cli.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/agent_tools.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/diff/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/diff/diff_strategy.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/apply_diff.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/execute_command.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/list_files.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/read_file.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/search_replace.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/tools/write_file.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/file_utils.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/ignore_utils.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/code/utils/text_utils.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inbuilt_tools/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inbuilt_tools/autogen_tools.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/config.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/inc/models.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/base.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/claude_code.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/codex_cli.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/cursor_cli.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/integrations/gemini_cli.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/profiler.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/agent_scheduler.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/base.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/daemon_manager.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/state_manager.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler/yaml_loader.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/scheduler.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/build.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/post_install.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup/setup_conda_env.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/setup.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/test.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/train.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/train_vision.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/agents.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/callbacks.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/chat.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/code.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/colab.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/colab_chainlit.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/components/aicoder.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/context.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/database_config.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/db.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtime.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtimeclient/__init__.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/realtimeclient/tools.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/ui/sql_alchemy.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/praisonai/upload_vision.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/setup.cfg +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_agents_playbook.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_approval_system.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_basic.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_cli_features.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_custom_tools_fix.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_double_api_fix.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_n8n_integration.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_phase2_refactor.py +0 -0
- {praisonai-2.4.0 → praisonai-2.4.2}/tests/test_runner.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
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
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=0.2.
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.2.1
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: instructor>=1.3.3
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -358,6 +358,12 @@ npm install praisonai
|
|
|
358
358
|
| ↳ 100+ LLM Support | [Example](examples/python/providers/openai/openai_gpt4_example.py) | [📖](https://docs.praison.ai/models) |
|
|
359
359
|
| ↳ Callback Agents | [Example](examples/python/general/advanced-callback-systems.py) | [📖](https://docs.praison.ai/features/callbacks) |
|
|
360
360
|
| ↳ Hooks | [Example](#9-hooks) | [📖](https://docs.praison.ai/features/hooks) |
|
|
361
|
+
| ↳ Shadow Git Checkpoints | [Example](#10-shadow-git-checkpoints) | [📖](https://docs.praison.ai/features/checkpoints) |
|
|
362
|
+
| ↳ Background Tasks | [Example](examples/background/basic_background.py) | [📖](https://docs.praison.ai/features/background-tasks) |
|
|
363
|
+
| ↳ Policy Engine | [Example](examples/policy/basic_policy.py) | [📖](https://docs.praison.ai/features/policy-engine) |
|
|
364
|
+
| ↳ Thinking Budgets | [Example](examples/thinking/basic_thinking.py) | [📖](https://docs.praison.ai/features/thinking-budgets) |
|
|
365
|
+
| ↳ Output Styles | [Example](examples/output/basic_output.py) | [📖](https://docs.praison.ai/features/output-styles) |
|
|
366
|
+
| ↳ Context Compaction | [Example](examples/compaction/basic_compaction.py) | [📖](https://docs.praison.ai/features/context-compaction) |
|
|
361
367
|
| **📊 Monitoring & Management** | | |
|
|
362
368
|
| ↳ Sessions Management | [Example](examples/python/sessions/comprehensive-session-management.py) | [📖](https://docs.praison.ai/features/sessions) |
|
|
363
369
|
| ↳ Auto-Save Sessions | [Example](#session-management-python) | [📖](https://docs.praison.ai/docs/cli/session) |
|
|
@@ -1027,8 +1033,191 @@ praisonai checkpoint diff # Show changes
|
|
|
1027
1033
|
praisonai checkpoint restore abc123 # Restore to checkpoint
|
|
1028
1034
|
```
|
|
1029
1035
|
|
|
1036
|
+
**Links:**
|
|
1037
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/checkpoints)
|
|
1038
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/checkpoint)
|
|
1039
|
+
- [💻 Example](examples/checkpoints/basic_checkpoints.py)
|
|
1030
1040
|
|
|
1031
|
-
|
|
1041
|
+
---
|
|
1042
|
+
|
|
1043
|
+
### 11. Background Tasks
|
|
1044
|
+
|
|
1045
|
+
Run agent tasks asynchronously without blocking:
|
|
1046
|
+
|
|
1047
|
+
```python
|
|
1048
|
+
import asyncio
|
|
1049
|
+
from praisonaiagents.background import BackgroundRunner, BackgroundConfig
|
|
1050
|
+
|
|
1051
|
+
async def main():
|
|
1052
|
+
config = BackgroundConfig(max_concurrent_tasks=3)
|
|
1053
|
+
runner = BackgroundRunner(config=config)
|
|
1054
|
+
|
|
1055
|
+
async def my_task(name: str) -> str:
|
|
1056
|
+
await asyncio.sleep(2)
|
|
1057
|
+
return f"Task {name} completed"
|
|
1058
|
+
|
|
1059
|
+
task = await runner.submit(my_task, args=("example",), name="my_task")
|
|
1060
|
+
await task.wait(timeout=10.0)
|
|
1061
|
+
print(task.result)
|
|
1062
|
+
|
|
1063
|
+
asyncio.run(main())
|
|
1064
|
+
```
|
|
1065
|
+
|
|
1066
|
+
**CLI Commands:**
|
|
1067
|
+
```bash
|
|
1068
|
+
praisonai background list # List running tasks
|
|
1069
|
+
praisonai background status <id> # Check task status
|
|
1070
|
+
praisonai background cancel <id> # Cancel a task
|
|
1071
|
+
praisonai background clear # Clear completed tasks
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
**Links:**
|
|
1075
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/background-tasks)
|
|
1076
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/background)
|
|
1077
|
+
- [💻 Example](examples/background/basic_background.py)
|
|
1078
|
+
|
|
1079
|
+
---
|
|
1080
|
+
|
|
1081
|
+
### 12. Policy Engine
|
|
1082
|
+
|
|
1083
|
+
Control what agents can and cannot do with policy-based execution:
|
|
1084
|
+
|
|
1085
|
+
```python
|
|
1086
|
+
from praisonaiagents.policy import (
|
|
1087
|
+
PolicyEngine, Policy, PolicyRule, PolicyAction
|
|
1088
|
+
)
|
|
1089
|
+
|
|
1090
|
+
engine = PolicyEngine()
|
|
1091
|
+
|
|
1092
|
+
policy = Policy(
|
|
1093
|
+
name="no_delete",
|
|
1094
|
+
rules=[
|
|
1095
|
+
PolicyRule(
|
|
1096
|
+
action=PolicyAction.DENY,
|
|
1097
|
+
resource="tool:delete_*",
|
|
1098
|
+
reason="Delete operations blocked"
|
|
1099
|
+
)
|
|
1100
|
+
]
|
|
1101
|
+
)
|
|
1102
|
+
engine.add_policy(policy)
|
|
1103
|
+
|
|
1104
|
+
result = engine.check("tool:delete_file", {})
|
|
1105
|
+
print(f"Allowed: {result.allowed}")
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
**CLI Commands:**
|
|
1109
|
+
```bash
|
|
1110
|
+
praisonai policy list # List policies
|
|
1111
|
+
praisonai policy check "tool:name" # Check if allowed
|
|
1112
|
+
praisonai policy init # Create template
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
**Links:**
|
|
1116
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/policy-engine)
|
|
1117
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/policy)
|
|
1118
|
+
- [💻 Example](examples/policy/basic_policy.py)
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
### 13. Thinking Budgets
|
|
1123
|
+
|
|
1124
|
+
Configure token budgets for extended thinking:
|
|
1125
|
+
|
|
1126
|
+
```python
|
|
1127
|
+
from praisonaiagents.thinking import ThinkingBudget, ThinkingTracker
|
|
1128
|
+
|
|
1129
|
+
# Use predefined levels
|
|
1130
|
+
budget = ThinkingBudget.high() # 16,000 tokens
|
|
1131
|
+
|
|
1132
|
+
# Track usage
|
|
1133
|
+
tracker = ThinkingTracker()
|
|
1134
|
+
session = tracker.start_session(budget_tokens=16000)
|
|
1135
|
+
tracker.end_session(session, tokens_used=12000)
|
|
1136
|
+
|
|
1137
|
+
summary = tracker.get_summary()
|
|
1138
|
+
print(f"Utilization: {summary['average_utilization']:.1%}")
|
|
1139
|
+
```
|
|
1140
|
+
|
|
1141
|
+
**CLI Commands:**
|
|
1142
|
+
```bash
|
|
1143
|
+
praisonai thinking status # Show current budget
|
|
1144
|
+
praisonai thinking set high # Set budget level
|
|
1145
|
+
praisonai thinking stats # Show usage statistics
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
**Links:**
|
|
1149
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/thinking-budgets)
|
|
1150
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/thinking)
|
|
1151
|
+
- [💻 Example](examples/thinking/basic_thinking.py)
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
### 14. Output Styles
|
|
1156
|
+
|
|
1157
|
+
Configure how agents format their responses:
|
|
1158
|
+
|
|
1159
|
+
```python
|
|
1160
|
+
from praisonaiagents.output import OutputStyle, OutputFormatter
|
|
1161
|
+
|
|
1162
|
+
# Use preset styles
|
|
1163
|
+
style = OutputStyle.concise()
|
|
1164
|
+
formatter = OutputFormatter(style)
|
|
1165
|
+
|
|
1166
|
+
# Format output
|
|
1167
|
+
text = "# Hello\n\nThis is **bold** text."
|
|
1168
|
+
plain = formatter.format(text)
|
|
1169
|
+
print(plain)
|
|
1170
|
+
```
|
|
1171
|
+
|
|
1172
|
+
**CLI Commands:**
|
|
1173
|
+
```bash
|
|
1174
|
+
praisonai output status # Show current style
|
|
1175
|
+
praisonai output set concise # Set output style
|
|
1176
|
+
```
|
|
1177
|
+
|
|
1178
|
+
**Links:**
|
|
1179
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/output-styles)
|
|
1180
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/output-style)
|
|
1181
|
+
- [💻 Example](examples/output/basic_output.py)
|
|
1182
|
+
|
|
1183
|
+
---
|
|
1184
|
+
|
|
1185
|
+
### 15. Context Compaction
|
|
1186
|
+
|
|
1187
|
+
Automatically manage context window size:
|
|
1188
|
+
|
|
1189
|
+
```python
|
|
1190
|
+
from praisonaiagents.compaction import (
|
|
1191
|
+
ContextCompactor, CompactionStrategy
|
|
1192
|
+
)
|
|
1193
|
+
|
|
1194
|
+
compactor = ContextCompactor(
|
|
1195
|
+
max_tokens=4000,
|
|
1196
|
+
strategy=CompactionStrategy.SLIDING,
|
|
1197
|
+
preserve_recent=3
|
|
1198
|
+
)
|
|
1199
|
+
|
|
1200
|
+
messages = [...] # Your conversation history
|
|
1201
|
+
compacted, result = compactor.compact(messages)
|
|
1202
|
+
|
|
1203
|
+
print(f"Compression: {result.compression_ratio:.1%}")
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
**CLI Commands:**
|
|
1207
|
+
```bash
|
|
1208
|
+
praisonai compaction status # Show settings
|
|
1209
|
+
praisonai compaction set sliding # Set strategy
|
|
1210
|
+
praisonai compaction stats # Show statistics
|
|
1211
|
+
```
|
|
1212
|
+
|
|
1213
|
+
**Links:**
|
|
1214
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/context-compaction)
|
|
1215
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/compaction)
|
|
1216
|
+
- [💻 Example](examples/compaction/basic_compaction.py)
|
|
1217
|
+
|
|
1218
|
+
---
|
|
1219
|
+
|
|
1220
|
+
### 16. Field Names Reference (A-I-G-S)
|
|
1032
1221
|
|
|
1033
1222
|
PraisonAI accepts both old (agents.yaml) and new (workflow.yaml) field names. Use the **canonical names** for new projects:
|
|
1034
1223
|
|
|
@@ -2632,6 +2821,103 @@ PraisonAI provides zero-dependency persistent memory for agents. For detailed ex
|
|
|
2632
2821
|
|
|
2633
2822
|
---
|
|
2634
2823
|
|
|
2824
|
+
## 💾 Persistence (Databases)
|
|
2825
|
+
|
|
2826
|
+
Enable automatic conversation persistence with 2 lines of code:
|
|
2827
|
+
|
|
2828
|
+
```python
|
|
2829
|
+
from praisonaiagents import Agent, db
|
|
2830
|
+
|
|
2831
|
+
agent = Agent(
|
|
2832
|
+
name="Assistant",
|
|
2833
|
+
db=db(database_url="postgresql://localhost/mydb"), # db(...) shortcut
|
|
2834
|
+
session_id="my-session" # Optional: defaults to per-hour ID (YYYYMMDDHH)
|
|
2835
|
+
)
|
|
2836
|
+
agent.chat("Hello!") # Auto-persists messages, runs, traces
|
|
2837
|
+
```
|
|
2838
|
+
|
|
2839
|
+
### Persistence CLI Commands
|
|
2840
|
+
|
|
2841
|
+
| Command | Description |
|
|
2842
|
+
|---------|-------------|
|
|
2843
|
+
| `praisonai persistence doctor` | Validate DB connectivity |
|
|
2844
|
+
| `praisonai persistence run` | Run agent with persistence |
|
|
2845
|
+
| `praisonai persistence resume` | Resume existing session |
|
|
2846
|
+
| `praisonai persistence export` | Export session to JSONL |
|
|
2847
|
+
| `praisonai persistence import` | Import session from JSONL |
|
|
2848
|
+
| `praisonai persistence migrate` | Apply schema migrations |
|
|
2849
|
+
| `praisonai persistence status` | Show schema status |
|
|
2850
|
+
|
|
2851
|
+
### Databases Table
|
|
2852
|
+
|
|
2853
|
+
| Database | Store Type | Install | Example | Docs |
|
|
2854
|
+
|----------|------------|---------|---------|------|
|
|
2855
|
+
| PostgreSQL | Conversation | `pip install "praisonai[tools]"` | [simple_db_agent.py](examples/persistence/simple_db_agent.py) | [docs](https://docs.praison.ai/docs/databases/postgres) |
|
|
2856
|
+
| MySQL | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2857
|
+
| SQLite | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2858
|
+
| SingleStore | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2859
|
+
| Supabase | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2860
|
+
| SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2861
|
+
| Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
|
|
2862
|
+
| ChromaDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2863
|
+
| Pinecone | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2864
|
+
| Weaviate | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2865
|
+
| LanceDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2866
|
+
| Milvus | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2867
|
+
| PGVector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2868
|
+
| Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2869
|
+
| Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2870
|
+
| ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2871
|
+
| Redis | State | `pip install "praisonai[tools]"` | [state_redis.py](examples/persistence/state_redis.py) | [docs](https://docs.praison.ai/docs/databases/redis) |
|
|
2872
|
+
| MongoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2873
|
+
| DynamoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2874
|
+
| Firestore | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2875
|
+
| Upstash | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2876
|
+
| Memory | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2877
|
+
|
|
2878
|
+
---
|
|
2879
|
+
|
|
2880
|
+
## 🔧 Tools Table
|
|
2881
|
+
|
|
2882
|
+
Install all tools with: `pip install "praisonai[tools]"`
|
|
2883
|
+
|
|
2884
|
+
| Tool | Category | Import | Docs |
|
|
2885
|
+
|------|----------|--------|------|
|
|
2886
|
+
| Tavily | Web Search | `from praisonai_tools import TavilyTool` | [docs](https://docs.praison.ai/docs/tools/external/tavily) |
|
|
2887
|
+
| DuckDuckGo | Web Search | `from praisonai_tools import DuckDuckGoTool` | [docs](https://docs.praison.ai/docs/tools/external/duckduckgo) |
|
|
2888
|
+
| Exa | Web Search | `from praisonai_tools import ExaTool` | [docs](https://docs.praison.ai/docs/tools/external/exa) |
|
|
2889
|
+
| Serper | Web Search | `from praisonai_tools import SerperTool` | [docs](https://docs.praison.ai/docs/tools/external/serper) |
|
|
2890
|
+
| Jina | Web Reader | `from praisonai_tools import JinaTool` | [docs](https://docs.praison.ai/docs/tools/external/jina) |
|
|
2891
|
+
| Firecrawl | Web Scraping | `from praisonai_tools import FirecrawlTool` | [docs](https://docs.praison.ai/docs/tools/external/firecrawl) |
|
|
2892
|
+
| Crawl4AI | Web Scraping | `from praisonai_tools import Crawl4AITool` | [docs](https://docs.praison.ai/docs/tools/external/crawl4ai) |
|
|
2893
|
+
| Wikipedia | Knowledge | `from praisonai_tools import WikipediaTool` | [docs](https://docs.praison.ai/docs/tools/external/wikipedia) |
|
|
2894
|
+
| ArXiv | Research | `from praisonai_tools import ArxivTool` | [docs](https://docs.praison.ai/docs/tools/external/arxiv) |
|
|
2895
|
+
| HackerNews | News | `from praisonai_tools import HackerNewsTool` | [docs](https://docs.praison.ai/docs/tools/external/hackernews) |
|
|
2896
|
+
| YouTube | Media | `from praisonai_tools import YouTubeTool` | [docs](https://docs.praison.ai/docs/tools/external/youtube) |
|
|
2897
|
+
| Weather | Data | `from praisonai_tools import WeatherTool` | [docs](https://docs.praison.ai/docs/tools/external/weather) |
|
|
2898
|
+
| PostgreSQL | Database | `from praisonai_tools import PostgresTool` | [docs](https://docs.praison.ai/docs/tools/external/postgres) |
|
|
2899
|
+
| MySQL | Database | `from praisonai_tools import MySQLTool` | [docs](https://docs.praison.ai/docs/tools/external/mysql) |
|
|
2900
|
+
| SQLite | Database | `from praisonai_tools import SQLiteTool` | [docs](https://docs.praison.ai/docs/tools/external/sqlite) |
|
|
2901
|
+
| MongoDB | Database | `from praisonai_tools import MongoDBTool` | [docs](https://docs.praison.ai/docs/tools/external/mongodb) |
|
|
2902
|
+
| Redis | Database | `from praisonai_tools import RedisTool` | [docs](https://docs.praison.ai/docs/tools/external/redis) |
|
|
2903
|
+
| Qdrant | Vector DB | `from praisonai_tools import QdrantTool` | [docs](https://docs.praison.ai/docs/tools/external/qdrant) |
|
|
2904
|
+
| GitHub | DevOps | `from praisonai_tools import GitHubTool` | [docs](https://docs.praison.ai/docs/tools/external/github) |
|
|
2905
|
+
| Slack | Communication | `from praisonai_tools import SlackTool` | [docs](https://docs.praison.ai/docs/tools/external/slack) |
|
|
2906
|
+
| Discord | Communication | `from praisonai_tools import DiscordTool` | [docs](https://docs.praison.ai/docs/tools/external/discord) |
|
|
2907
|
+
| Telegram | Communication | `from praisonai_tools import TelegramTool` | [docs](https://docs.praison.ai/docs/tools/external/telegram) |
|
|
2908
|
+
| Email | Communication | `from praisonai_tools import EmailTool` | [docs](https://docs.praison.ai/docs/tools/external/email) |
|
|
2909
|
+
| Notion | Productivity | `from praisonai_tools import NotionTool` | [docs](https://docs.praison.ai/docs/tools/external/notion) |
|
|
2910
|
+
| File | File System | `from praisonai_tools import FileTool` | [docs](https://docs.praison.ai/docs/tools/external/file) |
|
|
2911
|
+
| Shell | System | `from praisonai_tools import ShellTool` | [docs](https://docs.praison.ai/docs/tools/external/shell) |
|
|
2912
|
+
| Python | Code | `from praisonai_tools import PythonTool` | [docs](https://docs.praison.ai/docs/tools/external/python) |
|
|
2913
|
+
| JSON | Data | `from praisonai_tools import JSONTool` | [docs](https://docs.praison.ai/docs/tools/external/json) |
|
|
2914
|
+
| CSV | Data | `from praisonai_tools import CSVTool` | [docs](https://docs.praison.ai/docs/tools/external/csv) |
|
|
2915
|
+
| Calculator | Math | `from praisonai_tools import CalculatorTool` | [docs](https://docs.praison.ai/docs/tools/external/calculator) |
|
|
2916
|
+
|
|
2917
|
+
> See [full tools documentation](https://docs.praison.ai/docs/tools/tools) for all 100+ available tools.
|
|
2918
|
+
|
|
2919
|
+
---
|
|
2920
|
+
|
|
2635
2921
|
## 🎓 Video Tutorials
|
|
2636
2922
|
|
|
2637
2923
|
Learn PraisonAI through our comprehensive video series:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: PraisonAI
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
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
5
|
Author: Mervin Praison
|
|
6
6
|
License: MIT
|
|
@@ -11,7 +11,7 @@ Description-Content-Type: text/markdown
|
|
|
11
11
|
Requires-Dist: rich>=13.7
|
|
12
12
|
Requires-Dist: markdown>=3.5
|
|
13
13
|
Requires-Dist: pyparsing>=3.0.0
|
|
14
|
-
Requires-Dist: praisonaiagents>=0.2.
|
|
14
|
+
Requires-Dist: praisonaiagents>=0.2.1
|
|
15
15
|
Requires-Dist: python-dotenv>=0.19.0
|
|
16
16
|
Requires-Dist: instructor>=1.3.3
|
|
17
17
|
Requires-Dist: PyYAML>=6.0
|
|
@@ -358,6 +358,12 @@ npm install praisonai
|
|
|
358
358
|
| ↳ 100+ LLM Support | [Example](examples/python/providers/openai/openai_gpt4_example.py) | [📖](https://docs.praison.ai/models) |
|
|
359
359
|
| ↳ Callback Agents | [Example](examples/python/general/advanced-callback-systems.py) | [📖](https://docs.praison.ai/features/callbacks) |
|
|
360
360
|
| ↳ Hooks | [Example](#9-hooks) | [📖](https://docs.praison.ai/features/hooks) |
|
|
361
|
+
| ↳ Shadow Git Checkpoints | [Example](#10-shadow-git-checkpoints) | [📖](https://docs.praison.ai/features/checkpoints) |
|
|
362
|
+
| ↳ Background Tasks | [Example](examples/background/basic_background.py) | [📖](https://docs.praison.ai/features/background-tasks) |
|
|
363
|
+
| ↳ Policy Engine | [Example](examples/policy/basic_policy.py) | [📖](https://docs.praison.ai/features/policy-engine) |
|
|
364
|
+
| ↳ Thinking Budgets | [Example](examples/thinking/basic_thinking.py) | [📖](https://docs.praison.ai/features/thinking-budgets) |
|
|
365
|
+
| ↳ Output Styles | [Example](examples/output/basic_output.py) | [📖](https://docs.praison.ai/features/output-styles) |
|
|
366
|
+
| ↳ Context Compaction | [Example](examples/compaction/basic_compaction.py) | [📖](https://docs.praison.ai/features/context-compaction) |
|
|
361
367
|
| **📊 Monitoring & Management** | | |
|
|
362
368
|
| ↳ Sessions Management | [Example](examples/python/sessions/comprehensive-session-management.py) | [📖](https://docs.praison.ai/features/sessions) |
|
|
363
369
|
| ↳ Auto-Save Sessions | [Example](#session-management-python) | [📖](https://docs.praison.ai/docs/cli/session) |
|
|
@@ -1027,8 +1033,191 @@ praisonai checkpoint diff # Show changes
|
|
|
1027
1033
|
praisonai checkpoint restore abc123 # Restore to checkpoint
|
|
1028
1034
|
```
|
|
1029
1035
|
|
|
1036
|
+
**Links:**
|
|
1037
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/checkpoints)
|
|
1038
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/checkpoint)
|
|
1039
|
+
- [💻 Example](examples/checkpoints/basic_checkpoints.py)
|
|
1030
1040
|
|
|
1031
|
-
|
|
1041
|
+
---
|
|
1042
|
+
|
|
1043
|
+
### 11. Background Tasks
|
|
1044
|
+
|
|
1045
|
+
Run agent tasks asynchronously without blocking:
|
|
1046
|
+
|
|
1047
|
+
```python
|
|
1048
|
+
import asyncio
|
|
1049
|
+
from praisonaiagents.background import BackgroundRunner, BackgroundConfig
|
|
1050
|
+
|
|
1051
|
+
async def main():
|
|
1052
|
+
config = BackgroundConfig(max_concurrent_tasks=3)
|
|
1053
|
+
runner = BackgroundRunner(config=config)
|
|
1054
|
+
|
|
1055
|
+
async def my_task(name: str) -> str:
|
|
1056
|
+
await asyncio.sleep(2)
|
|
1057
|
+
return f"Task {name} completed"
|
|
1058
|
+
|
|
1059
|
+
task = await runner.submit(my_task, args=("example",), name="my_task")
|
|
1060
|
+
await task.wait(timeout=10.0)
|
|
1061
|
+
print(task.result)
|
|
1062
|
+
|
|
1063
|
+
asyncio.run(main())
|
|
1064
|
+
```
|
|
1065
|
+
|
|
1066
|
+
**CLI Commands:**
|
|
1067
|
+
```bash
|
|
1068
|
+
praisonai background list # List running tasks
|
|
1069
|
+
praisonai background status <id> # Check task status
|
|
1070
|
+
praisonai background cancel <id> # Cancel a task
|
|
1071
|
+
praisonai background clear # Clear completed tasks
|
|
1072
|
+
```
|
|
1073
|
+
|
|
1074
|
+
**Links:**
|
|
1075
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/background-tasks)
|
|
1076
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/background)
|
|
1077
|
+
- [💻 Example](examples/background/basic_background.py)
|
|
1078
|
+
|
|
1079
|
+
---
|
|
1080
|
+
|
|
1081
|
+
### 12. Policy Engine
|
|
1082
|
+
|
|
1083
|
+
Control what agents can and cannot do with policy-based execution:
|
|
1084
|
+
|
|
1085
|
+
```python
|
|
1086
|
+
from praisonaiagents.policy import (
|
|
1087
|
+
PolicyEngine, Policy, PolicyRule, PolicyAction
|
|
1088
|
+
)
|
|
1089
|
+
|
|
1090
|
+
engine = PolicyEngine()
|
|
1091
|
+
|
|
1092
|
+
policy = Policy(
|
|
1093
|
+
name="no_delete",
|
|
1094
|
+
rules=[
|
|
1095
|
+
PolicyRule(
|
|
1096
|
+
action=PolicyAction.DENY,
|
|
1097
|
+
resource="tool:delete_*",
|
|
1098
|
+
reason="Delete operations blocked"
|
|
1099
|
+
)
|
|
1100
|
+
]
|
|
1101
|
+
)
|
|
1102
|
+
engine.add_policy(policy)
|
|
1103
|
+
|
|
1104
|
+
result = engine.check("tool:delete_file", {})
|
|
1105
|
+
print(f"Allowed: {result.allowed}")
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
**CLI Commands:**
|
|
1109
|
+
```bash
|
|
1110
|
+
praisonai policy list # List policies
|
|
1111
|
+
praisonai policy check "tool:name" # Check if allowed
|
|
1112
|
+
praisonai policy init # Create template
|
|
1113
|
+
```
|
|
1114
|
+
|
|
1115
|
+
**Links:**
|
|
1116
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/policy-engine)
|
|
1117
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/policy)
|
|
1118
|
+
- [💻 Example](examples/policy/basic_policy.py)
|
|
1119
|
+
|
|
1120
|
+
---
|
|
1121
|
+
|
|
1122
|
+
### 13. Thinking Budgets
|
|
1123
|
+
|
|
1124
|
+
Configure token budgets for extended thinking:
|
|
1125
|
+
|
|
1126
|
+
```python
|
|
1127
|
+
from praisonaiagents.thinking import ThinkingBudget, ThinkingTracker
|
|
1128
|
+
|
|
1129
|
+
# Use predefined levels
|
|
1130
|
+
budget = ThinkingBudget.high() # 16,000 tokens
|
|
1131
|
+
|
|
1132
|
+
# Track usage
|
|
1133
|
+
tracker = ThinkingTracker()
|
|
1134
|
+
session = tracker.start_session(budget_tokens=16000)
|
|
1135
|
+
tracker.end_session(session, tokens_used=12000)
|
|
1136
|
+
|
|
1137
|
+
summary = tracker.get_summary()
|
|
1138
|
+
print(f"Utilization: {summary['average_utilization']:.1%}")
|
|
1139
|
+
```
|
|
1140
|
+
|
|
1141
|
+
**CLI Commands:**
|
|
1142
|
+
```bash
|
|
1143
|
+
praisonai thinking status # Show current budget
|
|
1144
|
+
praisonai thinking set high # Set budget level
|
|
1145
|
+
praisonai thinking stats # Show usage statistics
|
|
1146
|
+
```
|
|
1147
|
+
|
|
1148
|
+
**Links:**
|
|
1149
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/thinking-budgets)
|
|
1150
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/thinking)
|
|
1151
|
+
- [💻 Example](examples/thinking/basic_thinking.py)
|
|
1152
|
+
|
|
1153
|
+
---
|
|
1154
|
+
|
|
1155
|
+
### 14. Output Styles
|
|
1156
|
+
|
|
1157
|
+
Configure how agents format their responses:
|
|
1158
|
+
|
|
1159
|
+
```python
|
|
1160
|
+
from praisonaiagents.output import OutputStyle, OutputFormatter
|
|
1161
|
+
|
|
1162
|
+
# Use preset styles
|
|
1163
|
+
style = OutputStyle.concise()
|
|
1164
|
+
formatter = OutputFormatter(style)
|
|
1165
|
+
|
|
1166
|
+
# Format output
|
|
1167
|
+
text = "# Hello\n\nThis is **bold** text."
|
|
1168
|
+
plain = formatter.format(text)
|
|
1169
|
+
print(plain)
|
|
1170
|
+
```
|
|
1171
|
+
|
|
1172
|
+
**CLI Commands:**
|
|
1173
|
+
```bash
|
|
1174
|
+
praisonai output status # Show current style
|
|
1175
|
+
praisonai output set concise # Set output style
|
|
1176
|
+
```
|
|
1177
|
+
|
|
1178
|
+
**Links:**
|
|
1179
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/output-styles)
|
|
1180
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/output-style)
|
|
1181
|
+
- [💻 Example](examples/output/basic_output.py)
|
|
1182
|
+
|
|
1183
|
+
---
|
|
1184
|
+
|
|
1185
|
+
### 15. Context Compaction
|
|
1186
|
+
|
|
1187
|
+
Automatically manage context window size:
|
|
1188
|
+
|
|
1189
|
+
```python
|
|
1190
|
+
from praisonaiagents.compaction import (
|
|
1191
|
+
ContextCompactor, CompactionStrategy
|
|
1192
|
+
)
|
|
1193
|
+
|
|
1194
|
+
compactor = ContextCompactor(
|
|
1195
|
+
max_tokens=4000,
|
|
1196
|
+
strategy=CompactionStrategy.SLIDING,
|
|
1197
|
+
preserve_recent=3
|
|
1198
|
+
)
|
|
1199
|
+
|
|
1200
|
+
messages = [...] # Your conversation history
|
|
1201
|
+
compacted, result = compactor.compact(messages)
|
|
1202
|
+
|
|
1203
|
+
print(f"Compression: {result.compression_ratio:.1%}")
|
|
1204
|
+
```
|
|
1205
|
+
|
|
1206
|
+
**CLI Commands:**
|
|
1207
|
+
```bash
|
|
1208
|
+
praisonai compaction status # Show settings
|
|
1209
|
+
praisonai compaction set sliding # Set strategy
|
|
1210
|
+
praisonai compaction stats # Show statistics
|
|
1211
|
+
```
|
|
1212
|
+
|
|
1213
|
+
**Links:**
|
|
1214
|
+
- [📖 Coding Docs](https://docs.praison.ai/features/context-compaction)
|
|
1215
|
+
- [📖 CLI Docs](https://docs.praison.ai/docs/cli/compaction)
|
|
1216
|
+
- [💻 Example](examples/compaction/basic_compaction.py)
|
|
1217
|
+
|
|
1218
|
+
---
|
|
1219
|
+
|
|
1220
|
+
### 16. Field Names Reference (A-I-G-S)
|
|
1032
1221
|
|
|
1033
1222
|
PraisonAI accepts both old (agents.yaml) and new (workflow.yaml) field names. Use the **canonical names** for new projects:
|
|
1034
1223
|
|
|
@@ -2632,6 +2821,103 @@ PraisonAI provides zero-dependency persistent memory for agents. For detailed ex
|
|
|
2632
2821
|
|
|
2633
2822
|
---
|
|
2634
2823
|
|
|
2824
|
+
## 💾 Persistence (Databases)
|
|
2825
|
+
|
|
2826
|
+
Enable automatic conversation persistence with 2 lines of code:
|
|
2827
|
+
|
|
2828
|
+
```python
|
|
2829
|
+
from praisonaiagents import Agent, db
|
|
2830
|
+
|
|
2831
|
+
agent = Agent(
|
|
2832
|
+
name="Assistant",
|
|
2833
|
+
db=db(database_url="postgresql://localhost/mydb"), # db(...) shortcut
|
|
2834
|
+
session_id="my-session" # Optional: defaults to per-hour ID (YYYYMMDDHH)
|
|
2835
|
+
)
|
|
2836
|
+
agent.chat("Hello!") # Auto-persists messages, runs, traces
|
|
2837
|
+
```
|
|
2838
|
+
|
|
2839
|
+
### Persistence CLI Commands
|
|
2840
|
+
|
|
2841
|
+
| Command | Description |
|
|
2842
|
+
|---------|-------------|
|
|
2843
|
+
| `praisonai persistence doctor` | Validate DB connectivity |
|
|
2844
|
+
| `praisonai persistence run` | Run agent with persistence |
|
|
2845
|
+
| `praisonai persistence resume` | Resume existing session |
|
|
2846
|
+
| `praisonai persistence export` | Export session to JSONL |
|
|
2847
|
+
| `praisonai persistence import` | Import session from JSONL |
|
|
2848
|
+
| `praisonai persistence migrate` | Apply schema migrations |
|
|
2849
|
+
| `praisonai persistence status` | Show schema status |
|
|
2850
|
+
|
|
2851
|
+
### Databases Table
|
|
2852
|
+
|
|
2853
|
+
| Database | Store Type | Install | Example | Docs |
|
|
2854
|
+
|----------|------------|---------|---------|------|
|
|
2855
|
+
| PostgreSQL | Conversation | `pip install "praisonai[tools]"` | [simple_db_agent.py](examples/persistence/simple_db_agent.py) | [docs](https://docs.praison.ai/docs/databases/postgres) |
|
|
2856
|
+
| MySQL | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2857
|
+
| SQLite | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2858
|
+
| SingleStore | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2859
|
+
| Supabase | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2860
|
+
| SurrealDB | Conversation | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2861
|
+
| Qdrant | Knowledge | `pip install "praisonai[tools]"` | [knowledge_qdrant.py](examples/persistence/knowledge_qdrant.py) | [docs](https://docs.praison.ai/docs/databases/qdrant) |
|
|
2862
|
+
| ChromaDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2863
|
+
| Pinecone | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2864
|
+
| Weaviate | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2865
|
+
| LanceDB | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2866
|
+
| Milvus | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2867
|
+
| PGVector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2868
|
+
| Redis Vector | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2869
|
+
| Cassandra | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2870
|
+
| ClickHouse | Knowledge | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2871
|
+
| Redis | State | `pip install "praisonai[tools]"` | [state_redis.py](examples/persistence/state_redis.py) | [docs](https://docs.praison.ai/docs/databases/redis) |
|
|
2872
|
+
| MongoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2873
|
+
| DynamoDB | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2874
|
+
| Firestore | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2875
|
+
| Upstash | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2876
|
+
| Memory | State | `pip install "praisonai[tools]"` | - | [docs](https://docs.praison.ai/docs/databases/overview) |
|
|
2877
|
+
|
|
2878
|
+
---
|
|
2879
|
+
|
|
2880
|
+
## 🔧 Tools Table
|
|
2881
|
+
|
|
2882
|
+
Install all tools with: `pip install "praisonai[tools]"`
|
|
2883
|
+
|
|
2884
|
+
| Tool | Category | Import | Docs |
|
|
2885
|
+
|------|----------|--------|------|
|
|
2886
|
+
| Tavily | Web Search | `from praisonai_tools import TavilyTool` | [docs](https://docs.praison.ai/docs/tools/external/tavily) |
|
|
2887
|
+
| DuckDuckGo | Web Search | `from praisonai_tools import DuckDuckGoTool` | [docs](https://docs.praison.ai/docs/tools/external/duckduckgo) |
|
|
2888
|
+
| Exa | Web Search | `from praisonai_tools import ExaTool` | [docs](https://docs.praison.ai/docs/tools/external/exa) |
|
|
2889
|
+
| Serper | Web Search | `from praisonai_tools import SerperTool` | [docs](https://docs.praison.ai/docs/tools/external/serper) |
|
|
2890
|
+
| Jina | Web Reader | `from praisonai_tools import JinaTool` | [docs](https://docs.praison.ai/docs/tools/external/jina) |
|
|
2891
|
+
| Firecrawl | Web Scraping | `from praisonai_tools import FirecrawlTool` | [docs](https://docs.praison.ai/docs/tools/external/firecrawl) |
|
|
2892
|
+
| Crawl4AI | Web Scraping | `from praisonai_tools import Crawl4AITool` | [docs](https://docs.praison.ai/docs/tools/external/crawl4ai) |
|
|
2893
|
+
| Wikipedia | Knowledge | `from praisonai_tools import WikipediaTool` | [docs](https://docs.praison.ai/docs/tools/external/wikipedia) |
|
|
2894
|
+
| ArXiv | Research | `from praisonai_tools import ArxivTool` | [docs](https://docs.praison.ai/docs/tools/external/arxiv) |
|
|
2895
|
+
| HackerNews | News | `from praisonai_tools import HackerNewsTool` | [docs](https://docs.praison.ai/docs/tools/external/hackernews) |
|
|
2896
|
+
| YouTube | Media | `from praisonai_tools import YouTubeTool` | [docs](https://docs.praison.ai/docs/tools/external/youtube) |
|
|
2897
|
+
| Weather | Data | `from praisonai_tools import WeatherTool` | [docs](https://docs.praison.ai/docs/tools/external/weather) |
|
|
2898
|
+
| PostgreSQL | Database | `from praisonai_tools import PostgresTool` | [docs](https://docs.praison.ai/docs/tools/external/postgres) |
|
|
2899
|
+
| MySQL | Database | `from praisonai_tools import MySQLTool` | [docs](https://docs.praison.ai/docs/tools/external/mysql) |
|
|
2900
|
+
| SQLite | Database | `from praisonai_tools import SQLiteTool` | [docs](https://docs.praison.ai/docs/tools/external/sqlite) |
|
|
2901
|
+
| MongoDB | Database | `from praisonai_tools import MongoDBTool` | [docs](https://docs.praison.ai/docs/tools/external/mongodb) |
|
|
2902
|
+
| Redis | Database | `from praisonai_tools import RedisTool` | [docs](https://docs.praison.ai/docs/tools/external/redis) |
|
|
2903
|
+
| Qdrant | Vector DB | `from praisonai_tools import QdrantTool` | [docs](https://docs.praison.ai/docs/tools/external/qdrant) |
|
|
2904
|
+
| GitHub | DevOps | `from praisonai_tools import GitHubTool` | [docs](https://docs.praison.ai/docs/tools/external/github) |
|
|
2905
|
+
| Slack | Communication | `from praisonai_tools import SlackTool` | [docs](https://docs.praison.ai/docs/tools/external/slack) |
|
|
2906
|
+
| Discord | Communication | `from praisonai_tools import DiscordTool` | [docs](https://docs.praison.ai/docs/tools/external/discord) |
|
|
2907
|
+
| Telegram | Communication | `from praisonai_tools import TelegramTool` | [docs](https://docs.praison.ai/docs/tools/external/telegram) |
|
|
2908
|
+
| Email | Communication | `from praisonai_tools import EmailTool` | [docs](https://docs.praison.ai/docs/tools/external/email) |
|
|
2909
|
+
| Notion | Productivity | `from praisonai_tools import NotionTool` | [docs](https://docs.praison.ai/docs/tools/external/notion) |
|
|
2910
|
+
| File | File System | `from praisonai_tools import FileTool` | [docs](https://docs.praison.ai/docs/tools/external/file) |
|
|
2911
|
+
| Shell | System | `from praisonai_tools import ShellTool` | [docs](https://docs.praison.ai/docs/tools/external/shell) |
|
|
2912
|
+
| Python | Code | `from praisonai_tools import PythonTool` | [docs](https://docs.praison.ai/docs/tools/external/python) |
|
|
2913
|
+
| JSON | Data | `from praisonai_tools import JSONTool` | [docs](https://docs.praison.ai/docs/tools/external/json) |
|
|
2914
|
+
| CSV | Data | `from praisonai_tools import CSVTool` | [docs](https://docs.praison.ai/docs/tools/external/csv) |
|
|
2915
|
+
| Calculator | Math | `from praisonai_tools import CalculatorTool` | [docs](https://docs.praison.ai/docs/tools/external/calculator) |
|
|
2916
|
+
|
|
2917
|
+
> See [full tools documentation](https://docs.praison.ai/docs/tools/tools) for all 100+ available tools.
|
|
2918
|
+
|
|
2919
|
+
---
|
|
2920
|
+
|
|
2635
2921
|
## 🎓 Video Tutorials
|
|
2636
2922
|
|
|
2637
2923
|
Learn PraisonAI through our comprehensive video series:
|