CrewAI 全面详解:构建 AI 协作团队的领先框架
CrewAI是一个轻量级Python多智能体协作框架,专注于构建"AI团队"协作完成复杂任务。其核心特点包括独立架构(不依赖LangChain等框架)、角色驱动的代理设计(每个代理有明确角色和目标)以及双重执行模式(自主协作的Crews和结构化流程的Flows)。框架包含三大组件:Agent(专家成员)、Crew(团队管理)和Process/Flow(任务策略),支持自动任务分
CrewAI全面详解:构建AI协作团队的领先框架

一、核心概念与定位
CrewAI是一个轻量级、高性能的Python多智能体协作框架,专注于创建"AI团队",使多个具有特定角色的AI代理像人类团队一样协作完成复杂任务。

1. 三大核心组件
Agent(智能体):团队中的"专家成员",拥有特定角色(如研究员、分析师)和工具集,能自主决策和协作
关键属性(必选 / 可选)
| 属性 | 类型 | 作用 | 示例 |
|---|---|---|---|
| role | 字符串 | 定义 Agent 的角色(需明确,避免宽泛) | “SEO 内容优化专家”(而非 “助手”) |
| goal | 字符串 | 明确 Agent 的任务目标(可含动态参数,如 {query}) | “优化文章关键词密度,提升 Google 搜索排名前 10” |
| backstory | 字符串 | 提供角色背景(增强 LLM 角色代入感) | “你有 8 年 SEO 经验,曾帮助电商网站流量提升 300%,熟悉 Google 算法” |
| tools | 列表 | Agent 可调用的工具(按需分配,避免过载) | [ddgs_text_search, pdf_tool](搜索工具 + PDF 解析工具) |
| llm | LLM 实例 | 驱动 Agent 的语言模型(需提前配置 API 密钥、模型名称) | deepseek_llm()(自定义的 DeepSeek 模型实例) |
| memory | 布尔值 | 是否启用记忆(记住对话上下文,适合多轮协作) | True(客服场景需记忆客户历史问题) |
| verbose | 布尔值 | 是否输出详细日志(调试用) | True(开发阶段启用,生产阶段可关闭) |
| allow_delegation | 布尔值 | 是否允许 Agent 将任务委派给其他 Agent(默认 True) | False(技术专家角色不允许委派,需亲自处理) |
Crew(团队):管理多个Agent的容器,负责任务分配、进度监控和结果整合,如同团队"项目经理"
Process/Flow(流程):定义任务执行策略,支持顺序、并行和层级执行,处理任务依赖关系
2. 工作机制
- 任务分解:自动将复杂任务拆分为子任务,按角色能力分配给对应Agent
- 智能协作:Agent间通过自然语言通信,共享上下文和结果,避免重复工作
- 自主决策:各Agent根据角色和目标独立思考,自主选择工具和协作方式
- 动态调整:系统实时监控任务进展,自动重新分配资源处理异常情况
三、核心功能详解
1. Crews - 自主协作模式
优势:适合需要创造力、探索性的任务,如研究、内容创作
- 角色定义:为每个Agent设置专业角色(如"SEO专家"会优先考虑关键词优化)
- 任务委派:Agent可自主将子任务分配给其他Agent,形成层级协作
- 上下文共享:通过内置记忆系统保存对话和结果,支持长期协作
2. Flows - 结构化流程模式
优势:提供精确控制和审计能力,适合需要确定性的任务,如API集成、数据处理
- 事件驱动:支持条件判断、循环和状态管理,实现复杂工作流
- 步骤级监控:提供详细执行日志和状态跟踪,便于调试和优化
- 子流程嵌入:可在Flow中无缝集成Crews,平衡控制力和自主性
3. 其他关键功能
工具集成:支持与700+应用无缝对接,包括Gmail、Slack、Notion、Salesforce等,无需额外开发
记忆系统:提供上下文记忆,支持长对话和复杂任务的持续执行
安全机制:内置内容过滤和权限控制,防止敏感信息泄露和有害内容生成
性能监控:实时追踪代理表现、响应时间和资源消耗,提供详细分析报告
四、应用场景
1. 内容创作与营销
- 多角色协作:研究员收集资料→分析师提炼观点→文案生成内容→编辑审核优化
- 效率提升:某营销团队使用CrewAI使内容产出提升4倍,同时保持高质量
2. 销售与客户服务
- 智能客服:问题分类Agent(准确率92%)+知识检索Agent+多语言Agent(支持8种语言)
- 实际效果:客户响应时间缩短70%,人工客服成本降低60%
3. 软件开发
- 编码助手:代码生成→语法检查→测试用例生成→文档自动生成
- 实际案例:PwC使用CrewAI使代码生成准确率从10%提升到70%,文档编写时间减少50%
4. 数据分析与决策支持
- 股票分析:市场数据收集→财务指标分析→行业趋势预测→投资建议生成
- 金融应用:自动风险评估、贷款审批和投资组合优化
5. 企业自动化
- 流程整合:跨系统数据同步、报表自动生成、会议智能助手
- 企业案例:AWS将CrewAI集成到Bedrock服务,为企业提供安全、可扩展的AI自动化解决方案
五、与其他框架对比
| 特性 | CrewAI | LangChain | AutoGen |
|---|---|---|---|
| 核心定位 | 角色驱动的团队协作 | 链式LLM调用 | 对话驱动的协作 |
| 架构特点 | 独立Python框架 | 模块化工具集 | 基于对话的协议 |
| 适用场景 | 团队分工、复杂流程 | 单一代理、简单流程 | 多轮对话、创意协作 |
| 优势 | 角色清晰、任务管理强大 | 灵活性高、生态丰富 | 自然交互、沟通流畅 |
| 劣势 | 学习曲线略陡 | 性能相对较低 | 状态管理复杂 |
| 最佳应用 | 内容生产、企业流程自动化 | API集成、简单自动化 | 头脑风暴、创意构思 |
数据来源:
六、使用方法与部署
1. 入门步骤
安装:pip install crewai
简单示例:
from crewai import Crew, Agent, Task, Process
# 定义角色化Agent
researcher = Agent(
role="研究员",
goal="收集指定主题的最新研究资料",
tools=["搜索工具"]
)
writer = Agent(
role="作家",
goal="基于研究资料撰写分析报告",
tools=["写作工具"]
)
# 创建团队并定义任务流程
crew = Crew(
agents=[researcher, writer],
tasks=[
Task("research_task", "收集AI多智能体技术的最新发展"),
Task("write_report", "撰写AI多智能体技术研究报告")
],
process=Process.sequential # 顺序执行任务
)
# 启动团队工作
result = crew.kickoff()
完整示例:
2. 部署选项
开源版:完全免费,适合个人项目和实验,提供基础功能和每月50万次执行额度
企业版(AMP):
- 提供集中管理、监控和安全保障
- 支持自动扩展、高可用性和自定义部署
- 适合大规模企业应用,可本地部署或云部署
七、实际案例与成效
1. PwC的企业级应用
- 实施内容:在咨询项目中部署AI代理,负责需求分析、方案设计和文档生成
- 关键成果:
- 代码生成准确率从10%提升至70%
- 复杂文档编写时间减少50%
- 客户满意度提升30%,加速AI解决方案在全公司的采用
2. 电商平台智能客服
- 系统架构:问题分类Agent+知识库检索Agent+多语言响应Agent
- 实际效果:
- 日均处理10万+咨询,响应时间<3秒
- 人工客服工作量减少60%,服务成本降低40%
- 客户投诉率下降25%
八、总结与展望
CrewAI代表了AI应用从"单打独斗"到"团队协作"的重要转变,通过角色化分工和智能协作,使AI系统能够解决超越单一模型能力的复杂任务。
核心价值:
- 将复杂问题拆解为可管理的子任务,由专业Agent分工协作
- 显著提升工作效率(3-10倍),同时保持高质量输出
- 降低企业AI应用门槛,使非技术团队也能构建智能工作流
未来方向:
- 增强多模态支持,整合文本、图像、语音等多种交互形式
- 进一步优化资源管理和成本控制,使大规模部署更经济高效
- 深化与云计算、低代码平台的集成,提供一站式AI协作解决方案
CrewAI正在重新定义企业如何利用AI,不仅是提高效率的工具,更是创新业务模式的催化剂,为组织带来可持续的竞争优势。
一人成军!用Python招了3个AI Agent,组建了一支不睡觉的开发团队
人类社会为什么能做大工程?靠的是分工协作。
AI世界也是同理。
2025年的顶级玩法,不是压榨一个GPT-4,而是组建一个“复仇者联盟”。
今天,我带大家用Python和CrewAI框架,在你的电脑里开一家“虚拟软件开发公司”。我们将雇佣三个AI员工:
- 产品经理(Kevin):负责把你的这句废话需求变成具体文档。
- 高级Python开发(Dave):负责根据文档写出完美代码。
- 测试工程师(Rambo):负责给代码找茬,不通过就不准上线。
而你,只需要做一件事——当老板,下命令。
(PM → Dev → QA 协作流程)
一、为什么单体Agent已死,多智能体(Multi-Agent)当立?
不管是GPT-4还是DeepSeek,当你给它一个超长任务(比如“写一个贪吃蛇游戏”)时,它往往顾头不顾腚:写了代码忘了写注释,写了逻辑忘了处理边界条件。
Multi-Agent(多智能体)的核心逻辑是:让专业的AI做专业的事。
- 让擅长逻辑的写代码;
- 让擅长挑刺的做测试;
- 让它们互相吵架、互相Review,直到产出完美结果。
这就是硅谷现在最流行的“Agentic Workflow”。
二、招兵买马:构建你的AI团队
我们将使用CrewAI框架,它相比LangGraph,更强调“角色(Role)”和“背景故事(Backstory)”,非常适合这种拟人化的团队搭建。
1. 环境准备
pip install crewai crewai-tools langchain_openai
2. 定义你的“员工” (Agents)
新建一个main.py文件,我们先来定义这三位打工人。注意看背景故事,这赋予了它们灵魂。
import os
from crewai import Agent, Task, Crew, Process
from langchain_openai import ChatOpenAI
# 配置LLM(这里可以用OpenAI,也可以用本地的大模型)
# 记得换成你自己的API Key
llm = ChatOpenAI(model="gpt-4-turbo", temperature=0.7)
# 1. 定义产品经理 Agent
product_manager = Agent(
role='资深产品经理',
goal='分析用户需求,产出清晰、详细的软件需求文档(PRD)',
backstory="""你是一名拥有10年经验的互联网产品经理。
你擅长挖掘用户痛点,并且能把模糊的一句话需求,拆解成程序员能看懂的技术文档。
你对细节要求极高,不允许有逻辑漏洞。""",
verbose=True, # 让他干活时多唠叨几句,我们在终端能看到
allow_delegation=False,
llm=llm
)
# 2. 定义Python开发 Agent
developer = Agent(
role='首席Python架构师',
goal='根据需求文档,编写高质量、可运行的Python代码',
backstory="""你是一名顶级黑客和Python专家。
你只写优雅、高效、符合PEP8规范的代码。
你能够解决复杂算法问题,并且会给关键逻辑加上详细注释。""",
verbose=True,
allow_delegation=False,
llm=llm
)
# 3. 定义测试工程师 Agent
qa_engineer = Agent(
role='质量保证(QA)专家',
goal='审查代码,寻找Bug,确保代码能完美运行',
backstory="""你是一名以“找茬”为乐的测试专家。
你会严格审查开发人员的代码,检查是否存在安全隐患、逻辑死循环或语法错误。
如果发现问题,你会毫不留情地打回重写。""",
verbose=True,
allow_delegation=False,
llm=llm
)
(版权图片:AI Agent协作示意图)
三、派发任务 (Tasks)
有了人,还得有活儿。我们需要定义任务,并指定谁来做。
# 任务1:需求分析
task_analysis = Task(
description="""
用户想要一个'基于命令行的贪吃蛇游戏'。
请分析该需求,定义游戏规则、控制方式(WASD)、界面布局以及计分规则。
产出一份简短但核心逻辑清晰的需求列表。
""",
agent=product_manager,
expected_output="一份包含游戏规则和功能点的需求列表文本。"
)
# 任务2:编写代码
task_coding = Task(
description="""
使用Python的curses库或标准库实现上述贪吃蛇游戏。
注意:代码必须是一个完整的、可直接运行的.py文件内容。
处理好蛇撞墙、吃到食物变长等逻辑。
""",
agent=developer,
expected_output="完整的Python代码字符串。"
)
# 任务3:代码审查
task_review = Task(
description="""
检查开发人员编写的代码。
1. 检查是否有语法错误。
2. 检查逻辑是否符合PM的需求。
3. 如果代码完美,直接输出代码;如果有问题,列出修改建议。
""",
agent=qa_engineer,
expected_output="经过审查的最终Python代码,或Bug修改建议。"
)
四、组建团队并开工 (Crew)
这是最燃的一步。我们将这些Agent串联起来,组成一个Crew(团队)。
# 组建团队
dev_team = Crew(
agents=[product_manager, developer, qa_engineer],
tasks=[task_analysis, task_coding, task_review],
process=Process.sequential, # 顺序执行:PM -> Dev -> QA
verbose=True
)
print("🔥 虚拟软件开发团队正在集结...")
print("🎯 老板发布任务:做一个贪吃蛇游戏")
# 开工!
result = dev_team.kickoff()
print("\n\n########################")
print("✅ 最终交付结果:")
print(result)
五、见证“无人值守”的魔法
当你运行这段代码,你的终端将会变成一个热闹的聊天室。你会看到令人起鸡皮疙瘩的一幕:
- 产品经理开始思考:“好的,用户要贪吃蛇。我需要定义:地图大小、蛇的初始速度、积分规则…”
- 产品经理把文档甩给开发:“@首席Python架构师,这是需求,按这个写。”
- 开发接单:“收到。开始构建蛇类,处理键盘中断…”
- 开发写完代码,交给测试。
- 质量保证介入:“等等,这里有个逻辑漏洞,蛇撞到自己身体没有判断GameOver。建议修改…”
(CrewAI拥有强大的反思机制,如果是高级配置,他们真的会退回去重写)
几分钟后,你什么都没干,一份几百行的、逻辑严密的贪吃蛇代码就出现在你的屏幕上。
你直接复制粘贴,运行,它是真的能玩的!
import os
from crewai import Agent, Task, Crew, Process,LLM
from langchain_openai import ChatOpenAI
# 配置LLM(这里可以用OpenAI,也可以用本地的大模型)
# 记得换成你自己的API Key
# 请务必在导入 openai 或 langchain 之前设置
# 设置API Key
os.environ["OPENAI_API_KEY"] = "sk-XXXXX"
# 使用CrewAI的LLM类配置DeepSeek
llm = LLM(
model="deepseek-chat", # 或者 "deepseek-coder"
temperature=0.7,
base_url="https://api.deepseek.com/v1",
api_key=os.environ["OPENAI_API_KEY"]
)
# 使用CrewAI的LLM类配置DeepSeek
llm = LLM(
model="deepseek-chat", # 或者 "deepseek-coder"
temperature=0.7,
base_url="https://api.deepseek.com/v1",
api_key=os.environ["OPENAI_API_KEY"]
)
# 1. 定义产品经理 Agent
product_manager = Agent(
role='资深产品经理',
goal='分析用户需求,产出清晰、详细的软件需求文档(PRD)',
backstory="""你是一名拥有10年经验的互联网产品经理。
你擅长挖掘用户痛点,并且能把模糊的一句话需求,拆解成程序员能看懂的技术文档。
你对细节要求极高,不允许有逻辑漏洞。""",
verbose=True, # 让他干活时多唠叨几句,我们在终端能看到
allow_delegation=False,
llm=llm
)
# 2. 定义Python开发 Agent
developer = Agent(
role='首席Python架构师',
goal='根据需求文档,编写高质量、可运行的Python代码',
backstory="""你是一名顶级黑客和Python专家。
你只写优雅、高效、符合PEP8规范的代码。
你能够解决复杂算法问题,并且会给关键逻辑加上详细注释。""",
verbose=True,
allow_delegation=False,
llm=llm
)
# 3. 定义测试工程师 Agent
qa_engineer = Agent(
role='质量保证(QA)专家',
goal='审查代码,寻找Bug,确保代码能完美运行',
backstory="""你是一名以“找茬”为乐的测试专家。
你会严格审查开发人员的代码,检查是否存在安全隐患、逻辑死循环或语法错误。
如果发现问题,你会毫不留情地打回重写。""",
verbose=True,
allow_delegation=False,
llm=llm
)
# 任务1:需求分析
task_analysis = Task(
description="""
用户想要一个'基于命令行的贪吃蛇游戏'。
请分析该需求,定义游戏规则、控制方式(WASD)、界面布局以及计分规则。
产出一份简短但核心逻辑清晰的需求列表。
""",
agent=product_manager,
expected_output="一份包含游戏规则和功能点的需求列表文本。"
)
# 任务2:编写代码
task_coding = Task(
description="""
使用Python的curses库或标准库实现上述贪吃蛇游戏。
注意:代码必须是一个完整的、可直接运行的.py文件内容。
处理好蛇撞墙、吃到食物变长等逻辑。
""",
agent=developer,
expected_output="完整的Python代码字符串。"
)
# 任务3:代码审查
task_review = Task(
description="""
检查开发人员编写的代码。
1. 检查是否有语法错误。
2. 检查逻辑是否符合PM的需求。
3. 如果代码完美,直接输出代码;如果有问题,列出修改建议。
""",
agent=qa_engineer,
expected_output="经过审查的最终Python代码,或Bug修改建议。"
)
# 组建团队
dev_team = Crew(
agents=[product_manager, developer, qa_engineer],
tasks=[task_analysis, task_coding, task_review],
process=Process.sequential, # 顺序执行:PM -> Dev -> QA
verbose=True
)
print(" 虚拟软件开发团队正在集结...")
print(" 老板发布任务:做一个贪吃蛇游戏")
# 开工!
result = dev_team.kickoff()
print("\n\n########################")
print("✅ 最终交付结果:")
print(result)

