【连载】零基础跟我学做AI Agent(第2课:用CrewAI配置一个软件虚拟团队)

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在这里

今天我们讲第一个AI Agent例子:用CrewAI配置一个软件虚拟团队。实际上,这个需要有69行代码,那为什么不叫开发而叫配置呢?因为代码中几乎没有程序化的内容,基本上就是配置信息。

一、目标

本例中Agent实现的目标是配置一个虚拟开发团队,这个团队中有资深程序员,还有测试工程师,两者协作完成一个具体的开发任务。当然这需要大模型的支持和经过多轮迭代。两种角色经过协调和博弈,让结果越来越接近于人类设定的目标。最后得到的成果是整套源代码。

二、原理

CrewAI是一种AI Agent框架,适合做多种角色Agent协同的应用,因为Crew的意思是"船员"或"机组",寓意着几个分工不同的虚拟人共同配合完成一个总体的任务。在配置中,需要有以下几个元素:

1、智能体

我们定义了programmer和qa_engineer两个智能体,这些智能体有目标要求和表示角色的技能声明,当然这是通过大模型提示词实现的。

2、任务

与智能体相匹配的任务有development_task和testing_task两种,这些任务要设定由哪个智能体来执行,而且任务之间也有工作成果的交接。

3、团队

智能体、任务以及执行方法共同组成一个团队,通过kickoff(开球)方法开始运转。

三、源码

69行源码全部给出(公众号不便查看源码的话,可到的chapter-x-0base目录查看)。

ini 复制代码
import os
from crewai import Agent, Task, Crew, Process
os.environ['OPENAI_API_BASE'] = 'http://localhost:11434/v1'
os.environ["OPENAI_API_KEY"] = "EMPTY"
os.environ["OPENAI_MODEL_NAME"] = "openai/qwen3"
class DevelopmentCrew:
def __init__(self, development_description, testing_description):
# 定义程序员智能体
self.programmer = Agent(
role="资深程序员",
goal="编写高质量、可维护的代码,实现功能需求",
backstory="你是一位经验丰富的程序员,精通多种编程语言和设计模式。" +
"你注重代码质量,善于编写清晰、高效的代码,并且有很强的逻辑思维能力。",
verbose=True,
max_execution_time=300
)
# 定义测试工程师智能体
self.qa_engineer = Agent(
role="测试工程师",
goal="确保代码质量,发现并报告缺陷,验证功能完整性",
backstory="你是一位严谨的测试工程师,对细节极其敏感。" +
"你擅长设计测试用例,能够发现各种边界条件和潜在问题," +
"确保交付的代码达到高质量标准。",
verbose=True,
max_execution_time=300
)
# 定义开发任务
self.development_task = Task(
description=development_description,
agent=self.programmer,
expected_output="完整的Python代码实现,包含所有要求的功能和必要的注释"
)
# 定义测试任务
self.testing_task = Task(
description=testing_description,
agent=self.qa_engineer,
expected_output="详细的测试报告,包含测试用例、发现的问题和改进建议",
context=[self.development_task]
)
# 创建并运行开发团队
def invoke(self):
dev_crew = Crew(
agents=[self.programmer, self.qa_engineer],
tasks=[self.development_task, self.testing_task],
process=Process.sequential,
verbose=True
)
print("开始软件开发流程...")
print("第一阶段:程序员进行功能开发")
print("第二阶段:测试工程师进行质量验证")
result = dev_crew.kickoff()
print("\n开发流程完成,最终结果:")
print(result)
return result.raw
if __name__ == "__main__":
# 从主函数传入任务描述
dev_description = """开发一个用户管理系统,包含以下功能:
1. 用户注册(用户名、邮箱、密码)
2. 用户登录验证
3. 用户信息查询
4. 密码重置功能
请使用Python编写清晰的代码,包含必要的注释和错误处理。"""
test_description = """对开发的用户管理系统进行全面测试:
1. 设计测试用例覆盖正常流程和异常情况
2. 进行边界值测试和错误处理测试
3. 验证所有功能是否符合需求
4. 提供详细的测试报告和改进建议"""
dev_crew = DevelopmentCrew(dev_description, test_description)
dev_crew.invoke()

四、运行

1、环境安装

用Miniconda建立一个Python虚拟环境,本案例只依赖于crewai库。大模型是在上一节装好的,程序调到API时,Ollama会自动装载qwen3模型的。

ini 复制代码
# 创建虚拟环境
conda create -n part02 python=3.13 -y
# 激活虚拟环境
conda activate part02
# 安装依赖库
pip install crewai==0.201.1 -i https://pypi.mirrors.ustc.edu.cn/simple

2、运行

复制代码
python agent_crewai.py

五、运行结果

开始运行时,团队开始思考,制定计划,然后进入多轮迭代。

经过多轮迭代,最后生成目标源码和测试用例,结果如下:

至于最后的结果是否符合预期,主要是和模型的能力有关,我们用Ollama跑量化模型,效果应一般,如果要得到更好的效果,得用GPU部署更大的、精度更高的模型。

未完待续!

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

本文较长,建议点赞收藏。更多AI大模型应用开发学习视频及资料,在这里

相关推荐
i晟5 小时前
Claude对话机制深度解析:为什么 Claude Code 和你越聊越懂你?每句对话都要读一整个上下文吗?
agent·claude
Darling噜啦啦5 小时前
上下文工程实战:从 Prompt 到 Harness 的三次 AI 工程化浪潮
llm·ai编程
火锅小王子6 小时前
从 0 到 1:我用 AI Coding 撸了一套带「智能客服」的全栈电商系统
agent·vibecoding
Awu12276 小时前
💡一个 \r引发的重试循环:AI Agent CLI 在 Windows 上踩的 CRLF 匹配病
agent
小白鼠幻想家6 小时前
你的 Agent 正在被 Prompt 注入:MCP 协议 RCE 漏洞深度拆解
agent
CodeSheep7 小时前
DeepSeek正式官宣摇人,夯!
前端·后端·程序员
doiito7 小时前
【Agent Harness】Gliding Horse 设计细节 -- 不跟风开发自己的AI Agent
架构·rust·agent
小白鼠幻想家7 小时前
AI Coding Agent 在老代码面前集体翻车
agent
武子康8 小时前
调查研究-203 SpaceX IPO 总览:先别急着讲故事,先把发行事实和信息边界立住
人工智能·openai·agent
葫芦和十三17 小时前
图解 MongoDB 19|Oplog:复制的真正载体,不是文档是操作
后端·mongodb·agent