crewaiinc--crewai
818 行
32 KiB
Markdown
818 行
32 KiB
Markdown
<!-- WEHUB_ZH_README -->
|
||
> [!NOTE]
|
||
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
|
||
> [English](./README.en.md) · [原始项目](https://github.com/crewAIInc/crewAI) · [上游 README](https://github.com/crewAIInc/crewAI/blob/HEAD/README.md)
|
||
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
|
||
|
||
<p align="center">
|
||
<a href="https://github.com/crewAIInc/crewAI">
|
||
<img src="docs/images/crewai_logo.png" width="600px" alt="开源多 AI 智能体编排框架">
|
||
</a>
|
||
</p>
|
||
<p align="center" style="display: flex; justify-content: center; gap: 20px; align-items: center;">
|
||
<a href="https://trendshift.io/repositories/11239" target="_blank">
|
||
<img src="https://trendshift.io/api/badge/repositories/11239" alt="crewAIInc%2FcrewAI | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/>
|
||
</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://crewai.com">首页</a>
|
||
·
|
||
<a href="https://crewai.com/open-source">开源</a>
|
||
·
|
||
<a href="https://docs.crewai.com">文档</a>
|
||
·
|
||
<a href="https://app.crewai.com">开始云端试用</a>
|
||
·
|
||
<a href="https://blog.crewai.com">博客</a>
|
||
·
|
||
<a href="https://community.crewai.com">论坛</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://github.com/crewAIInc/crewAI">
|
||
<img src="https://img.shields.io/github/stars/crewAIInc/crewAI" alt="GitHub 仓库 Star 数">
|
||
</a>
|
||
<a href="https://github.com/crewAIInc/crewAI/network/members">
|
||
<img src="https://img.shields.io/github/forks/crewAIInc/crewAI" alt="GitHub Fork 数">
|
||
</a>
|
||
<a href="https://github.com/crewAIInc/crewAI/issues">
|
||
<img src="https://img.shields.io/github/issues/crewAIInc/crewAI" alt="GitHub Issues">
|
||
</a>
|
||
<a href="https://github.com/crewAIInc/crewAI/pulls">
|
||
<img src="https://img.shields.io/github/issues-pr/crewAIInc/crewAI" alt="GitHub Pull Requests">
|
||
</a>
|
||
<a href="https://opensource.org/licenses/MIT">
|
||
<img src="https://img.shields.io/badge/License-MIT-green.svg" alt="许可证:MIT">
|
||
</a>
|
||
</p>
|
||
|
||
<p align="center">
|
||
<a href="https://pypi.org/project/crewai/">
|
||
<img src="https://img.shields.io/pypi/v/crewai" alt="PyPI 版本">
|
||
</a>
|
||
<a href="https://pypi.org/project/crewai/">
|
||
<img src="https://img.shields.io/pypi/dm/crewai" alt="PyPI 下载量">
|
||
</a>
|
||
<a href="https://twitter.com/crewAIInc">
|
||
<img src="https://img.shields.io/twitter/follow/crewAIInc?style=social" alt="Twitter 关注">
|
||
</a>
|
||
</p>
|
||
|
||
### 快速灵活的多智能体自动化框架
|
||
|
||
> CrewAI 是一个开源 Python 框架,提供高层抽象与底层 API,用于构建可用于生产环境的多智能体工作流。
|
||
> 它通过 Crews 为开发者提供自主的智能体协作能力,并通过 Flows 实现精确的事件驱动控制。
|
||
|
||
- **CrewAI Crews**:通过基于角色的 AI 智能体,优化自主性与协作智能。
|
||
- **CrewAI Flows**:构建事件驱动自动化,结合精确的工作流控制、单次 LLM 调用,以及对 Crews 的原生支持。
|
||
|
||
已有超过 100,000 名开发者通过我们在 [learn.crewai.com](https://learn.crewai.com), 的社区课程获得认证,CrewAI 正迅速成为可用于生产环境的智能体自动化的标准。
|
||
|
||
# CrewAI AMP Suite
|
||
|
||
对于需要在 CrewAI 周围配备商业控制平面的组织,[CrewAI AMP Suite](https://www.crewai.com/enterprise) 提供托管部署、可观测性、治理、安全与企业级支持。
|
||
|
||
你可以免费试用该套件的一部分:[Crew Control Plane, for free](https://app.crewai.com).
|
||
|
||
## Crew Control Plane 核心功能:
|
||
|
||
- **追踪与可观测性(Tracing & Observability)**:实时监控并追踪你的 AI 智能体与工作流,包括指标、日志与追踪数据。
|
||
- **统一控制平面(Unified Control Plane)**:集中式平台,用于管理、监控和扩展你的 AI 智能体与工作流。
|
||
- **无缝集成(Seamless Integrations)**:轻松连接现有企业系统、数据源与云基础设施。
|
||
- **高级安全(Advanced Security)**:内置强大的安全与合规措施,确保安全部署与管理。
|
||
- **可操作的洞察(Actionable Insights)**:实时分析与报告,用于优化性能与决策。
|
||
- **7×24 支持(24/7 Support)**:专属企业级支持,确保不间断运行并快速解决问题。
|
||
- **本地与云端部署选项(On-premise and Cloud Deployment Options)**:根据你的安全与合规要求,在本地或云端部署 CrewAI AMP。
|
||
|
||
CrewAI AMP 面向寻求强大、可靠解决方案的企业,旨在将复杂的业务流程转化为高效、智能的自动化。
|
||
|
||
## 目录
|
||
|
||
- [用 AI 构建](#build-with-ai)
|
||
- [为什么选择 CrewAI?](#why-crewai)
|
||
- [入门指南](#getting-started)
|
||
- [核心功能](#key-features)
|
||
- [理解 Flows 与 Crews](#understanding-flows-and-crews)
|
||
- [示例](#examples)
|
||
- [快速教程](#quick-tutorial)
|
||
- [编写职位描述](#write-job-descriptions)
|
||
- [旅行规划](#trip-planner)
|
||
- [股票分析](#stock-analysis)
|
||
- [结合使用 Crews 与 Flows](#using-crews-and-flows-together)
|
||
- [将 Crew 连接到模型](#connecting-your-crew-to-a-model)
|
||
- [何时使用 CrewAI](#when-to-use-crewai)
|
||
- [贡献](#contribution)
|
||
- [遥测](#telemetry)
|
||
- [许可证](#license)
|
||
- [常见问题(FAQ)](#frequently-asked-questions-faq)
|
||
|
||
## 用 AI 构建
|
||
|
||
正在使用 AI 编程智能体?一条命令即可教会它 CrewAI 最佳实践:
|
||
|
||
**Claude Code:**
|
||
```shell
|
||
/plugin marketplace add crewAIInc/skills
|
||
/plugin install crewai-skills@crewai-plugins
|
||
/reload-plugins
|
||
```
|
||
四个技能会在你提出相关 CrewAI 问题时自动激活:
|
||
|
||
| 技能 | 触发场景 |
|
||
|-------|--------------|
|
||
| `getting-started` | 搭建新项目,在 `LLM.call()` / `Agent` / `Crew` / `Flow` 之间做选择,配置 `crew.py` / `main.py` |
|
||
| `design-agent` | 配置智能体——角色、目标、背景故事、工具、LLM、记忆、护栏(guardrails) |
|
||
| `design-task` | 编写任务描述、依赖关系、结构化输出(`output_pydantic`、`output_json`)及人工审核 |
|
||
| `ask-docs` | 查询实时 [CrewAI 文档 MCP 服务器](https://docs.crewai.com/mcp) 以获取最新 API 详情 |
|
||
|
||
**Cursor、Codex、Windsurf 及其他工具([skills.sh](https://skills.sh/crewaiinc/skills)):**
|
||
```shell
|
||
npx skills add crewaiinc/skills
|
||
```
|
||
|
||
这将安装官方的 [CrewAI Skills](https://github.com/crewAIInc/skills) ——结构化指令,用于教会编程智能体如何搭建 Flows、配置 Crews、设计智能体与任务,并遵循 CrewAI 模式。
|
||
|
||
## 为什么选择 CrewAI?
|
||
|
||
<div align="center" style="margin-bottom: 30px;">
|
||
<img src="docs/images/asset.png" alt="CrewAI Logo" width="100%">
|
||
</div>
|
||
|
||
CrewAI 释放多智能体自动化的真正潜力,通过 AI 智能体 Crews 与事件驱动 Flows 提供速度、灵活性与控制力:
|
||
|
||
- **专用架构(Purpose-built architecture)**:专为智能体编排而设计,拥有轻量级 Python 核心与简洁原语,适用于真实世界的自动化场景。
|
||
- **高性能(High Performance)**:针对速度与最小资源占用进行优化,实现更快执行。
|
||
- **灵活的底层定制(Flexible Low-Level Customization)**:完全自由定制,从工作流与系统架构到智能体行为、内部提示词与执行逻辑。
|
||
- **适用于各类场景(Ideal for Every Use Case)**:经实践证明,对简单任务、复杂工作流与生产级自动化均有效。
|
||
- **活跃的社区(Robust Community)**:由快速增长的社区支持,已有超过 **100,000 名认证**开发者,提供全面的支持与资源。
|
||
|
||
CrewAI 赋能开发者与团队,构建在简洁性、灵活性与生产级控制之间取得平衡的智能自动化。
|
||
|
||
## 入门指南
|
||
|
||
按照本教程设置并运行你的第一组 CrewAI 智能体。
|
||
|
||
[](https://www.youtube.com/watch?v=-kSOTtYzgEw "CrewAI 入门教程")
|
||
|
||
###
|
||
|
||
学习资源
|
||
|
||
通过我们的综合课程学习 CrewAI:
|
||
|
||
- [Multi AI Agent Systems with CrewAI](https://www.deeplearning.ai/short-courses/multi-ai-agent-systems-with-crewai/) - 掌握多智能体系统的基础知识
|
||
- [Practical Multi AI Agents and Advanced Use Cases](https://www.deeplearning.ai/short-courses/practical-multi-ai-agents-and-advanced-use-cases-with-crewai/) - 深入探索高级实现
|
||
|
||
### 理解 Flows 与 Crews
|
||
|
||
CrewAI 提供两种强大且互补的方法,可无缝协同构建复杂的 AI 应用:
|
||
|
||
1. **Crews**:具备真正自主性与能动性的 AI 智能体团队,通过基于角色的协作完成复杂任务。Crews 支持:
|
||
|
||
- 智能体之间自然、自主的决策
|
||
- 动态任务委派与协作
|
||
- 具有明确目标与专业领域的角色分工
|
||
- 灵活的问题解决方法
|
||
|
||
2. **Flows**:面向生产环境、事件驱动的工作流,可对复杂自动化实现精确控制。Flows 提供:
|
||
|
||
- 针对真实场景的细粒度执行路径控制
|
||
- 任务之间安全、一致的状态管理
|
||
- AI 智能体与生产级 Python 代码的清晰集成
|
||
- 用于复杂业务逻辑的条件分支
|
||
|
||
CrewAI 的真正威力在于将 Crews 与 Flows 结合使用。这种协同使你可以:
|
||
|
||
- 构建复杂的生产级应用
|
||
- 在自主性与精确控制之间取得平衡
|
||
- 应对复杂的真实世界场景
|
||
- 保持清晰、可维护的代码结构
|
||
|
||
### 安装入门
|
||
|
||
要开始使用 CrewAI,请按以下简单步骤操作:
|
||
|
||
### 1. 安装
|
||
|
||
确保系统已安装 Python >=3.10 <3.14。CrewAI 使用 [UV](https://docs.astral.sh/uv/) 进行依赖管理与包处理,提供流畅的安装与运行体验。
|
||
|
||
首先,安装 CrewAI:
|
||
|
||
```shell
|
||
uv pip install crewai
|
||
```
|
||
|
||
如果你想安装带有可选功能的 'crewai' 包(包含供智能体使用的额外工具),可使用以下命令:
|
||
|
||
```shell
|
||
uv pip install 'crewai[tools]'
|
||
```
|
||
|
||
上述命令会安装基础包,并添加需要更多依赖才能运行的额外组件。
|
||
|
||
### 依赖问题排查
|
||
|
||
如果在安装或使用过程中遇到问题,可参考以下常见解决方案:
|
||
|
||
#### 常见问题
|
||
|
||
1. **ModuleNotFoundError: No module named 'tiktoken'**
|
||
|
||
- 显式安装 tiktoken:`uv pip install 'crewai[embeddings]'`
|
||
- 若使用 embedchain 或其他工具:`uv pip install 'crewai[tools]'`
|
||
|
||
2. **Failed building wheel for tiktoken**
|
||
|
||
- 确保已安装 Rust 编译器(见上文安装步骤)
|
||
- Windows:确认已安装 Visual C++ Build Tools
|
||
- 尝试升级 pip:`uv pip install --upgrade pip`
|
||
- 若问题仍然存在,使用预编译 wheel:`uv pip install tiktoken --prefer-binary`
|
||
|
||
### 2. 使用 YAML 配置搭建 Crew
|
||
|
||
要创建新的 CrewAI 项目,请运行以下 CLI(Command Line Interface,命令行界面)命令:
|
||
|
||
```shell
|
||
crewai create crew <project_name>
|
||
```
|
||
|
||
该命令会创建一个新项目文件夹,结构如下:
|
||
|
||
```
|
||
my_project/
|
||
├── .gitignore
|
||
├── pyproject.toml
|
||
├── README.md
|
||
├── .env
|
||
└── src/
|
||
└── my_project/
|
||
├── __init__.py
|
||
├── main.py
|
||
├── crew.py
|
||
├── tools/
|
||
│ ├── custom_tool.py
|
||
│ └── __init__.py
|
||
└── config/
|
||
├── agents.yaml
|
||
└── tasks.yaml
|
||
```
|
||
|
||
现在可通过编辑 `src/my_project` 文件夹中的文件开始开发 crew。`main.py` 文件是项目入口,`crew.py` 文件用于定义 crew,`agents.yaml` 文件用于定义 agents,`tasks.yaml` 文件用于定义 tasks。
|
||
|
||
#### 定制项目时,你可以:
|
||
|
||
- 修改 `src/my_project/config/agents.yaml` 以定义 agents。
|
||
- 修改 `src/my_project/config/tasks.yaml` 以定义 tasks。
|
||
- 修改 `src/my_project/crew.py` 以添加自定义逻辑、工具和特定参数。
|
||
- 修改 `src/my_project/main.py` 为 agents 和 tasks 添加自定义输入。
|
||
- 将环境变量添加到 `.env` 文件中。
|
||
|
||
#### 顺序流程的简单 crew 示例:
|
||
|
||
实例化你的 crew:
|
||
|
||
```shell
|
||
crewai create crew latest-ai-development
|
||
```
|
||
|
||
按需修改文件以适配你的用例:
|
||
|
||
**agents.yaml**
|
||
|
||
```yaml
|
||
# src/my_project/config/agents.yaml
|
||
researcher:
|
||
role: >
|
||
{topic} Senior Data Researcher
|
||
goal: >
|
||
Uncover cutting-edge developments in {topic}
|
||
backstory: >
|
||
You're a seasoned researcher with a knack for uncovering the latest
|
||
developments in {topic}. Known for your ability to find the most relevant
|
||
information and present it in a clear and concise manner.
|
||
|
||
reporting_analyst:
|
||
role: >
|
||
{topic} Reporting Analyst
|
||
goal: >
|
||
Create detailed reports based on {topic} data analysis and research findings
|
||
backstory: >
|
||
You're a meticulous analyst with a keen eye for detail. You're known for
|
||
your ability to turn complex data into clear and concise reports, making
|
||
it easy for others to understand and act on the information you provide.
|
||
```
|
||
|
||
**tasks.yaml**
|
||
|
||
````yaml
|
||
# src/my_project/config/tasks.yaml
|
||
research_task:
|
||
description: >
|
||
Conduct a thorough research about {topic}
|
||
Make sure you find any interesting and relevant information given
|
||
the current year is 2025.
|
||
expected_output: >
|
||
A list with 10 bullet points of the most relevant information about {topic}
|
||
agent: researcher
|
||
|
||
reporting_task:
|
||
description: >
|
||
Review the context you got and expand each topic into a full section for a report.
|
||
Make sure the report is detailed and contains any and all relevant information.
|
||
expected_output: >
|
||
A fully fledge reports with the mains topics, each with a full section of information.
|
||
Formatted as markdown without '```'
|
||
agent: reporting_analyst
|
||
output_file: report.md
|
||
````
|
||
|
||
**crew.py**
|
||
|
||
```python
|
||
# src/my_project/crew.py
|
||
from crewai import Agent, Crew, Process, Task
|
||
from crewai.project import CrewBase, agent, crew, task
|
||
from crewai_tools import SerperDevTool
|
||
from crewai.agents.agent_builder.base_agent import BaseAgent
|
||
from typing import List
|
||
|
||
@CrewBase
|
||
class LatestAiDevelopmentCrew():
|
||
"""LatestAiDevelopment crew"""
|
||
agents: List[BaseAgent]
|
||
tasks: List[Task]
|
||
|
||
@agent
|
||
def researcher(self) -> Agent:
|
||
return Agent(
|
||
config=self.agents_config['researcher'],
|
||
verbose=True,
|
||
tools=[SerperDevTool()]
|
||
)
|
||
|
||
@agent
|
||
def reporting_analyst(self) -> Agent:
|
||
return Agent(
|
||
config=self.agents_config['reporting_analyst'],
|
||
verbose=True
|
||
)
|
||
|
||
@task
|
||
def research_task(self) -> Task:
|
||
return Task(
|
||
config=self.tasks_config['research_task'],
|
||
)
|
||
|
||
@task
|
||
def reporting_task(self) -> Task:
|
||
return Task(
|
||
config=self.tasks_config['reporting_task'],
|
||
output_file='report.md'
|
||
)
|
||
|
||
@crew
|
||
def crew(self) -> Crew:
|
||
"""Creates the LatestAiDevelopment crew"""
|
||
return Crew(
|
||
agents=self.agents, # Automatically created by the @agent decorator
|
||
tasks=self.tasks, # Automatically created by the @task decorator
|
||
process=Process.sequential,
|
||
verbose=True,
|
||
)
|
||
```
|
||
|
||
**main.py**
|
||
|
||
```python
|
||
#!/usr/bin/env python
|
||
# src/my_project/main.py
|
||
import sys
|
||
from latest_ai_development.crew import LatestAiDevelopmentCrew
|
||
|
||
def run():
|
||
"""
|
||
Run the crew.
|
||
"""
|
||
inputs = {
|
||
'topic': 'AI Agents'
|
||
}
|
||
LatestAiDevelopmentCrew().crew().kickoff(inputs=inputs)
|
||
```
|
||
|
||
### 3. 运行 Crew
|
||
|
||
运行 crew 之前,请确保在 `.env` 文件中设置以下环境变量:
|
||
|
||
- [OpenAI API key](https://platform.openai.com/account/api-keys)(或其他 LLM API key):`OPENAI_API_KEY=sk-...`
|
||
- [Serper.dev](https://serper.dev/) API key:`SERPER_API_KEY=YOUR_KEY_HERE`
|
||
|
||
使用 CLI 命令锁定依赖并安装,但请先进入项目目录:
|
||
|
||
```shell
|
||
cd my_project
|
||
crewai install (Optional)
|
||
```
|
||
|
||
在项目根目录执行以下命令以运行 crew:
|
||
|
||
```bash
|
||
crewai run
|
||
```
|
||
|
||
或
|
||
|
||
```bash
|
||
python src/my_project/main.py
|
||
```
|
||
|
||
若因使用 poetry 而出现错误,请运行以下命令更新 crewai 包:
|
||
|
||
```bash
|
||
crewai update
|
||
```
|
||
|
||
你应能在控制台看到输出,并在项目根目录生成 `report.md` 文件,其中包含完整的最终报告。
|
||
|
||
除顺序流程(sequential process)外,你还可以使用层级流程(hierarchical process),它会自动为已定义的 crew 指派一名 manager,通过任务委派和结果校验来协调任务的规划与执行。[在此了解更多流程相关信息](https://docs.crewai.com/core-concepts/Processes/).
|
||
|
||
## 核心特性
|
||
|
||
CrewAI 为开发者提供了实用的基础,用于构建能从原型走向生产的智能体(agentic)系统:在有帮助的地方实现自主协作,在关键之处进行显式工作流控制,并全程支持 Python 原生定制。
|
||
|
||
- **Crews 实现自主性**:组建由角色、目标、工具和任务定义的专项 AI 智能体团队。
|
||
- **Flows 实现可控性**:构建具备状态、分支、路由和生产级逻辑的事件驱动工作流。
|
||
- **无缝集成**:组合 Crews 与 Flows,打造复杂的真实场景自动化。
|
||
- **Python 原生定制**:自定义提示词、工具、执行路径、状态和集成,无需与框架对抗。
|
||
- **面向智能体的能力**:使用工具、记忆、知识、检查点(checkpointing)、异步执行以及 MCP/A2A 支持,打造更强大的生产级智能体。
|
||
- **生产就绪模式**:随系统成长添加确定性步骤、人工输入、结构化输出和检查点。
|
||
- **活跃的社区**:拥有完善的文档和超过 100,000 名认证开发者的支持,提供出色的指导与帮助。
|
||
|
||
选择 CrewAI,构建强大、灵活且生产就绪的 AI 自动化。
|
||
|
||
## 示例
|
||
|
||
你可以在 [CrewAI-examples 仓库](https://github.com/crewAIInc/crewAI-examples?tab=readme-ov-file): 中测试各类真实场景的 AI crew 示例:
|
||
|
||
- [落地页生成器](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/landing_page_generator)
|
||
- [执行过程中的人工输入](https://docs.crewai.com/how-to/Human-Input-on-Execution)
|
||
- [行程规划器](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/trip_planner)
|
||
- [股票分析](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/stock_analysis)
|
||
|
||
### 快速教程
|
||
|
||
[](https://www.youtube.com/watch?v=tnejrr-0a94 "CrewAI 教程")
|
||
|
||
### 编写职位描述
|
||
|
||
[查看此示例的代码](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/job-posting),或在下方观看视频:
|
||
|
||
[](https://www.youtube.com/watch?v=u98wEMz-9to "职位发布")
|
||
|
||
### 行程规划
|
||
|
||
[查看此示例的代码](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/trip_planner),或在下方观看视频:
|
||
|
||
[](https://www.youtube.com/watch?v=xis7rWp-hjs "行程规划器")
|
||
|
||
### 股票分析
|
||
|
||
[查看此示例的代码](https://github.com/crewAIInc/crewAI-examples/tree/main/crews/stock_analysis),或在下方观看视频:
|
||
|
||
[](https://www.youtube.com/watch?v=e0Uj4yWdaAg "股票分析")
|
||
|
||
### 结合使用 Crews 与 Flows
|
||
|
||
当 Crews 与 Flows 结合使用时,CrewAI 的真正威力得以展现,可打造复杂的自动化流水线。
|
||
CrewAI flows 支持 `or_` 和 `and_` 等逻辑运算符来组合多个条件。可与 `@start`、`@listen` 或 `@router` 装饰器配合使用,创建复杂的触发条件。
|
||
|
||
- `or_`:当满足任意指定条件时触发。
|
||
- `and_`当满足全部指定条件时触发。
|
||
|
||
以下展示如何在 Flow 中编排多个 Crew:
|
||
|
||
```python
|
||
from crewai.flow.flow import Flow, listen, start, router, or_
|
||
from crewai import Crew, Agent, Task, Process
|
||
from pydantic import BaseModel
|
||
|
||
# Define structured state for precise control
|
||
class MarketState(BaseModel):
|
||
sentiment: str = "neutral"
|
||
confidence: float = 0.0
|
||
recommendations: list = []
|
||
|
||
class AdvancedAnalysisFlow(Flow[MarketState]):
|
||
@start()
|
||
def fetch_market_data(self):
|
||
# Demonstrate low-level control with structured state
|
||
self.state.sentiment = "analyzing"
|
||
return {"sector": "tech", "timeframe": "1W"} # These parameters match the task description template
|
||
|
||
@listen(fetch_market_data)
|
||
def analyze_with_crew(self, market_data):
|
||
# Show crew agency through specialized roles
|
||
analyst = Agent(
|
||
role="Senior Market Analyst",
|
||
goal="Conduct deep market analysis with expert insight",
|
||
backstory="You're a veteran analyst known for identifying subtle market patterns"
|
||
)
|
||
researcher = Agent(
|
||
role="Data Researcher",
|
||
goal="Gather and validate supporting market data",
|
||
backstory="You excel at finding and correlating multiple data sources"
|
||
)
|
||
|
||
analysis_task = Task(
|
||
description="Analyze {sector} sector data for the past {timeframe}",
|
||
expected_output="Detailed market analysis with confidence score",
|
||
agent=analyst
|
||
)
|
||
research_task = Task(
|
||
description="Find supporting data to validate the analysis",
|
||
expected_output="Corroborating evidence and potential contradictions",
|
||
agent=researcher
|
||
)
|
||
|
||
# Demonstrate crew autonomy
|
||
analysis_crew = Crew(
|
||
agents=[analyst, researcher],
|
||
tasks=[analysis_task, research_task],
|
||
process=Process.sequential,
|
||
verbose=True
|
||
)
|
||
return analysis_crew.kickoff(inputs=market_data) # Pass market_data as named inputs
|
||
|
||
@router(analyze_with_crew)
|
||
def determine_next_steps(self):
|
||
# Show flow control with conditional routing
|
||
if self.state.confidence > 0.8:
|
||
return "high_confidence"
|
||
elif self.state.confidence > 0.5:
|
||
return "medium_confidence"
|
||
return "low_confidence"
|
||
|
||
@listen("high_confidence")
|
||
def execute_strategy(self):
|
||
# Demonstrate complex decision making
|
||
strategy_crew = Crew(
|
||
agents=[
|
||
Agent(role="Strategy Expert",
|
||
goal="Develop optimal market strategy")
|
||
],
|
||
tasks=[
|
||
Task(description="Create detailed strategy based on analysis",
|
||
expected_output="Step-by-step action plan")
|
||
]
|
||
)
|
||
return strategy_crew.kickoff()
|
||
|
||
@listen(or_("medium_confidence", "low_confidence"))
|
||
def request_additional_analysis(self):
|
||
self.state.recommendations.append("Gather more data")
|
||
return "Additional analysis required"
|
||
```
|
||
|
||
此示例演示了如何:
|
||
|
||
1. 使用 Python 代码进行基础数据操作
|
||
2. 将 Crew 的创建与执行作为工作流中的步骤
|
||
3. 使用 Flow 装饰器管理操作顺序
|
||
4. 根据 Crew 结果实现条件分支
|
||
|
||
## 将 Crew 连接到模型
|
||
|
||
CrewAI 支持通过多种连接方式使用各类 LLM。默认情况下,智能体查询模型时将使用 OpenAI API。不过还有其他方式可让智能体连接模型。例如,你可以通过 Ollama 工具配置智能体使用本地模型。
|
||
|
||
有关配置智能体与模型连接的详情,请参阅 [将 CrewAI 连接到 LLM](https://docs.crewai.com/how-to/LLM-Connections/) 页面。
|
||
|
||
## 何时使用 CrewAI
|
||
|
||
当你需要的不仅是单次提示或聊天机器人,而是多步骤工作、专项智能体、工具调用、结构化输出、人工审核,或需要将有明确业务逻辑的工作流与自主推理相结合时,请使用 CrewAI。
|
||
|
||
CrewAI 在以下场景中尤其有用:
|
||
|
||
- 协调多个具有明确角色与任务的智能体。
|
||
- 将智能体工作封装在确定性、事件驱动的工作流中。
|
||
- 用常规 Python 保留应用逻辑。
|
||
- 在不更换框架的情况下从实验走向生产。
|
||
- 随系统成长逐步添加工具、记忆、检查点和异步执行。
|
||
|
||
## 贡献
|
||
|
||
CrewAI 是开源项目,我们欢迎贡献。如果你想参与贡献,请:
|
||
|
||
- Fork 该仓库。
|
||
- 为你的功能创建新分支。
|
||
- 添加你的功能或改进。
|
||
- 提交 pull request。
|
||
- 我们感谢你的参与!
|
||
|
||
### 贡献文档
|
||
|
||
[docs.crewai.com](https://docs.crewai.com) 站点由
|
||
`docs/` 发布,托管于 [Mintlify](https://www.mintlify.com/). 文档采用基于目录的版本管理:对 `docs/edge/<lang>/...` 的编辑(例如
|
||
`docs/edge/en/concepts/agents.mdx`)会立即出现在 **Edge** 版本选择器下,并在下一次发布切分时冻结为 `docs/v<X.Y.Z>/` 下的新版本快照。已冻结的快照不可变——CI 会拒绝在未使用 `[docs-freeze]` 标题前缀的情况下修改它们的 PR。发布 CLI(`devtools release`)会自动处理冻结;完整贡献指南见
|
||
[`AGENTS.md`](AGENTS.md),发布切分操作手册见
|
||
[`RELEASING.md`](RELEASING.md)。
|
||
|
||
### 安装依赖
|
||
|
||
```bash
|
||
uv lock
|
||
uv sync
|
||
```
|
||
|
||
### 虚拟环境
|
||
|
||
```bash
|
||
uv venv
|
||
```
|
||
|
||
### Pre-commit 钩子
|
||
|
||
```bash
|
||
pre-commit install
|
||
```
|
||
|
||
### 运行测试
|
||
|
||
```bash
|
||
uv run pytest .
|
||
```
|
||
|
||
### 运行静态类型检查
|
||
|
||
```bash
|
||
uvx mypy src
|
||
```
|
||
|
||
### 打包
|
||
|
||
```bash
|
||
uv build
|
||
```
|
||
|
||
### 本地安装
|
||
|
||
```bash
|
||
uv pip install dist/*.tar.gz
|
||
```
|
||
|
||
## 遥测(Telemetry)
|
||
|
||
CrewAI 使用匿名遥测收集使用数据,主要目的是通过将精力集中在最常用的功能、集成和工具上,帮助我们改进该库。
|
||
|
||
务必理解:**不会收集**与提示词(prompts)、任务描述、智能体(agent)背景故事或目标、工具使用情况、API 调用、响应、智能体处理的任何数据,或密钥和环境变量相关的数据,下文提到的例外情况除外。启用 `share_crew` 功能后,会收集包括任务描述、智能体背景故事或目标以及其他特定属性在内的详细数据,以便在尊重用户隐私的同时提供更深洞察。用户可通过将环境变量 OTEL_SDK_DISABLED 设置为 true 来禁用遥测。
|
||
|
||
收集的数据包括:
|
||
|
||
- CrewAI 版本
|
||
- 以便了解有多少用户在使用最新版本
|
||
- Python 版本
|
||
- 以便决定更好地支持哪些版本
|
||
- 通用操作系统信息(例如 CPU 数量、macOS/Windows/Linux)
|
||
- 以便了解应重点支持哪些操作系统,以及是否可以构建特定于操作系统的功能
|
||
- Crew 中智能体和任务的数量
|
||
- 以便确保我们在内部使用类似用例进行测试,并指导用户遵循最佳实践
|
||
- 使用的 Crew Process
|
||
- 了解应将精力集中在何处
|
||
- 智能体是否使用 memory 或允许 delegation
|
||
- 了解我们是否改进了这些功能,或是否应弃用它们
|
||
- 任务是并行还是顺序执行
|
||
- 了解是否应更侧重于并行执行
|
||
- 使用的语言模型
|
||
- 改进对最常用语言的支持
|
||
- Crew 中智能体的角色
|
||
- 了解高层用例,以便构建更好的工具、集成和示例
|
||
- 可用工具名称
|
||
- 了解在公开可用工具中哪些使用最多,以便改进它们
|
||
|
||
用户可通过在其 Crew 上将 `share_crew` 属性设置为 `True` 来选择加入进一步遥测(Further Telemetry),共享完整遥测数据。启用 `share_crew` 会收集详细的 crew 和任务执行数据,包括任务的 `goal`、`backstory`、`context` 和 `output`。这能在尊重用户共享选择的同时,更深入地洞察使用模式。
|
||
|
||
## 许可证
|
||
|
||
CrewAI 在 [MIT License](https://github.com/crewAIInc/crewAI/blob/main/LICENSE). 下发布
|
||
|
||
## 常见问题(FAQ)
|
||
|
||
### 通用
|
||
|
||
- [CrewAI 究竟是什么?](#q-what-exactly-is-crewai)
|
||
- [如何安装 CrewAI?](#q-how-do-i-install-crewai)
|
||
- [CrewAI 是独立框架吗?](#q-is-crewai-a-standalone-framework)
|
||
- [CrewAI 是开源的吗?](#q-is-crewai-open-source)
|
||
- [CrewAI 会收集用户数据吗?](#q-does-crewai-collect-data-from-users)
|
||
|
||
### 功能与能力
|
||
|
||
- [CrewAI 能处理复杂用例吗?](#q-can-crewai-handle-complex-use-cases)
|
||
- [我可以用本地 AI 模型配合 CrewAI 吗?](#q-can-i-use-crewai-with-local-ai-models)
|
||
- [Crews 与 Flows 有何不同?](#q-what-makes-crews-different-from-flows)
|
||
- [CrewAI 支持微调或训练自定义模型吗?](#q-does-crewai-support-fine-tuning-or-training-custom-models)
|
||
|
||
### 资源与社区
|
||
|
||
- [在哪里可以找到真实的 CrewAI 示例?](#q-where-can-i-find-real-world-crewai-examples)
|
||
- [如何为 CrewAI 做贡献?](#q-how-can-i-contribute-to-crewai)
|
||
|
||
### 企业功能
|
||
|
||
- [CrewAI AMP 还提供哪些额外功能?](#q-what-additional-features-does-crewai-amp-offer)
|
||
- [CrewAI AMP 是否支持云端和本地部署?](#q-is-crewai-amp-available-for-cloud-and-on-premise-deployments)
|
||
- [我可以免费试用 CrewAI AMP 吗?](#q-can-i-try-crewai-amp-for-free)
|
||
|
||
### Q: CrewAI 究竟是什么?
|
||
|
||
A: CrewAI 是一个轻量、快速的 Python 框架,专为编排自主 AI 智能体和生产就绪的 agentic 工作流而构建。
|
||
|
||
### Q: 如何安装 CrewAI?
|
||
|
||
A: 使用 pip 安装 CrewAI:
|
||
|
||
```shell
|
||
uv pip install crewai
|
||
```
|
||
|
||
如需额外工具,请使用:
|
||
|
||
```shell
|
||
uv pip install 'crewai[tools]'
|
||
```
|
||
|
||
### Q: CrewAI 是独立框架吗?
|
||
|
||
A: 是的。CrewAI 是独立的 Python 框架,拥有自己的智能体、任务、crew、flow、工具和编排原语。
|
||
|
||
### Q: CrewAI 能处理复杂用例吗?
|
||
|
||
A: 可以。CrewAI 既擅长简单场景,也擅长高度复杂的真实世界场景,在高层次和低层次都提供深度定制选项,从内部提示词到复杂的工作流编排。
|
||
|
||
### Q: 我可以用本地 AI 模型配合 CrewAI 吗?
|
||
|
||
A: 当然可以!CrewAI 支持多种语言模型,包括本地模型。Ollama 和 LM Studio 等工具可实现无缝集成。更多详情请参阅 [LLM Connections 文档](https://docs.crewai.com/how-to/LLM-Connections/)。
|
||
|
||
### Q: Crews 与 Flows 有何不同?
|
||
|
||
A: Crews 提供自主智能体协作,适合需要灵活决策和动态交互的任务。Flows 提供精确的事件驱动控制,适合管理详细的执行路径和安全的状态管理。你可以无缝结合两者以达到最佳效果。
|
||
|
||
### Q: CrewAI 是开源的吗?
|
||
|
||
A: 是的,CrewAI 是开源的,并积极鼓励社区贡献与协作。
|
||
|
||
### Q: CrewAI 会收集用户数据吗?
|
||
|
||
A: CrewAI 仅出于改进目的收集匿名遥测数据。除非用户明确启用,否则绝不会收集提示词、任务或 API 响应等敏感数据。
|
||
|
||
### Q: 在哪里可以找到真实的 CrewAI 示例?
|
||
|
||
A: 请查看 [CrewAI-examples 仓库](https://github.com/crewAIInc/crewAI-examples), 中的实用示例,涵盖旅行规划、股票分析和职位发布等用例。
|
||
|
||
### Q: 如何为 CrewAI 做贡献?
|
||
|
||
A: 热烈欢迎贡献!Fork 仓库、创建分支、实现更改并提交 pull request。详细指南请参阅 README 中的贡献(Contribution)部分。
|
||
|
||
### Q: CrewAI AMP 还提供哪些额外功能?
|
||
|
||
A: CrewAI AMP 提供统一控制平面、实时可观测性、安全集成、高级安全、可操作的洞察以及全天候企业支持等高级功能。
|
||
|
||
### Q: CrewAI AMP 是否支持云端和本地部署?
|
||
|
||
A: 是的,CrewAI AMP 同时支持基于云端的部署和本地(on-premise)部署,使企业能够满足其特定的安全与合规要求。
|
||
|
||
### Q: 我可以免费试用 CrewAI AMP 吗?
|
||
|
||
A: 可以,你可以通过访问 [Crew Control Plane](https://app.crewai.com) 免费探索 CrewAI AMP Suite 的部分功能。
|
||
|
||
### Q: CrewAI 支持微调或训练自定义模型吗?
|
||
|
||
A:可以,CrewAI 可与自定义训练或微调(fine-tuned)的模型集成,让你用领域专属知识与更高精度来增强智能体(agent)。
|
||
|
||
### Q:CrewAI 智能体能否与外部工具和 API 交互?
|
||
|
||
A:完全可以!CrewAI 智能体可轻松集成外部工具、API 和数据库,从而利用真实世界的数据与资源。
|
||
|
||
### Q:CrewAI 是否适用于生产环境?
|
||
|
||
A:是的,CrewAI 采用面向生产环境的设计模式,支持可靠、稳定且可扩展的智能体工作流。
|
||
|
||
### Q:CrewAI 的可扩展性如何?
|
||
|
||
A:CrewAI 具备高度可扩展性,既支持简单自动化,也支持同时涉及大量智能体与复杂任务的大规模工作流。
|
||
|
||
### Q:CrewAI 是否提供调试与监控工具?
|
||
|
||
A:是的,CrewAI AMP 提供高级调试、追踪(tracing)与实时可观测性(observability)功能,简化自动化的管理与故障排查。
|
||
|
||
### Q:CrewAI 支持哪些编程语言?
|
||
|
||
A:CrewAI 主要以 Python 为基础,但通过灵活的 API 集成能力,可轻松与任何编程语言编写的服务与 API 对接。
|
||
|
||
### Q:CrewAI 是否为初学者提供学习资源?
|
||
|
||
A:是的,CrewAI 通过 learn.crewai.com 提供大量面向初学者的教程、课程与文档,支持各技能水平的开发者。
|
||
|
||
### Q:CrewAI 能否自动化人在回路(human-in-the-loop)工作流?
|
||
|
||
A:可以,CrewAI 全面支持人在回路工作流,让人类专家与 AI 智能体无缝协作,以提升决策质量。
|