当前位置: 首页 > news >正文

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

这是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+ 测试实战

http://www.jsqmd.com/news/675649/

相关文章:

  • SolidWorks模型转URDF避坑指南:从零搭建ROS巡线小车的完整流程(含常见报错解决)
  • 写一篇文章 关于苹果官宣库克卸任CEO 属于他的时代结束了
  • MeterSphere性能测试模块部署避坑指南:ZooKeeper、Kafka、Node-Controller怎么装?
  • 如何解决RAC环境下的脑裂问题_Voting Disk表决磁盘与仲裁机制
  • 从USB到GPIB:如何用NI GPIB-USB-HS转换器为你的笔记本电脑搭建便携式测试工站
  • 2026年|AI率太高怎么降?必备这10款降AI工具,高效降低AI率(含免费降AI工具) - 降AI实验室
  • 2026年质量好的rfid标签厂家推荐哪家好 - 品牌宣传支持者
  • 别再只调单一模型了!手把手教你用PyTorch实现多模态融合(从早期融合到联合融合实战)
  • DownKyi终极指南:5分钟掌握B站视频高效下载与批量处理技巧
  • 别再乱用ram_style了!Vivado综合BRAM与LUTRAM的实战避坑指南
  • KVM虚拟化实战宝典 | 从面试核心到运维命令全解析
  • 百度网盘限速破解:3分钟学会高速下载的实用技巧
  • 2026年比较好的橡胶除臭剂/涂料除臭剂/pom除臭剂/除臭剂精选厂家推荐 - 行业平台推荐
  • 5分钟掌握大麦抢票自动化:Python脚本终极使用指南
  • 【AI面试临阵磨枪】解释 AI Agent 与普通 Chatbot、自动化脚本的本质区别
  • 原神帧率解锁完全指南:如何轻松突破60FPS限制
  • 深入探索:如何解锁NVIDIA驱动的隐藏力量?
  • 2026停车场照明品牌:探索高效节能与智能控制新方向 - 品牌排行榜
  • Vivado隐藏技巧:用JTAG to AXI Master IP给你的ZYNQ PL侧做个“软件遥控器”
  • 2026年知名的定做保温饭盒/上班族保温饭盒/双层保温饭盒源头厂家推荐 - 品牌宣传支持者
  • Phi-3-vision-128k-instruct C盘清理优化:释放空间与系统提速实战
  • 无线感知研究入门:手把手教你用CSI Tool搭建双机Monitor模式测试环境
  • 2026年热门的铝木系系统门窗/定制系统门窗/铝合金系统门窗/高端别墅系统门窗稳定供应商推荐 - 行业平台推荐
  • 别再死记硬背了!用面包板5分钟搞定NE555方波发生器,附历年真题电路图对比
  • Windows Cleaner终极指南:快速解决C盘爆红问题的完整免费方案
  • 2026年3月吊车出租企业口碑推荐,起重机出租/大型吊车出租/吊车出租/起重机租赁/汽车吊租赁,吊车出租公司推荐 - 品牌推荐师
  • 别再傻傻穷举了!用Python的`crc32`库和`itertools`高效爆破短字符串CRC(性能优化指南)
  • 如何在Windows 10/11上轻松安装macOS风格鼠标指针?
  • 从无效投稿到精准命中:百考通AI如何将期刊论文的“隐形门槛”转化为清晰路标
  • Zotero Citation插件:三步实现Word文献引用自动化,提升学术写作效率90%