Updated prereqs and setup steps to point to the now-more-model-agnostic
LLM setup guide, and updated the relevant text to go with it.
Co-authored-by: Tony Kipkemboi <iamtonykipkemboi@gmail.com>
This removes any specific model from the "Setting up your LLM" guide,
but provides examples for the top-3 providers.
This section also conflated "model selection" with "model
configuration", where configuration is provider-specific, so I've
focused this first section on just model selection, deferring the config
to the "provider" section that follows.
Co-authored-by: Tony Kipkemboi <iamtonykipkemboi@gmail.com>
* fix: remove kwargs from all (except mysql & pg) RagTools
The agent uses the tool description to decide what to propagate when a tool with **kwargs is found, but this often leads to failures during the tool invocation step.
This happens because the final description ends up like this:
```
CrewStructuredTool(name='Knowledge base', description='Tool Name: Knowledge base
Tool Arguments: {'query': {'description': None, 'type': 'str'}, 'kwargs': {'description': None, 'type': 'Any'}}
Tool Description: A knowledge base that can be used to answer questions.')
```
The agent then tries to infer and pass a kwargs parameter, which isn’t supported by the schema at all.
* feat: adding test to search tools
* feat: add db (chromadb folder) to .gitignore
* fix: fix github search integration
A few attributes were missing when calling the .add method: data_type and loader.
Also, update the query search according to the EmbedChain documentation, the query must include the type and repo keys
* fix: rollback YoutubeChannel paramenter
* chore: fix type hinting for CodeDocs search
* fix: ensure proper configuration when call `add`
According to the documentation, some search methods must be defined as either a loader or a data_type. This commit ensures that.
* build: add optional-dependencies for github and xml search
* test: mocking external requests from search_tool tests
* build: add pytest-recording as devDependencie
* Enhance EnterpriseActionKitToolAdapter to support custom project IDs
- Updated the EnterpriseActionKitToolAdapter and EnterpriseActionTool classes to accept an optional project_id parameter, allowing for greater flexibility in API interactions.
- Modified API URL construction to utilize the provided project_id instead of a hardcoded default.
- Updated the CrewaiEnterpriseTools factory function to accept and pass the project_id to the adapter.
* for factory in mind
This commit adds a new crew field called parent_flow, evaluated when the Crew
instance is instantiated. The stacktrace is traversed to look up if the caller
is an instance of Flow, and if so, it fills in the field.
Other alternatives were considered, such as a global context or even a new
field to be manually filled, however, this is the most magical solution that
was thread-safe and did not require public API changes.
* fix: support to reset memories after changing Crew's embedder
The sources must not be added while initializing the Knowledge otherwise we could not reset it
* chore: improve reset memory feedback
Previously, even when no memories were actually erased, we logged that they had been. From now on, the log will specify which memory has been reset.
* feat: improve get_crew discovery from a single file
Crew instances can now be discovered from any function or method with a return type annotation of -> Crew, as well as from module-level attributes assigned to a Crew instance. Additionally, crews can be retrieved from within a Flow
* refactor: make add_sources a public method from Knowledge
* build(dev): add pytest-randomly dependency
By randomizing the test execution order, this helps identify tests
that unintentionally depend on shared state or specific execution
order, which can lead to flaky or unreliable test behavior.
* build(dev): add pytest-timeout
This will prevent a test from running indefinitely
* test: block external requests in CI and set default 10s timeout per test
* test: adding missing cassettes
We notice that those cassettes are missing after enabling block-network on CI
* test: increase tests timeout on CI
* test: fix flaky test ValueError: Circular reference detected (id repeated)
* fix: prevent crash when event handler raises exception
Previously, if a registered event handler raised an exception during execution,
it could crash the entire application or interrupt the event dispatch process.
This change wraps handler execution in a try/except block within the `emit` method,
ensuring that exceptions are caught and logged without affecting other handlers or flow.
This improves the resilience of the event bus, especially when handling third-party
or temporary listeners.
* feat: support to define a guardrail task no-code
* feat: add auto-discovery for Guardrail code execution mode
* feat: handle malformed or invalid response from CodeInterpreterTool
* feat: allow to set unsafe_mode from Guardrail task
* feat: renaming GuardrailTask to TaskGuardrail
* feat: ensure guardrail is callable while initializing Task
* feat: remove Docker availability check from TaskGuardrail
The CodeInterpreterTool already ensures compliance with this requirement.
* refactor: replace if/raise with assert
For this use case `assert` is more appropriate choice
* test: remove useless or duplicated test
* fix: attempt to fix type-checker
* feat: support to define a task guardrail using YAML config
* refactor: simplify TaskGuardrail to use LLM for validation, no code generation
* docs: update TaskGuardrail doc strings
* refactor: drop task paramenter from TaskGuardrail
This parameter was used to get the model from the `task.agent` which is a quite bit redudant since we could propagate the llm directly
Add `__init__.py` files to 20 directories to conform with Python package standards. This ensures directories are properly recognized as packages, enabling cleaner imports.
This commit fixes a bug where changing logging level would be overriden
by `src/crewai/project/crew_base.py`. For example, the following snippet
on top of a crew or flow would not work:
```python
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
```
Crews and flows should be able to set their own log level, without being
overriden by CrewAI library code.
* Allow setting custom LLM for the vision tool
Defaults to gpt-4o-mini otherwise
* Enhance VisionTool with model management and improved initialization
- Added support for setting a custom model identifier with a default of "gpt-4o-mini".
- Introduced properties for model management, allowing dynamic updates and resetting of the LLM instance.
- Updated the initialization method to accept an optional LLM and model parameter.
- Refactored the image processing logic for clarity and efficiency.
* docstrings
* Add stop config
---------
Co-authored-by: lorenzejay <lorenzejaytech@gmail.com>
* Fix issue #2402: Handle missing templates gracefully
Co-Authored-By: Joe Moura <joao@crewai.com>
* Fix import sorting in test files
Co-Authored-By: Joe Moura <joao@crewai.com>
* Bluit in top of devin-ai integration
* Fixed test cases
* Fixed test cases
* fixed linting issue
* Added docs
---------
Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Joe Moura <joao@crewai.com>
* Corrected to adapt to firecrawl package use
Was leading to an error too many arguments when calling the craw_url() function
* Corrected to adapt to firecrawl package use
Corrected to avoid too many arguments error when calling firecrawl scrape_url function
* Corrected to adapt to firecrawl package use
Corrected to avoid error too many arguments when calling firecrawl search() function
* fix: fix firecrawl integration
* feat: support define Firecrawl using any config
Currently we pre-defined the available paramenters to call Firecrawl, this commit adds support to receive any parameter and propagate them
* docs: added doc string to Firecrawls classes
---------
Co-authored-by: Lucas Gomide <lucaslg200@gmail.com>
* build(litellm): upgrade LiteLLM to latest version
* fix: update filtered logs from LiteLLM
* Fix for a missing backtick
---------
Co-authored-by: Mike Plachta <mike@crewai.com>
Co-authored-by: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com>
- Removed the main execution block that included token validation and agent/task setup for testing.
- This change streamlines the adapter's code, focusing on its core functionality without execution logic.
- Introduced EnterpriseActionTool to execute specific enterprise actions with dynamic parameter validation.
- Added EnterpriseActionKitToolAdapter to manage and create tool instances for available enterprise actions.
- Implemented methods for fetching action schemas from the API and creating corresponding tools.
- Enhanced error handling and provided detailed descriptions for tool parameters.
- Included a main execution block for testing the adapter with a sample agent and task setup.
* feat: add a safety sandbox to run Python code
This sandbox blocks a bunch of dangerous imports and built-in functions
* feat: add more logs and warning about code execution
* test: add tests to cover sandbox code execution
* docs: add Google-style docstrings and type hints to printer and code_interpreter
* chore: renaming globals and locals paramenters
---------
Co-authored-by: Greyson Lalonde <greyson.r.lalonde@gmail.com>
* added gpt4.1 models and gemini 2.0 and 2.5 models
* added flash model
* Updated test fun to all models
* Added Gemma3 test cases and passed all google test case
* added gemini 2.5 flash
* added gpt4.1 models and gemini 2.0 and 2.5 models
* added flash model
* Updated test fun to all models
* Added Gemma3 test cases and passed all google test case
* added gemini 2.5 flash
* added gpt4.1 models and gemini 2.0 and 2.5 models
* added flash model
* Updated test fun to all models
* Added Gemma3 test cases and passed all google test case
* added gemini 2.5 flash
* test: add missing cassettes
* test: ignore authorization key from gemini/gemma3 request
---------
Co-authored-by: Lucas Gomide <lucaslg200@gmail.com>
Co-authored-by: Lorenze Jay <63378463+lorenzejay@users.noreply.github.com>
* Add chunk reading functionality to FileReadTool
- Added start_line parameter to specify which line to start reading from
- Added line_count parameter to specify how many lines to read
- Updated documentation with new parameters and examples
* [FIX] Bugs and Disscutions
Fixed: start_line negative value
Improved: File Reading Operations
* [IMPROVE] Simplify line selection
* [REFACTOR] use mock_open while preserving essential filesystem tests
* Enhance knowledge management in CrewAI
- Added `KnowledgeConfig` class to configure knowledge retrieval parameters such as `limit` and `score_threshold`.
- Updated `Agent` and `Crew` classes to utilize the new knowledge configuration for querying knowledge sources.
- Enhanced documentation to clarify the addition of knowledge sources at both agent and crew levels.
- Introduced new tips in documentation to guide users on knowledge source management and configuration.
* Refactor knowledge configuration parameters in CrewAI
- Renamed `limit` to `results_limit` in `KnowledgeConfig`, `query_knowledge`, and `query` methods for consistency and clarity.
- Updated related documentation to reflect the new parameter name, ensuring users understand the configuration options for knowledge retrieval.
* Refactor agent tests to utilize mock knowledge storage
- Updated test cases in `agent_test.py` to use `KnowledgeStorage` for mocking knowledge sources, enhancing test reliability and clarity.
- Renamed `limit` to `results_limit` in `KnowledgeConfig` for consistency with recent changes.
- Ensured that knowledge queries are properly mocked to return expected results during tests.
* Add VCR support for agent tests with query limits and score thresholds
- Introduced `@pytest.mark.vcr` decorator in `agent_test.py` for tests involving knowledge sources, ensuring consistent recording of HTTP interactions.
- Added new YAML cassette files for `test_agent_with_knowledge_sources_with_query_limit_and_score_threshold` and `test_agent_with_knowledge_sources_with_query_limit_and_score_threshold_default`, capturing the expected API responses for these tests.
- Enhanced test reliability by utilizing VCR to manage external API calls during testing.
* Update documentation to format parameter names in code style
- Changed the formatting of `results_limit` and `score_threshold` in the documentation to use code style for better clarity and emphasis.
- Ensured consistency in documentation presentation to enhance user understanding of configuration options.
* Enhance KnowledgeConfig with field descriptions
- Updated `results_limit` and `score_threshold` in `KnowledgeConfig` to use Pydantic's `Field` for improved documentation and clarity.
- Added descriptions to both parameters to provide better context for their usage in knowledge retrieval configuration.
* docstrings added