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

相关推荐
爱听歌的周童鞋20 小时前
斯坦福大学 | CS336 | 从零开始构建语言模型 | Spring 2025 | 笔记 | Lecture 17: Alignment - RL 2
llm·policy gradient·grpo·cs336·baselines·advantage funcs
潘小安1 天前
《5-Day AI Agents Intensive》- 认识 Agents
agent·ai编程·trae
IT技术分享社区1 天前
MySQL统计查询优化:内存临时表的正确打开方式
数据库·mysql·程序员
╭⌒若隐_RowYet——大数据1 天前
AI Agent开发实战QuickStart
ai·langchain·agent·langgraph·langsmith·langfuse
牛奶咖啡.8541 天前
基于Llama-Factory/Qwen2.5-1.5b自定义数据集LoRA微调实战【PPO/RLHF/训练/评估】
语言模型·llm·llama·rl·ppo
语落心生1 天前
阿里开源AgentScope多智能体框架解析系列(六)第6章:工具系统(Tool & Toolkit)
agent
人工干智能1 天前
LLM大模型的付费管理流程(以OpenAI 为例)
llm
智泊AI1 天前
大语言模型之AI Agent:Multi-Agent架构
llm
Mintopia1 天前
量子计算会彻底改变 AI 的运算方式吗?一场关于"量子幽灵"与"硅基大脑"的深夜对话 🎭💻
人工智能·llm·aigc
m0_726965981 天前
RAG源代码笔记JAVA-高级RAG
笔记·ai·agent·rag