【CrewAI系列3】8 分钟,我用 CrewAI 创建了第一个 AI 员工

17 阅读10分钟

这是CrewAI系列的第3篇,计划写24篇,会持续更新;

作者:14 年测试/QA 老兵

系列:CrewAI 多 Agent 测试框架实战(第 3 篇)

字数:约 4,200 字

阅读时间:10 分钟

收益:学完即可创建你的第一个 AI 员工,替代重复性工作

你是不是也经历过这些

❌ 重复写测试用例 —— 同样的场景,换个项目又要重写一遍

❌ 手动查资料 —— 遇到不懂的测试概念,要去 网上搜半天

❌ 文档没人看 —— 辛辛苦苦写的测试文档,开发说「太长了不看」

❌ 半夜被叫醒 —— 线上出问题,要半夜起来查日志、复现 bug

❌ 背锅侠 —— 延期了是测试没测好,上线出问题了是测试漏测了 

如果中了一条,这篇文章就是为你写的。


换个思路:如果有个 AI 助手呢?

想象一下:

  • 你告诉它「帮我写 20 条边界值分析的测试用例」,30 秒后给你一份完整的文档

  • 你问它「什么是边界值分析」,它用测试人员能懂的语言解释,还附带实际例子

  • 你让它「分析这个 bug 报告」,它帮你找出根本原因和复现步骤

这不是未来,这是现在就能做到的。 而 CrewAI,就是帮你创建这个 AI 员工的工具。


CrewAI 核心架构

在开始之前,先理解三个核心概念:

TEXT复制

┌─────────────────────────────────────────────────────────┐
│                    CrewAI 三要素                          │
├─────────────────────────────────────────────────────────┤
│                                                         │
│   🤖 Agent(员工)     📋 Task(工单)                   │
│   ┌─────────────┐     ┌─────────────┐                  │
│   │ role 角色    │     │ description │                  │
│   │ goal 目标    │     │ output      │                  │
│   │ backstory   │     │ agent       │                  │
│   └─────────────┘     └─────────────┘                  │
│         ↓                   ↓                           │
│         └───────┬───────────┘                           │
│                 ↓                                       │
│         👥 Crew(团队)                                  │
│         ┌─────────────┐                                 │
│         │ agents[]    │                                 │
│         │ tasks[]     │                                 │
│         │ kickoff()   │ ← 启动执行                      │
│         └─────────────┘                                 │
│                                                         │
└─────────────────────────────────────────────────────────┘

通俗理解: - Agent = 你的员工(定义角色、目标、背景) - Task = 分配给员工的工单(描述任务、期望输出)

  • Crew = 项目组(把员工和工单组织起来,启动执行)

一个 Agent 是最小单位,多个 Agent 协作就是 Crew。


8 分钟,创建你的第一个 Agent

第一步:创建项目文件(2 分钟)

BASH复制

# 进入项目目录
cd ~/projects/crewai-demo

# 激活虚拟环境
source venv/bin/activate

# 创建文件
touch hello_agent.py

第二步:编写代码(3 分钟)

打开 hello_agent.py,复制以下代码:

PYTHON复制

from crewai import Agent, Task, Crew

# 1. 定义 Agent(创建你的员工)
agent = Agent(
    role="助手",
    goal="帮助用户完成任务",
    backstory="你是一个友好的 AI 助手",
    verbose=True
)

# 2. 定义 Task(分配工单)
task = Task(
    description="请用 3 句话介绍人工智能",
    expected_output="AI 简介",
    agent=agent
)

# 3. 创建 Crew(组建团队)
crew = Crew(
    agents=[agent],
    tasks=[task],
    verbose=True
)

# 4. 执行(kickoff 启动)
print("🚀 开始执行...\n")
result = crew.kickoff()

print("\n✅ 执行完成!")
print(f"结果:{result}")

第三步:运行(3 分钟)

BASH复制

python hello_agent.py

预期输出:

TEXT复制

🚀 开始执行...

╭───────────────── 🚀 Crew Execution Started ─────────────────╮
  Crew Execution Started                                      
  Name: crew                                                  
  ID: a1b2c3d4-e5f6-7890-abcd-ef1234567890                    
╰──────────────────────────────────────────────────────────────╯

╭─────────────────── 📋 Task Started ────────────────────╮
  Task Started                                           
  Description: 请用 3 句话介绍人工智能                   
╰─────────────────────────────────────────────────────────╯

╭─────────────────── 🤖 Agent Started ────────────────────╮
  Agent: 助手                                             
╰─────────────────────────────────────────────────────────╯

╭─────────────────  Agent Final Answer ──────────────────╮
  人工智能起源于 1956 年达特茅斯会议。                      
  20 世纪 80 年代专家系统兴起。                           
  2010 年后深度学习突破,AI 进入快速发展期。              
