mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-01 13:18:10 +00:00
* feat: adopt directory-based docs versioning with Edge channel Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com> * style: resolve linter issues --------- Co-authored-by: Cursor <cursoragent@cursor.com>
126 lines
5.3 KiB
Plaintext
126 lines
5.3 KiB
Plaintext
---
|
|
title: Weave Integration
|
|
description: Learn how to use Weights & Biases (W&B) Weave to track, experiment with, evaluate, and improve your CrewAI applications.
|
|
icon: radar
|
|
mode: "wide"
|
|
---
|
|
|
|
# Weave Overview
|
|
|
|
[Weights & Biases (W&B) Weave](https://weave-docs.wandb.ai/) is a framework for tracking, experimenting with, evaluating, deploying, and improving LLM-based applications.
|
|
|
|

|
|
|
|
Weave provides comprehensive support for every stage of your CrewAI application development:
|
|
|
|
- **Tracing & Monitoring**: Automatically track LLM calls and application logic to debug and analyze production systems
|
|
- **Systematic Iteration**: Refine and iterate on prompts, datasets, and models
|
|
- **Evaluation**: Use custom or pre-built scorers to systematically assess and enhance agent performance
|
|
- **Guardrails**: Protect your agents with pre- and post-safeguards for content moderation and prompt safety
|
|
|
|
Weave automatically captures traces for your CrewAI applications, enabling you to monitor and analyze your agents' performance, interactions, and execution flow. This helps you build better evaluation datasets and optimize your agent workflows.
|
|
|
|
## Setup Instructions
|
|
|
|
<Steps>
|
|
<Step title="Install required packages">
|
|
```shell
|
|
pip install crewai weave
|
|
```
|
|
</Step>
|
|
<Step title="Set up W&B Account">
|
|
Sign up for a [Weights & Biases account](https://wandb.ai) if you haven't already. You'll need this to view your traces and metrics.
|
|
</Step>
|
|
<Step title="Initialize Weave in Your Application">
|
|
Add the following code to your application:
|
|
|
|
```python
|
|
import weave
|
|
|
|
# Initialize Weave with your project name
|
|
weave.init(project_name="crewai_demo")
|
|
```
|
|
|
|
After initialization, Weave will provide a URL where you can view your traces and metrics.
|
|
</Step>
|
|
<Step title="Create your Crews/Flows">
|
|
```python
|
|
from crewai import Agent, Task, Crew, LLM, Process
|
|
|
|
# Create an LLM with a temperature of 0 to ensure deterministic outputs
|
|
llm = LLM(model="gpt-4o", temperature=0)
|
|
|
|
# Create agents
|
|
researcher = Agent(
|
|
role='Research Analyst',
|
|
goal='Find and analyze the best investment opportunities',
|
|
backstory='Expert in financial analysis and market research',
|
|
llm=llm,
|
|
verbose=True,
|
|
allow_delegation=False,
|
|
)
|
|
|
|
writer = Agent(
|
|
role='Report Writer',
|
|
goal='Write clear and concise investment reports',
|
|
backstory='Experienced in creating detailed financial reports',
|
|
llm=llm,
|
|
verbose=True,
|
|
allow_delegation=False,
|
|
)
|
|
|
|
# Create tasks
|
|
research_task = Task(
|
|
description='Deep research on the {topic}',
|
|
expected_output='Comprehensive market data including key players, market size, and growth trends.',
|
|
agent=researcher
|
|
)
|
|
|
|
writing_task = Task(
|
|
description='Write a detailed report based on the research',
|
|
expected_output='The report should be easy to read and understand. Use bullet points where applicable.',
|
|
agent=writer
|
|
)
|
|
|
|
# Create a crew
|
|
crew = Crew(
|
|
agents=[researcher, writer],
|
|
tasks=[research_task, writing_task],
|
|
verbose=True,
|
|
process=Process.sequential,
|
|
)
|
|
|
|
# Run the crew
|
|
result = crew.kickoff(inputs={"topic": "AI in material science"})
|
|
print(result)
|
|
```
|
|
</Step>
|
|
<Step title="View Traces in Weave">
|
|
After running your CrewAI application, visit the Weave URL provided during initialization to view:
|
|
- LLM calls and their metadata
|
|
- Agent interactions and task execution flow
|
|
- Performance metrics like latency and token usage
|
|
- Any errors or issues that occurred during execution
|
|
|
|
<Frame caption="Weave Tracing Dashboard">
|
|
<img src="/images/weave-tracing.png" alt="Weave tracing example with CrewAI" />
|
|
</Frame>
|
|
</Step>
|
|
</Steps>
|
|
|
|
## Features
|
|
|
|
- Weave automatically captures all CrewAI operations: agent interactions and task executions; LLM calls with metadata and token usage; tool usage and results.
|
|
- The integration supports all CrewAI execution methods: `kickoff()`, `kickoff_for_each()`, `kickoff_async()`, and `kickoff_for_each_async()`.
|
|
- Automatic tracing of all [crewAI-tools](https://github.com/crewAIInc/crewAI-tools).
|
|
- Flow feature support with decorator patching (`@start`, `@listen`, `@router`, `@or_`, `@and_`).
|
|
- Track custom guardrails passed to CrewAI `Task` with `@weave.op()`.
|
|
|
|
For detailed information on what's supported, visit the [Weave CrewAI documentation](https://weave-docs.wandb.ai/guides/integrations/crewai/#getting-started-with-flow).
|
|
|
|
## Resources
|
|
|
|
- [📘 Weave Documentation](https://weave-docs.wandb.ai)
|
|
- [📊 Example Weave x CrewAI dashboard](https://wandb.ai/ayut/crewai_demo/weave/traces?cols=%7B%22wb_run_id%22%3Afalse%2C%22attributes.weave.client_version%22%3Afalse%2C%22attributes.weave.os_name%22%3Afalse%2C%22attributes.weave.os_release%22%3Afalse%2C%22attributes.weave.os_version%22%3Afalse%2C%22attributes.weave.source%22%3Afalse%2C%22attributes.weave.sys_version%22%3Afalse%7D&peekPath=%2Fayut%2Fcrewai_demo%2Fcalls%2F0195c838-38cb-71a2-8a15-651ecddf9d89)
|
|
- [🐦 X](https://x.com/weave_wb)
|