- Replace insecure eval() usage with ast-based safe expression evaluator in README and combined examples
- Remove unused os imports from all Python example files
- Update comments to show import os inline for API key setup
- Addresses security vulnerabilities identified in code review
Co-authored-by: Mervin Praison <[email protected]>
- Add Google Search tool example (gemini-google-search.py)
- Add URL Context tool example (gemini-url-context.py)
- Add Code Execution tool example (gemini-code-execution.py)
- Add combined tools example (gemini-internal-tools-combined.py)
- Add comprehensive documentation (README_GEMINI_INTERNAL_TOOLS.md)
These examples demonstrate how to use Gemini''s built-in internal tools
through PraisonAI''s existing tool system without any code changes.
Co-authored-by: Mervin Praison <[email protected]>
- Remove Trafilatura from core praisonaiagents package
- Create custom tool implementation in examples/python/tools/
- Update example to demonstrate custom tool usage with agents
- Remove dependencies from pyproject.toml
- Remove from tools __init__.py and README.md
- Keep all functionality as standalone custom tool
This change follows the request to not integrate into core package
but provide as custom tool example instead.
Co-authored-by: Mervin Praison <[email protected]>
- Extract embedding model from embedder configuration in Memory class
- Replace hardcoded "text-embedding-3-small" with configurable model
- Support any embedding model available through LiteLLM
- Maintain backward compatibility (defaults to OpenAI model)
- Add documentation and examples for Gemini embeddings
- Update memory_example.py to show configuration options
Fixes#870
Co-authored-by: Mervin Praison <[email protected]>
- Fix asyncio blocking by using asyncio.to_thread() for all synchronous calls in async functions
- Remove dead code: module-level __call__ function that would never be invoked
- Replace global variable with module-level trafilatura import for cleaner code
- Remove unused json import in test file
- Improve error detection from fragile string check to robust pattern
- Add clarifying comments about safe circular imports due to lazy loading
Co-authored-by: Mervin Praison <[email protected]>
- Add ModelRouter for intelligent model selection based on task complexity
- Create MultiModelAgent class supporting multiple models per agent
- Implement routing strategies: auto, cost-optimized, performance-optimized
- Add pre-configured profiles for 8+ popular models
- Include usage tracking and cost estimation
- Maintain full backward compatibility
- Add comprehensive examples and documentation
Fixes#866
Co-authored-by: Mervin Praison <[email protected]>
The workflow.start() method returns a string by default (for backward compatibility),
but the test files were expecting a dictionary. Fixed by adding return_dict=True
parameter to get the expected dictionary format with task_results and task_status keys.
Fixes#841
Co-authored-by: Mervin Praison <[email protected]>
- Add hosted_server.py to examples/python/custom_tools/
- Update documentation to clarify this is an example implementation
- Keep starlette dependency as it's still used by Agent.launch() for MCP
This makes HostedMCPServer an example implementation rather than
a core package component.
Co-authored-by: Mervin Praison <[email protected]>
Add comprehensive examples for:
- Chat with PDF functionality
- Code Agent with self-reflection and tools
- Math Agent for calculations and problem solving
- Routing patterns (conditional, loops, decision trees)
- Self-reflection details and configuration
- Reasoning extraction (Chain of Thought, patterns)
These examples demonstrate the features documented in https://docs.praison.ai/
Co-authored-by: Mervin Praison <[email protected]>
- Moved handoff example scripts to a new directory structure for better organisation.
- Updated paths to reflect the new locations of the files.
This change aims to enhance the clarity and maintainability of the codebase.
- simple_input.py: Basic user input example
- medium_complexity_input.py: Multiple inputs with tools and context
- advanced_dynamic_input.py: Class-based system with conditional logic
- environment_variable_input.py: Combining env vars with user input
- streamlit_ui_input.py: Web-based UI for dynamic input
These examples demonstrate various approaches to handling dynamic user input in PraisonAI agents.
Closes#66
Co-authored-by: Mervin Praison <[email protected]>
- 01_basic_state_management.py: Demonstrates fundamental state operations
- 02_state_in_tool_functions.py: Shows state usage within tool functions
- 03_conditional_task_execution.py: Illustrates conditional task flow based on state
- 04_session_state_persistence.py: Shows how to save/restore workflow state
- 05_loop_control_with_state.py: Demonstrates state-controlled loops and iterations
- 06_advanced_state_operations.py: Covers complex state scenarios and patterns
Each example is fully working with detailed documentation and real-world use cases.
Co-authored-by: Mervin Praison <[email protected]>
- Enhanced Session class to support remote agent URLs
- Added agent_url parameter for direct agent connectivity
- Implemented HTTP client for remote agent communication
- Added connection testing and validation
- Provided send_message() alias for Google ADK compatibility
- Created comprehensive examples and documentation
- Maintained full backward compatibility
- Added proper error handling for remote operations
Fixes#630
Co-authored-by: MervinPraison <[email protected]>
- Fix SQLite query compatibility in session state restoration
- Add type safety to increment_state and improve append_to_state
- Change API from session.create_agent() to session.Agent() (backward compatible)
- Clean up code style: remove unused imports, trailing whitespace, fix f-strings
- Fix missing limit parameter in search_knowledge method
- Update examples to use new API
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-authored-by: MervinPraison <[email protected]>
Add minimal enhancements to PraisonAI's existing stateful capabilities:
- Add Session helper class for unified session management
- Add 9 convenience methods to PraisonAIAgents for enhanced state management
- Add comprehensive stateful agents documentation with examples
- Add 3 practical examples demonstrating session, workflow, and memory capabilities
- Maintain backward compatibility - all existing code continues to work
The implementation leverages existing robust infrastructure (Memory, Agent, Process classes)
rather than duplicating functionality, providing better developer experience through
improved APIs and documentation.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
Fixes#289 - Multi-agent context issue
This solution demonstrates how to solve the domain context problem where tools
default to "example.com" instead of user-specified domains. Uses 4 existing
PraisonAI features:
1. Custom tool wrappers with domain injection
2. Agent instructions with domain context
3. Task context parameter for domain info
4. Shared memory for context persistence
Key benefits:
- No core SDK changes required
- Uses only existing framework features
- Multi-layer context reliability
- 100% backward compatible
- Works for hierarchical and other processes
Co-authored-by: MervinPraison <[email protected]>