CrewAI全面详解:构建AI协作团队的领先框架

在这里插入图片描述

一、核心概念与定位

CrewAI是一个轻量级、高性能的Python多智能体协作框架,专注于创建"AI团队",使多个具有特定角色的AI代理像人类团队一样协作完成复杂任务。
![(https://i-blog.csdnimg.cn/direct/170e58d09cd74367856c5deb1216c475.png#pic_center)

  • 独立架构:完全从零构建,不依赖LangChain等其他框架,性能更高(某些任务比LangGraph快5.76倍)
  • 角色驱动:每个代理有明确角色(Role)、目标(Goal)和背景(Backstory),模拟真实团队分工
  • 双重模式:提供"Crews"(自主协作)和"Flows"(结构化流程)两种执行模式,适应不同场景需求

二、核心架构与工作原理

在这里插入图片描述

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)

五、见证“无人值守”的魔法

当你运行这段代码,你的终端将会变成一个热闹的聊天室。你会看到令人起鸡皮疙瘩的一幕:

  1. 产品经理开始思考:“好的,用户要贪吃蛇。我需要定义:地图大小、蛇的初始速度、积分规则…”
  2. 产品经理把文档甩给开发:“@首席Python架构师,这是需求,按这个写。”
  3. 开发接单:“收到。开始构建蛇类,处理键盘中断…”
  4. 开发写完代码,交给测试。
  5. 质量保证介入:“等等,这里有个逻辑漏洞,蛇撞到自己身体没有判断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:安装和运行

  1. 安装依赖
pip install streamlit crewai langchain-openai
  1. 运行应用
streamlit run app.py

主要特点:

  1. 交互式配置

    • API密钥输入
    • 模型选择
    • 参数调整
    • 游戏设置
  2. 实时反馈

    • 进度条显示
    • 状态更新
    • 错误处理
  3. 结果展示

    • 代码高亮显示
    • 下载功能
    • 多标签页展示
  4. 用户体验

    • 美观的UI界面
    • 响应式设计
    • 示例提示

运行步骤:

  1. 保存上面的Streamlit代码为 app.py
  2. 安装依赖:pip install streamlit crewai
  3. 运行:streamlit run app.py
  4. 在浏览器中打开显示的URL(通常是 http://localhost:8501

这样你就有了一个完整的Web界面,可以交互式地使用AI开发团队生成贪吃蛇游戏代码了!
在这里插入图片描述
在这里插入图片描述

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