╰─────────────────────────────────────────────────────────╯

 执行完成!
结果:人工智能起源于 1956 年...

恭喜!你的第一个 AI 员工上岗了! 🎉


代码逐行解析(理解核心参数)

1. 导入类

PYTHON复制

from crewai import Agent, Task, Crew

三个核心类:

作用类比
Agent智能体你的员工
Task任务工单
Crew团队项目组

2. 定义 Agent(创建员工)

PYTHON复制

agent = Agent(
    role="助手",           # 角色定位
    goal="帮助用户完成任务", # 工作目标
    backstory="你是一个友好的 AI 助手", # 背景故事
    verbose=True          # 详细日志
)

4 个核心参数:

参数作用是否必填影响
role定义 Agent 身份✅ 必填决定输出风格
goal定义目标任务✅ 必填决定工作方向
backstory让 Agent 更"真实"✅ 必填决定输出深度
verbose输出详细日志❌ 可选决定日志详细度

3. 定义 Task(分配工单)

PYTHON复制

task = Task(
    description="请用 3 句话介绍人工智能", # 任务描述
    expected_output="AI 简介",            # 期望输出
    agent=agent                          # 负责人
)

3 个核心参数:

参数作用是否必填
description任务描述✅ 必填
expected_output期望输出✅ 必填
agent负责 Agent✅ 必填

4. 创建 Crew(组建团队)

PYTHON复制

crew = Crew(
    agents=[agent],   # Agent 列表
    tasks=[task],     # Task 列表
    verbose=True      # 详细日志
)

5. 执行(启动项目)

PYTHON复制

result = crew.kickoff()

kickoff() 方法: - 启动 Crew 执行 - 按顺序执行所有 Task

  • 返回最终结果

实测:修改参数,观察效果变化

实验 1:修改 role(角色定位)

版本 1:友好助手

PYTHON复制

agent = Agent(
    role="助手",
    backstory="你是一个友好的 AI 助手"
)

输出风格: 平实、易懂

TEXT复制

人工智能是一种让计算机模拟人类智能的技术。
它可以帮助人们完成各种任务,如识别图像、理解语言等。
人工智能正在改变我们的生活方式。

版本 2:资深专家

PYTHON复制

agent = Agent(
    role="AI 专家(20 年经验)",
    backstory="你是拥有 20 年经验的 AI 专家,曾在谷歌、微软工作"
)

输出风格: 专业、包含技术术语

TEXT复制

人工智能(Artificial Intelligence)的概念最早由 John McCarthy 
 1956 年在达特茅斯会议上提出。经过符号主义、连接主义等阶段,
特别是 2012 年深度学习突破后,AI 进入了快速发展期...

💡 结论:role 定义直接影响输出风格和专业度。


实验 2:修改 backstory(背景故事)

版本 1:简短

PYTHON复制

backstory="你帮助写文档"

输出: 约 100 字,简单直接 版本 2:详细

PYTHON复制

backstory="""你是拥有 15 年经验的测试经理,擅长:
1. 根据需求评估测试范围
2. 制定合理的测试计划
3. 识别高风险区域

你的工作风格:
- 结果导向
- 风险驱动
- 数据驱动"""

输出: 约 500 字,详细专业 💡 结论:backstory 越长越详细,输出越专业、越有深度。


实验 3:修改 verbose(日志详细度)

verbose=False:

TEXT复制

✅ 执行完成!
结果:人工智能起源于...

verbose=True:

TEXT复制

🚀 Crew Execution Started
📋 Task Started
🤖 Agent Started
✅ Agent Final Answer
✅ 执行完成!

💡 建议:开发调试时用 True,生产环境用 False。


实战:创建测试助手 Agent

需求场景

创建一个能回答测试问题的 AI 助手,随时解答测试概念、提供测试建议。

代码实现

PYTHON复制

from crewai import Agent, Task, Crew

# 创建测试助手 Agent
test_assistant = Agent(
    role="测试助手 (Test Assistant)",
    goal="回答测试相关问题,提供测试建议",
    backstory="""你是拥有 10 年经验的测试专家,擅长:
    1. 测试用例设计(等价类、边界值、场景法等)
    2. 测试执行和缺陷分析
    3. 测试自动化和持续集成
    
    你乐于助人,用简单易懂的语言解释测试概念。
    喜欢用实际例子说明抽象概念。""",
    verbose=True
)

# 创建任务
question = Task(
    description="请解释什么是边界值分析,并给出一个实际例子",
    expected_output="边界值分析的解释和示例",
    agent=test_assistant
)

# 创建 Crew
crew = Crew(
    agents=[test_assistant],
    tasks=[question],
    verbose=True
)

# 执行
result = crew.kickoff()
print(result)

输出示例

TEXT复制

