【连载】零基础跟我学做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大模型应用开发学习视频及资料,在这里

相关推荐
Duang17 小时前
我把 Claude、Codex、Copilot、Gemini 拼成了一个工作流,接力写代码
人工智能·程序员·架构
龙侠九重天17 小时前
Embedding 模型深度使用——语义搜索与聚类
人工智能·深度学习·数据挖掘·大模型·llm·embedding·聚类
创世宇图18 小时前
【AI入门知识点】Agent 是什么?为什么说它是 AI 的下一阶段?
ai·agent
SimonKing18 小时前
别再死磕 Elasticsearch 了,这个轻量级搜索引擎更香
java·后端·程序员
Luhui Dev18 小时前
业务级 Agent 的 Runtime 设计:从 LangChain 看可靠性工程
人工智能·agent·luhuidev
在线打码19 小时前
从零打造“绘礼AI”:如何用AI重构婚礼策划全流程
人工智能·langchain·agent·婚礼策划
x-cmd19 小时前
[260520] x-cmd v0.9.5:x install 支持 skill 安装,新增 git ci 命令让 AI 帮你写 commit
人工智能·git·ci/cd·agent·install·x-cmd
名不经传的养虾人19 小时前
从0到1:企业级AI项目迭代日记 Vol.29|自然语言变工作流:Agent 自动拼装子图的实现路径
人工智能·agent·ai编程·工作流·ai创业·企业ai
Artech19 小时前
[对比学习LangChain和MAF-02]基本编程模式的差异(下篇)
ai·langchain·agent·maf
Terrence Shen19 小时前
Agent面试八股文(系列之三)
人工智能·大模型·agent·rag·智能体·大模型技术