将代码改造成一个交互式的Web应用。这里有几个方案,最常用的是使用Streamlit。
方案1:使用Streamlit(推荐)
创建一个新的Python文件 app.py:
import os
import streamlit as st
from crewai import Agent, Task, Crew, Process, LLM
import tempfile
# 页面配置
st.set_page_config(
page_title="AI软件开发团队 - 贪吃蛇游戏生成器",
page_icon="🐍",
layout="wide"
)
# 自定义CSS样式
st.markdown("""
<style>
.main-header {
font-size: 2.5rem;
color: #1E88E5;
text-align: center;
margin-bottom: 1rem;
}
.agent-card {
background-color: #f5f5f5;
padding: 1rem;
border-radius: 10px;
margin: 0.5rem 0;
border-left: 4px solid #1E88E5;
}
.task-card {
background-color: #e8f5e8;
padding: 1rem;
border-radius: 10px;
margin: 0.5rem 0;
border-left: 4px solid #4CAF50;
}
.stProgress > div > div > div > div {
background-color: #1E88E5;
}
.code-block {
background-color: #263238;
color: #ffffff;
padding: 1rem;
border-radius: 5px;
font-family: 'Courier New', monospace;
overflow-x: auto;
}
</style>
""", unsafe_allow_html=True)
# 侧边栏配置
with st.sidebar:
st.title("⚙️ 配置设置")
# API密钥输入
api_key = st.text_input(
"DeepSeek API密钥",
type="password",
value=os.environ.get("OPENAI_API_KEY", ""),
help="输入你的DeepSeek API密钥"
)
# 模型选择
model = st.selectbox(
"选择模型",
["deepseek-chat", "deepseek-coder"],
index=0,
help="deepseek-chat: 通用对话, deepseek-coder: 代码生成专用"
)
temperature = st.slider(
"温度参数",
min_value=0.0,
max_value=1.0,
value=0.7,
step=0.1,
help="值越高输出越随机,值越低输出越确定"
)
# 游戏参数设置
st.divider()
st.subheader("🎮 游戏设置")
game_type = st.selectbox(
"游戏类型",
["命令行贪吃蛇", "图形界面贪吃蛇", "网页版贪吃蛇"],
index=0
)
control_type = st.radio(
"控制方式",
["WASD", "方向键", "鼠标点击"],
index=0
)
difficulty = st.select_slider(
"难度级别",
options=["简单", "中等", "困难", "专家"],
value="中等"
)
# 高级选项
with st.expander("高级选项"):
show_debug = st.checkbox("显示详细调试信息", value=False)
auto_test = st.checkbox("自动运行测试", value=True)
save_code = st.checkbox("保存生成的代码", value=True)
# 主页面标题
st.markdown('<h1 class="main-header">🤖 AI软件开发团队 - 贪吃蛇游戏生成器</h1>', unsafe_allow_html=True)
# 团队介绍
st.markdown("### 👥 虚拟开发团队")
col1, col2, col3 = st.columns(3)
with col1:
st.markdown("""
<div class="agent-card">
<h4>👨💼 产品经理</h4>
<p><strong>经验:</strong> 10年</p>
<p><strong>职责:</strong> 需求分析、产品设计</p>
<p><strong>特点:</strong> 注重细节、逻辑严谨</p>
</div>
""", unsafe_allow_html=True)
with col2:
st.markdown("""
<div class="agent-card">
<h4>👨💻 Python架构师</h4>
<p><strong>经验:</strong> 8年</p>
<p><strong>职责:</strong> 代码实现、架构设计</p>
<p><strong>特点:</strong> 代码优雅、高效</p>
</div>
""", unsafe_allow_html=True)
with col3:
st.markdown("""
<div class="agent-card">
<h4>👩🔬 QA测试专家</h4>
<p><strong>经验:</strong> 7年</p>
<p><strong>职责:</strong> 代码审查、质量保证</p>
<p><strong>特点:</strong> 严谨细致、善于找茬</p>
</div>
""", unsafe_allow_html=True)
# 任务描述输入
st.markdown("### 📋 任务需求")
task_description = st.text_area(
"输入你的游戏需求:",
value="我想要一个基于命令行的贪吃蛇游戏,使用WASD控制,要有计分系统,游戏难度可以调整。",
height=100,
help="详细描述你想要开发的游戏"
)
# 启动按钮
if st.button("🚀 启动开发团队", type="primary", use_container_width=True):
if not api_key:
st.error("⚠️ 请输入DeepSeek API密钥!")
st.stop()
# 设置API密钥
os.environ["OPENAI_API_KEY"] = api_key
# 创建进度条
progress_bar = st.progress(0)
status_text = st.empty()
# 初始化LLM
status_text.text("🔄 初始化AI模型...")
progress_bar.progress(10)
try:
llm = LLM(
model=model,
temperature=temperature,
base_url="https://api.deepseek.com/v1",
api_key=api_key
)
# 创建团队成员
status_text.text("👥 组建开发团队...")
progress_bar.progress(30)
# 1. 定义产品经理 Agent
product_manager = Agent(
role='资深产品经理',
goal='分析用户需求,产出清晰、详细的软件需求文档(PRD)',
backstory="""你是一名拥有10年经验的互联网产品经理。
你擅长挖掘用户痛点,并且能把模糊的一句话需求,拆解成程序员能看懂的技术文档。
你对细节要求极高,不允许有逻辑漏洞。""",
verbose=show_debug,
allow_delegation=False,
llm=llm
)
# 2. 定义Python开发 Agent
developer = Agent(
role='首席Python架构师',
goal='根据需求文档,编写高质量、可运行的Python代码',
backstory="""你是一名顶级黑客和Python专家。
你只写优雅、高效、符合PEP8规范的代码。
你能够解决复杂算法问题,并且会给关键逻辑加上详细注释。""",
verbose=show_debug,
allow_delegation=False,
llm=llm
)
# 3. 定义测试工程师 Agent
qa_engineer = Agent(
role='质量保证(QA)专家',
goal='审查代码,寻找Bug,确保代码能完美运行',
backstory="""你是一名以"找茬"为乐的测试专家。
你会严格审查开发人员的代码,检查是否存在安全隐患、逻辑死循环或语法错误。
如果发现问题,你会毫不留情地打回重写。""",
verbose=show_debug,
allow_delegation=False,
llm=llm
)
# 定义任务
status_text.text("📝 分析需求任务...")
progress_bar.progress(50)
# 任务1:需求分析
task_analysis = Task(
description=f"""
用户想要一个'{task_description}'。
请分析该需求,定义游戏规则、控制方式({control_type})、界面布局以及计分规则。
产出一份简短但核心逻辑清晰的需求列表。
游戏难度设置为:{difficulty}
""",
agent=product_manager,
expected_output="一份包含游戏规则和功能点的需求列表文本。"
)
# 任务2:编写代码
task_coding = Task(
description=f"""
使用Python实现上述贪吃蛇游戏。
游戏类型:{game_type}
控制方式:{control_type}
难度级别:{difficulty}
注意:代码必须是一个完整的、可直接运行的.py文件内容。
处理好蛇撞墙、吃到食物变长等逻辑。
代码要包含详细的注释。
""",
agent=developer,
expected_output="完整的Python代码字符串。"
)
# 任务3:代码审查
task_review = Task(
description=f"""
检查开发人员编写的代码。
1. 检查是否有语法错误。
2. 检查逻辑是否符合PM的需求。
3. 检查代码是否符合PEP8规范。
4. 如果代码完美,直接输出代码;如果有问题,列出修改建议。
{"5. 运行一次快速测试,检查代码是否能正常执行。" if auto_test else ""}
""",
agent=qa_engineer,
expected_output="经过审查的最终Python代码,或Bug修改建议。"
)
# 组建团队
status_text.text("🤝 团队协作开发中...")
progress_bar.progress(70)
dev_team = Crew(
agents=[product_manager, developer, qa_engineer],
tasks=[task_analysis, task_coding, task_review],
process=Process.sequential,
verbose=show_debug
)
# 执行开发任务
status_text.text("⚙️ 正在生成贪吃蛇游戏...")
progress_bar.progress(85)
result = dev_team.kickoff()
progress_bar.progress(100)
status_text.text("✅ 开发完成!")
# 显示结果
st.balloons()
# 创建选项卡显示不同内容
tab1, tab2, tab3 = st.tabs(["🎮 最终代码", "📋 需求文档", "🔍 开发过程"])
with tab1:
st.markdown("### 🐍 生成的贪吃蛇游戏代码")
# 代码高亮显示
st.code(result, language="python")
# 下载按钮
if save_code:
import base64
b64 = base64.b64encode(result.encode()).decode()
href = f'<a href="data:text/plain;base64,{b64}" download="snake_game.py" class="stDownloadButton">📥 下载Python代码文件</a>'
st.markdown(href, unsafe_allow_html=True)
# 运行测试按钮
if st.button("▶️ 在本地运行代码"):
with tempfile.NamedTemporaryFile(mode='w', suffix='.py', delete=False) as f:
f.write(result)
temp_file = f.name
st.info(f"代码已保存到临时文件: {temp_file}")
st.code(f"python {temp_file}", language="bash")
with tab2:
# 这里可以显示需求文档
st.markdown("### 📋 产品需求文档(PRD)")
# 我们可以通过解析结果来显示各个部分
# 这里简化处理,实际使用时可以更详细
with tab3:
st.markdown("### 🔍 开发日志")
if show_debug:
st.text_area("详细日志", "这里会显示详细的开发过程...", height=300)
else:
st.info("请勾选侧边栏的'显示详细调试信息'以查看开发日志")
except Exception as e:
st.error(f"❌ 出现错误: {str(e)}")
st.exception(e)
# 添加示例部分
with st.expander("📚 使用示例"):
st.markdown("""
**示例1: 基础贪吃蛇**
```
我想要一个简单的命令行贪吃蛇游戏
```
**示例2: 高级功能**
```
我想要一个带图形界面的贪吃蛇游戏,要有以下功能:
1. 多种难度级别
2. 高分排行榜
3. 多种皮肤选择
4. 音效和背景音乐
```
**示例3: 教育用途**
```
设计一个适合教学的贪吃蛇游戏,代码要有详细注释,
并且包含设计模式的讲解,比如单例模式、观察者模式等
```
""")
# 底部信息
st.divider()
col1, col2, col3 = st.columns(3)
with col1:
st.markdown("**🛠️ 技术栈**")
st.write("CrewAI + DeepSeek + Streamlit")
with col2:
st.markdown("**⚡ 速度**")
st.write("AI驱动,快速生成")
with col3:
st.markdown("**🎯 精度**")
st.write("多轮审查,确保质量")
方案2:安装和运行
- 安装依赖:
pip install streamlit crewai langchain-openai
- 运行应用:
streamlit run app.py
主要特点:
-
交互式配置:
- API密钥输入
- 模型选择
- 参数调整
- 游戏设置
-
实时反馈:
- 进度条显示
- 状态更新
- 错误处理
-
结果展示:
- 代码高亮显示
- 下载功能
- 多标签页展示
-
用户体验:
- 美观的UI界面
- 响应式设计
- 示例提示
运行步骤:
- 保存上面的Streamlit代码为
app.py - 安装依赖:
pip install streamlit crewai - 运行:
streamlit run app.py - 在浏览器中打开显示的URL(通常是
http://localhost:8501)
这样你就有了一个完整的Web界面,可以交互式地使用AI开发团队生成贪吃蛇游戏代码了!

更多推荐
所有评论(0)