mirror of
https://github.com/crewAIInc/crewAI.git
synced 2025-12-16 04:18:35 +00:00
Docs/release 0.175.0 docs (#3441)
* docs(install): note OpenAI SDK requirement openai>=1.13.3 for 0.175.0 * docs(cli): document device-code login and config reset guidance; renumber sections * docs(flows): document conditional @start and resumable execution semantics * docs(tasks): move max_retries to deprecation note under attributes table * docs: provider-neutral RAG client config; entity memory batching; trigger payload note; tracing batch manager * docs(cli): fix duplicate numbering (renumber Login/API Keys/Configuration sections)
This commit is contained in:
@@ -282,7 +282,25 @@ Watch this video tutorial for a step-by-step demonstration of deploying your cre
|
|||||||
allowfullscreen
|
allowfullscreen
|
||||||
></iframe>
|
></iframe>
|
||||||
|
|
||||||
### 11. API Keys
|
### 12. Login
|
||||||
|
|
||||||
|
Authenticate with CrewAI Enterprise using a secure device code flow (no email entry required).
|
||||||
|
|
||||||
|
```shell Terminal
|
||||||
|
crewai login
|
||||||
|
```
|
||||||
|
|
||||||
|
What happens:
|
||||||
|
- A verification URL and short code are displayed in your terminal
|
||||||
|
- Your browser opens to the verification URL
|
||||||
|
- Enter/confirm the code to complete authentication
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
- The OAuth2 provider and domain are configured via `crewai config` (defaults use `login.crewai.com`)
|
||||||
|
- After successful login, the CLI also attempts to authenticate to the Tool Repository automatically
|
||||||
|
- If you reset your configuration, run `crewai login` again to re-authenticate
|
||||||
|
|
||||||
|
### 13. API Keys
|
||||||
|
|
||||||
When running ```crewai create crew``` command, the CLI will show you a list of available LLM providers to choose from, followed by model selection for your chosen provider.
|
When running ```crewai create crew``` command, the CLI will show you a list of available LLM providers to choose from, followed by model selection for your chosen provider.
|
||||||
|
|
||||||
@@ -310,7 +328,7 @@ See the following link for each provider's key name:
|
|||||||
|
|
||||||
* [LiteLLM Providers](https://docs.litellm.ai/docs/providers)
|
* [LiteLLM Providers](https://docs.litellm.ai/docs/providers)
|
||||||
|
|
||||||
### 12. Configuration Management
|
### 14. Configuration Management
|
||||||
|
|
||||||
Manage CLI configuration settings for CrewAI.
|
Manage CLI configuration settings for CrewAI.
|
||||||
|
|
||||||
@@ -385,6 +403,10 @@ Reset all configuration to defaults:
|
|||||||
crewai config reset
|
crewai config reset
|
||||||
```
|
```
|
||||||
|
|
||||||
|
<Tip>
|
||||||
|
After resetting configuration, re-run `crewai login` to authenticate again.
|
||||||
|
</Tip>
|
||||||
|
|
||||||
<Note>
|
<Note>
|
||||||
Configuration settings are stored in `~/.config/crewai/settings.json`. Some settings like organization name and UUID are read-only and managed through authentication and organization commands. Tool repository related settings are hidden and cannot be set directly by users.
|
Configuration settings are stored in `~/.config/crewai/settings.json`. Some settings like organization name and UUID are read-only and managed through authentication and organization commands. Tool repository related settings are hidden and cannot be set directly by users.
|
||||||
</Note>
|
</Note>
|
||||||
|
|||||||
@@ -97,7 +97,13 @@ The state's unique ID and stored data can be useful for tracking flow executions
|
|||||||
|
|
||||||
### @start()
|
### @start()
|
||||||
|
|
||||||
The `@start()` decorator is used to mark a method as the starting point of a Flow. When a Flow is started, all the methods decorated with `@start()` are executed in parallel. You can have multiple start methods in a Flow, and they will all be executed when the Flow is started.
|
The `@start()` decorator marks entry points for a Flow. You can:
|
||||||
|
|
||||||
|
- Declare multiple unconditional starts: `@start()`
|
||||||
|
- Gate a start on a prior method or router label: `@start("method_or_label")`
|
||||||
|
- Provide a callable condition to control when a start should fire
|
||||||
|
|
||||||
|
All satisfied `@start()` methods will execute (often in parallel) when the Flow begins or resumes.
|
||||||
|
|
||||||
### @listen()
|
### @listen()
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,41 @@ For file-based Knowledge Sources, make sure to place your files in a `knowledge`
|
|||||||
Also, use relative paths from the `knowledge` directory when creating the source.
|
Also, use relative paths from the `knowledge` directory when creating the source.
|
||||||
</Tip>
|
</Tip>
|
||||||
|
|
||||||
|
### Vector store (RAG) client configuration
|
||||||
|
|
||||||
|
CrewAI exposes a provider-neutral RAG client abstraction for vector stores. The default provider is ChromaDB, and Qdrant is supported as well. You can switch providers using configuration utilities.
|
||||||
|
|
||||||
|
Supported today:
|
||||||
|
- ChromaDB (default)
|
||||||
|
- Qdrant
|
||||||
|
|
||||||
|
```python Code
|
||||||
|
from crewai.rag.config.utils import set_rag_config, get_rag_client, clear_rag_config
|
||||||
|
|
||||||
|
# ChromaDB (default)
|
||||||
|
from crewai.rag.chromadb.config import ChromaDBConfig
|
||||||
|
set_rag_config(ChromaDBConfig())
|
||||||
|
chromadb_client = get_rag_client()
|
||||||
|
|
||||||
|
# Qdrant
|
||||||
|
from crewai.rag.qdrant.config import QdrantConfig
|
||||||
|
set_rag_config(QdrantConfig())
|
||||||
|
qdrant_client = get_rag_client()
|
||||||
|
|
||||||
|
# Example operations (same API for any provider)
|
||||||
|
client = qdrant_client # or chromadb_client
|
||||||
|
client.create_collection(collection_name="docs")
|
||||||
|
client.add_documents(
|
||||||
|
collection_name="docs",
|
||||||
|
documents=[{"id": "1", "content": "CrewAI enables collaborative AI agents."}],
|
||||||
|
)
|
||||||
|
results = client.search(collection_name="docs", query="collaborative agents", limit=3)
|
||||||
|
|
||||||
|
clear_rag_config() # optional reset
|
||||||
|
```
|
||||||
|
|
||||||
|
This RAG client is separate from Knowledge’s built-in storage. Use it when you need direct vector-store control or custom retrieval pipelines.
|
||||||
|
|
||||||
### Basic String Knowledge Example
|
### Basic String Knowledge Example
|
||||||
|
|
||||||
```python Code
|
```python Code
|
||||||
|
|||||||
@@ -738,6 +738,17 @@ print(f"OpenAI: {openai_time:.2f}s")
|
|||||||
print(f"Ollama: {ollama_time:.2f}s")
|
print(f"Ollama: {ollama_time:.2f}s")
|
||||||
```
|
```
|
||||||
|
|
||||||
|
### Entity Memory batching behavior
|
||||||
|
|
||||||
|
Entity Memory supports batching when saving multiple entities at once. When you pass a list of `EntityMemoryItem`, the system:
|
||||||
|
|
||||||
|
- Emits a single MemorySaveStartedEvent with `entity_count`
|
||||||
|
- Saves each entity internally, collecting any partial errors
|
||||||
|
- Emits MemorySaveCompletedEvent with aggregate metadata (saved count, errors)
|
||||||
|
- Raises a partial-save exception if some entities failed (includes counts)
|
||||||
|
|
||||||
|
This improves performance and observability when writing many entities in one operation.
|
||||||
|
|
||||||
## 2. External Memory
|
## 2. External Memory
|
||||||
External Memory provides a standalone memory system that operates independently from the crew's built-in memory. This is ideal for specialized memory providers or cross-application memory sharing.
|
External Memory provides a standalone memory system that operates independently from the crew's built-in memory. This is ideal for specialized memory providers or cross-application memory sharing.
|
||||||
|
|
||||||
|
|||||||
@@ -61,6 +61,11 @@ crew = Crew(
|
|||||||
| **Guardrail** _(optional)_ | `guardrail` | `Optional[Callable]` | Function to validate task output before proceeding to next task. |
|
| **Guardrail** _(optional)_ | `guardrail` | `Optional[Callable]` | Function to validate task output before proceeding to next task. |
|
||||||
| **Guardrail Max Retries** _(optional)_ | `guardrail_max_retries` | `Optional[int]` | Maximum number of retries when guardrail validation fails. Defaults to 3. |
|
| **Guardrail Max Retries** _(optional)_ | `guardrail_max_retries` | `Optional[int]` | Maximum number of retries when guardrail validation fails. Defaults to 3. |
|
||||||
|
|
||||||
|
<Note type="warning" title="Deprecated: max_retries">
|
||||||
|
The task attribute `max_retries` is deprecated and will be removed in v1.0.0.
|
||||||
|
Use `guardrail_max_retries` instead to control retry attempts when a guardrail fails.
|
||||||
|
</Note>
|
||||||
|
|
||||||
## Creating Tasks
|
## Creating Tasks
|
||||||
|
|
||||||
There are two ways to create tasks in CrewAI: using **YAML configuration (recommended)** or defining them **directly in code**.
|
There are two ways to create tasks in CrewAI: using **YAML configuration (recommended)** or defining them **directly in code**.
|
||||||
@@ -432,7 +437,7 @@ When a guardrail returns `(False, error)`:
|
|||||||
2. The agent attempts to fix the issue
|
2. The agent attempts to fix the issue
|
||||||
3. The process repeats until:
|
3. The process repeats until:
|
||||||
- The guardrail returns `(True, result)`
|
- The guardrail returns `(True, result)`
|
||||||
- Maximum retries are reached
|
- Maximum retries are reached (`guardrail_max_retries`)
|
||||||
|
|
||||||
Example with retry handling:
|
Example with retry handling:
|
||||||
```python Code
|
```python Code
|
||||||
|
|||||||
@@ -141,6 +141,16 @@ Traces are invaluable for troubleshooting issues with your crews:
|
|||||||
</Step>
|
</Step>
|
||||||
</Steps>
|
</Steps>
|
||||||
|
|
||||||
|
## Performance and batching
|
||||||
|
|
||||||
|
CrewAI batches trace uploads to reduce overhead on high-volume runs:
|
||||||
|
|
||||||
|
- A TraceBatchManager buffers events and sends them in batches via the Plus API client
|
||||||
|
- Reduces network chatter and improves reliability on flaky connections
|
||||||
|
- Automatically enabled in the default trace listener; no configuration needed
|
||||||
|
|
||||||
|
This yields more stable tracing under load while preserving detailed task/agent telemetry.
|
||||||
|
|
||||||
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
<Card title="Need Help?" icon="headset" href="mailto:support@crewai.com">
|
||||||
Contact our support team for assistance with trace analysis or any other CrewAI Enterprise features.
|
Contact our support team for assistance with trace analysis or any other CrewAI Enterprise features.
|
||||||
</Card>
|
</Card>
|
||||||
@@ -96,6 +96,13 @@ class MyAutomatedCrew:
|
|||||||
|
|
||||||
The crew will automatically receive and can access the trigger payload through the standard CrewAI context mechanisms.
|
The crew will automatically receive and can access the trigger payload through the standard CrewAI context mechanisms.
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
Crew and Flow inputs can include `crewai_trigger_payload`. CrewAI automatically injects this payload:
|
||||||
|
- Tasks: appended to the first task's description by default ("Trigger Payload: {crewai_trigger_payload}")
|
||||||
|
- Control via `allow_crewai_trigger_context`: set `True` to always inject, `False` to never inject
|
||||||
|
- Flows: any `@start()` method that accepts a `crewai_trigger_payload` parameter will receive it
|
||||||
|
</Note>
|
||||||
|
|
||||||
### Integration with Flows
|
### Integration with Flows
|
||||||
|
|
||||||
For flows, you have more control over how trigger data is handled:
|
For flows, you have more control over how trigger data is handled:
|
||||||
|
|||||||
@@ -348,6 +348,31 @@ class SelectivePersistFlow(Flow):
|
|||||||
|
|
||||||
## Advanced State Patterns
|
## Advanced State Patterns
|
||||||
|
|
||||||
|
### Conditional starts and resumable execution
|
||||||
|
|
||||||
|
Flows support conditional `@start()` and resumable execution for HITL/cyclic scenarios:
|
||||||
|
|
||||||
|
```python
|
||||||
|
from crewai.flow.flow import Flow, start, listen, and_, or_
|
||||||
|
|
||||||
|
class ResumableFlow(Flow):
|
||||||
|
@start() # unconditional start
|
||||||
|
def init(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
# Conditional start: run after "init" or external trigger name
|
||||||
|
@start("init")
|
||||||
|
def maybe_begin(self):
|
||||||
|
...
|
||||||
|
|
||||||
|
@listen(and_(init, maybe_begin))
|
||||||
|
def proceed(self):
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
- Conditional `@start()` accepts a method name, a router label, or a callable condition.
|
||||||
|
- During resume, listeners continue from prior checkpoints; cycle/router branches honor resumption flags.
|
||||||
|
|
||||||
### State-Based Conditional Logic
|
### State-Based Conditional Logic
|
||||||
|
|
||||||
You can use state to implement complex conditional logic in your flows:
|
You can use state to implement complex conditional logic in your flows:
|
||||||
|
|||||||
@@ -30,6 +30,12 @@ Watch this video tutorial for a step-by-step demonstration of the installation p
|
|||||||
If you need to update Python, visit [python.org/downloads](https://python.org/downloads)
|
If you need to update Python, visit [python.org/downloads](https://python.org/downloads)
|
||||||
</Note>
|
</Note>
|
||||||
|
|
||||||
|
<Note>
|
||||||
|
**OpenAI SDK Requirement**
|
||||||
|
|
||||||
|
CrewAI 0.175.0 requires `openai >= 1.13.3`. If you manage dependencies yourself, ensure your environment satisfies this constraint to avoid import/runtime issues.
|
||||||
|
</Note>
|
||||||
|
|
||||||
CrewAI uses the `uv` as its dependency management and package handling tool. It simplifies project setup and execution, offering a seamless experience.
|
CrewAI uses the `uv` as its dependency management and package handling tool. It simplifies project setup and execution, offering a seamless experience.
|
||||||
|
|
||||||
If you haven't installed `uv` yet, follow **step 1** to quickly get it set up on your system, else you can skip to **step 2**.
|
If you haven't installed `uv` yet, follow **step 1** to quickly get it set up on your system, else you can skip to **step 2**.
|
||||||
|
|||||||
Reference in New Issue
Block a user