╭───────────────── ✅ Agent Final Answer ──────────────────╮
│ 边界值分析是一种测试设计技术,用于测试输入域的边界条件。    │
│                                                          │
│ 原理:                                                    │
│ 错误往往发生在边界附近,而不是中间值。                    │
│                                                          │
│ 实际例子:                                                │
│ 测试一个输入框,要求输入 1-100 的数字。                    │
│                                                          │
│ 应该测试的边界值:                                        │
│ - 0(小于最小值)                                        │
│ - 1(最小值)                                            │
│ - 2(最小值 +1)                                         │
│ - 99(最大值 -1)                                        │
│ - 100(最大值)                                          │
│ - 101(大于最大值)                                      │
│                                                          │
│ 这样可以发现边界处理错误。                                │
╰─────────────────────────────────────────────────────────╯

看到没?这就是你的 AI 测试助手! 以后遇到测试概念,不用再去 Google 搜了,直接问它就行。


你的收益计算器

假设你是一个测试人员: 学习前: - 查一个测试概念:15 分钟(搜索 + 筛选 + 理解) - 写一份测试用例文档:2 小时

  • 每月重复性工作:约 35 小时

学习后: - 查一个测试概念:30 秒(问 AI 助手) - 写一份测试用例文档:20 分钟(AI 生成初稿 + 人工审核)

  • 每月重复性工作:约 5 小时

每月节省:30 小时 每年节省:360 小时 = 45 个工作日 这还没算: - 减少的加班时间 - 提升的工作质量

  • 避免的线上故障

更重要的是: 你可以把节省下来的时间,用来: - 学习新技能(AI 评测、大模型测试) - 做更有价值的工作(测试架构、质量体系建设)

  • 早点下班,陪陪家人

而不是把生命浪费在重复的体力劳动上。


常见问题 FAQ

Q1: 输出是英文怎么办?

原因: 提示词是英文 解决: 用中文写 description

PYTHON复制

# ❌ 错误
description="Explain what is boundary value analysis"

# ✅ 正确
description="请解释什么是边界值分析"

Q2: 输出太短怎么办?

解决: 明确要求字数

PYTHON复制

task = Task(
    description="请详细解释边界值分析(不少于 300 字)",
    expected_output="详细的边界值分析解释"
)

Q3: 输出格式混乱怎么办?

解决: 指定输出格式

PYTHON复制

task = Task(
    description="""请解释边界值分析

要求:
1. 先给出定义
2. 说明原理
3. 给出实际例子
4. 使用 Markdown 格式""",
    expected_output="结构化的边界值分析说明"
)

Q4: 执行失败怎么办?

检查步骤:

BASH复制

# 1. 检查 API Key
echo $DASHSCOPE_API_KEY

# 2. 检查网络连接
ping dashscope.aliyuncs.com

# 3. 查看详细错误
# verbose=True 时会显示详细错误信息

Q5: 可以创建多个 Agent 吗?

可以! 这就是 CrewAI 的核心能力。

# 创建多个 Agent
researcher = Agent(role="研究员", ...)
writer = Agent(role="作家", ...)
reviewer = Agent(role="评审员", ...)

# 创建多个 Task
task1 = Task(agent=researcher, ...)
task2 = Task(agent=writer, ...)
task3 = Task(agent=reviewer, ...)

# 组建 Crew
crew = Crew(
    agents=[researcher, writer, reviewer],
    tasks=[task1, task2, task3]
)

多个 Agent 会按顺序协作完成任务。

你最想用 AI Agent 帮你做什么? 

A. 自动生成测试用例

B. 自动分析 Bug 报告

C. 自动写测试文档

D. 自动执行回归测试 

评论区告诉我你的选择! 


下篇预告

第 4 篇我们会深入理解 Agent 核心参数:

  • 如何定义专业的 Agent 角色?

  • backstory 怎么写才能让输出更专业?

  • 如何控制输出的风格和格式?

  • 实战:创建 5 个专业测试 Agent

敬请期待!


作者说:第一个 Agent 是起点,后续会创建 5 个专业测试 Agent,形成完整的测试团队。 

欢迎关注我「测试员周周」,获取更多 AI+ 测试实战内容!


📚 系列文章索引

序号文章状态
01CrewAI 是什么?✅ 已完成
0210 分钟搭建环境✅ 已完成
03第一个 Agent✅ 本篇
04理解核心参数📝 下一篇
05设计专业 Agent 角色📝 规划中
.........

🎁 获取完整代码

关注、点赞、评论获取:

  • ✅ hello_agent.py 完整源码

  • ✅ test_assistant.py 测试助手源码

  • ✅ CrewAI 参数速查表(PDF)

  • ✅ 常见问题解决方案文档

作者:测试员周周,14 年测试经验,专注 AI+ 测试实战