ai team building

AI 团队搭建指南:从 3 人到 30 人的组织演进

为什么 AI 团队不一样 AI 团队和传统软件团队有本质区别: 技能半衰期短:2023 年学 LangChain,2024 年学 LlamaIndex,2025 年学 vLLM —— 技能 18 个月就过时 跨学科需求:既要懂 Prompt 工程,又要懂模型部署,还要懂业务领域 反馈周期长:发版后才知道效果,不像传统软件跑个单元测试就知道 实验文化:“试错"是工作方法,不是失误 因此,AI 团队的组织设计需要特别考虑学习速度、实验密度和跨职能协作。 阶段一:3 人创始团队(0→1) 角色配置 ┌─────────────────────────────────┐ │ AI 全栈工程师(2 人) │ │ • Prompt 工程 │ │ • RAG 搭建 │ │ • 模型调用集成 │ │ • 简单评估体系 │ ├─────────────────────────────────┤ │ PM/业务专家(1 人) │ │ • 需求定义 │ │ • Prompt 质量把关 │ │ • 用户反馈收集 │ │ • 评测集构建 │ └─────────────────────────────────┘ 关键招聘标准 角色 必备技能 加分项 面试重点 AI 全栈工程师 Python、LLM API 调用、Prompt 调试 vLLM、RAG、微调经验 现场 Prompt 调试能力 PM/业务专家 领域知识、需求分析 AI 产品经验、数据标注经验 能否写高质量评测用例 这个阶段的技术债 # 阶段一的典型代码:快速验证,不考虑架构 def chat(user_input, history): # 直接调用 API,无抽象 response = openai.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": user_input}] ) return response.choices[0].message.content # 问题: # 1. 无 Prompt 版本管理 # 2. 无成本追踪 # 3. 无评估体系 # 4. 无监控 # → 能跑就行,但要清楚这是技术债 阶段一 OKR 示例 O: 验证 AI 功能的产品市场契合度 KR1: 完成 3 个核心场景的端到端 Demo KR2: 用户满意度达到 4.0/5.0 KR3: 单次对话成本 < $0.05 KR4: 收集 200 条高质量用户反馈 阶段二:8 人团队(1→10) 组织形态 CTO/技术负责人 │ ┌─────────────┼─────────────┐ │ │ │ AI 研究工程师 后端工程师 前端工程师 (2 人) (2 人) (1 人) │ DevOps (1 人) │ PM (1 人) │ 数据标注 (1 人) 新增角色说明 AI 研究工程师(2 人) 核心职责: • 模型选型与评测 • Prompt 工程化(版本管理、A/B 测试) • RAG 系统优化 • 微调实验 • 新模型快速调研(每月 1-2 个新模型) 技能要求: • 扎实的 NLP 基础(Transformer、Attention 机制) • 熟练使用 PyTorch / Transformers • 有 RAG / 微调实战经验 • 能快速阅读论文并实现核心思路 面试题目: 1. 手写 Attention 机制代码 2. 现场优化一个 RAG 系统的召回率 3. 设计一个 Prompt A/B 测试方案 后端工程师(2 人) 核心职责: • API 服务开发(FastAPI / Flask) • 模型服务部署(vLLM / TGI) • 数据库设计(对话历史、用户反馈) • 第三方集成(支付、通知、CRM) 技能要求: • Python 后端框架经验 • 异步编程(asyncio) • 数据库设计(PostgreSQL + Redis) • 容器化部署(Docker / K8s) 注意:这个阶段不需要 K8s 专家,Docker Compose 够用 数据标注专员(1 人) 核心职责: • 构建和维护评测数据集 • 标注用户反馈(意图分类、质量评分) • 协助 PM 定义质量标准 • 管理外部标注团队(如有) 为什么需要专门的人: • 高质量评测数据是 AI 产品的核心竞争力 • 标注质量直接影响模型效果评估 • 可以释放工程师的时间 招聘标准: • 细心、耐心(标注是重复性工作) • 领域知识(懂业务比懂 AI 更重要) • 基本的数据处理能力(Excel / Python 基础) 阶段二技术架构演进 # 阶段二:引入抽象层,开始积累工程化能力 class LLMService: """LLM 服务抽象层""" def __init__(self): self.router = ModelRouter() # 新增:模型路由 self.prompt_registry = PromptRegistry() # 新增:Prompt 管理 self.evaluator = Evaluator() # 新增:评估体系 self.cost_tracker = CostTracker() # 新增:成本追踪 async def chat(self, user_input: str, user_id: str) -> str: # 1. 模型路由 model_config = self.router.route(user_input) # 2. 加载 Prompt(版本化管理) prompt = self.prompt_registry.load("chatbot", version="latest") # 3. 构建消息 messages = prompt.render(user_input) # 4. 调用(带成本追踪) with self.cost_tracker.track(model_config["model"]) as tracker: response = await self._call_llm( model=model_config["model"], messages=messages, ) # 5. 异步评估 asyncio.create_task( self.evaluator.evaluate_async(response, user_input) ) return response 阶段二 OKR 示例 O: 将 AI 功能推向生产,服务 1000+ DAU KR1: API 可用性 > 99.5% KR2: P95 延迟 < 3 秒 KR3: 单用户日成本 < $0.50 KR4: 评测集覆盖 50+ 核心场景,通过率 > 90% KR5: 完成 3 轮 Prompt 迭代,满意度提升 > 15% 阶段三:18 人团队(10→20) 组织形态 CTO │ ┌──────────┼──────────┐ │ │ │ AI 平台组 应用组 基础设施组 (5 人) (8 人) (3 人) │ │ │ ┌────┴────┐ ┌─┴──┐ ┌─┴────┐ │ │ │ │ │ │ 研究工程师 ML 前端 后端 DevOps 数据 (2) 工程师 (3) (3) (2) 工程师 (2) 新增角色 ML 工程师(2 人) 核心职责: • 训练/微调流水线建设 • 评估框架开发 • 模型监控(漂移检测、性能退化) • 数据版本管理(DVC / MLflow) 与 AI 研究工程师的区别: • 研究工程师:关注模型效果、Prompt 优化 • ML 工程师:关注工程化、流水线、监控 技能要求: • MLOps 工具链(MLflow / Kubeflow / DVC) • 模型部署(TorchServe / vLLM / TGI) • 监控和可观测性(Prometheus / Grafana) • 数据工程基础(Spark / Pandas) DevOps 工程师(2 人) 核心职责: • GPU 集群管理(K8s + GPU Operator) • CI/CD 流水线(含 AI 模型测试) • 监控告警体系 • 成本优化(Spot 实例、资源调度) AI 场景下的特殊要求: • 懂 GPU(NVIDIA DCGM、显存管理) • 大模型镜像大(优化镜像拉取) • 模型文件大(优化存储和传输) • 推理服务的自动扩缩容 阶段三:平台化建设 # 阶段三:建设内部 AI 平台 class InternalAIPlatform: """ 内部 AI 平台:统一 LLM 调用、Prompt 管理、 评估体系、监控告警 """ def __init__(self): self.model_registry = ModelRegistry() # 模型注册中心 self.prompt_registry = PromptRegistry() # Prompt 版本管理 self.eval_framework = EvalFramework() # 评估框架 self.monitor = MonitoringStack() # 监控告警 self.cost_optimizer = CostOptimizer() # 成本优化 def serve(self): """启动内部 AI 平台服务""" # 提供统一 API # /v1/chat - 统一聊天接口 # /v1/prompts - Prompt 管理 # /v1/eval - 评估任务提交 # /v1/metrics - 监控指标查询 pass # 各业务组通过平台调用,无需各自维护 LLM 集成 阶段三 OKR 示例 O: 建立可扩展的 AI 能力平台,支撑多业务线 KR1: 内部 AI 平台日调用量 > 100 万次 KR2: 新业务接入 AI 能力的时间 < 1 周 KR3: 平台可用性 > 99.9% KR4: 通过平台统一降低成本 30%(规模效应) KR5: 建立完整的模型评估体系,覆盖 10+ 业务场景 阶段四:35 人团队(20→35) 组织形态 AI 负责人 (Head of AI) │ ┌─────────────┼─────────────┐ │ │ │ AI 研究部 AI 平台部 业务 AI 组 (8 人) (12 人) (10 人) │ │ │ ┌───┴───┐ ┌───┴───┐ ┌───┴───┐ │ │ │ │ │ │ 研究 研究 平台 部署 业务 业务 科学家 工程师 开发 工程 组1 组2 (3) (4) (5) (4) (5) (5) 新增角色 AI 研究科学家(3 人) 核心职责: • 跟踪前沿研究(ArXiv 每周 10+ 篇) • 将研究成果转化为产品能力 • 技术预研(6-12 个月的前沿技术) • 与合作高校/研究机构建立联系 招聘标准: • PhD 学历(CS / NLP / ML 方向) • 顶会论文发表记录(NeurIPS / ICML / ACL) • 工程实现能力(不只是"纸上谈兵") • 技术判断力(能区分"炒作"和"真突破") 面试流程: 1. 论文讨论(深入讨论其发表论文或最近读的一篇论文) 2. 系统设计(如何设计一个支持 10 万 QPS 的 RAG 系统) 3. 代码实现(实现一个简化版的 Flash Attention) 部署工程师(4 人) 核心职责: • 大规模模型部署(多区域、多模型) • GPU 资源调度优化 • 模型量化与推理加速 • SLO 保障(延迟、吞吐量、成本) 技能要求: • 深度理解 GPU 架构(Tensor Core、显存层次) • 推理框架源码阅读(vLLM / TensorRT-LLM) • 性能分析和调优(Nsight / PyTorch Profiler) • 成本优化(Spot 实例、模型混合部署) 阶段四:多业务线协同 # 阶段四:多租户 AI 平台 class MultiTenantAIPlatform: """ 多租户 AI 平台: - 统一资源池 - 按业务线隔离 - 成本分摊 - 独立 SLO """ def __init__(self): self.tenants: dict[str, TenantConfig] = {} self.resource_pool = GPUResourcePool() self.cost_allocator = CostAllocator() def register_tenant(self, name: str, config: TenantConfig): """注册新业务线""" # 分配资源配额 self.resource_pool.allocate_quota( tenant=name, gpu_count=config.gpu_quota, max_qps=config.max_qps, ) # 设置独立 SLO self.monitor.set_slo(name, config.slo_config) # 成本中心标记 self.cost_allocator.register_cost_center(name) async def chat(self, tenant: str, request: ChatRequest) -> ChatResponse: """多租户聊天接口""" # 1. 配额检查 if not self.resource_pool.check_quota(tenant): raise QuotaExceeded(f"Tenant {tenant} quota exceeded") # 2. 路由到租户专属模型/ Prompt model = self.tenants[tenant].get_model_for_request(request) # 3. 调用(带租户级监控) with self.monitor.track(tenant=tenant): response = await self._call_model(model, request) # 4. 成本分摊 self.cost_allocator.record_cost( tenant=tenant, cost=self._calculate_cost(response), ) return response 招聘全景图 各阶段招聘优先级 阶段 团队规模 第一优先级 第二优先级 第三优先级 阶段一 3 人 AI 全栈工程师 × 2 PM/业务专家 × 1 - 阶段二 8 人 AI 研究工程师 × 2 后端工程师 × 2 数据标注 × 1 阶段三 18 人 ML 工程师 × 2 DevOps × 2 前端 × 3 阶段四 35 人 AI 研究科学家 × 3 部署工程师 × 4 产品经理 × 2 薪资参考(2025 年国内一线) 角色 初级 (1-3y) 中级 (3-5y) 高级 (5y+) 专家/负责人 AI 全栈工程师 25-35W 35-55W 55-80W 80-150W AI 研究工程师 30-40W 40-65W 65-100W 100-200W AI 研究科学家 40-60W 60-90W 90-150W 150-300W+ ML 工程师 25-35W 35-55W 55-80W 80-120W 后端工程师 20-30W 30-50W 50-80W 80-150W DevOps 工程师 20-30W 30-50W 50-80W 80-120W 注:AI 研究科学家如有顶会一作,薪资可上浮 30-50%。 ...

2026-06-25 · 6 min · 1182 words · 硅基 AGI 探索者
crewai production

CrewAI 生产实践:构建虚拟 AI 团队

引言:像管理团队一样管理 AI CrewAI 的核心理念是:将 AI Agent 组织成一个"团队"(Crew),每个成员有明确的角色、目标和背景故事,通过结构化的流程协作完成任务。2026 年的 CrewAI 3.0 版本在稳定性、可观测性和企业级特性上有了长足进步。 CrewAI 核心概念 三要素模型 Crew = Agents + Tasks + Process 概念 说明 类比 Agent 有角色和能力的 AI 成员 团队成员 Task 需要完成的具体任务 工作任务 Crew Agent 和 Task 的编排单元 项目团队 Process 任务执行方式(顺序/层次) 工作流程 Tool Agent 可使用的工具 工具软件 快速构建第一个 Crew 安装与基础 # pip install crewai crewai-tools from crewai import Agent, Task, Crew, Process from crewai.tools import tool from langchain_openai import ChatOpenAI # 配置 LLM llm = ChatOpenAI(model="gpt-5", temperature=0.7) 定义 Agent # 定义一个内容创作团队 strategist = Agent( role='内容策略师', goal='制定内容策略,确保内容符合品牌调性和目标受众需求', backstory=""" 你是一位拥有 10 年经验的内容策略师,曾在多家科技公司 负责内容规划。你擅长分析受众画像、制定内容日历和优化 内容分发策略。 """, llm=llm, verbose=True, memory=True, # 启用记忆 allow_delegation=False, ) writer = Agent( role='技术写作专家', goal='根据策略师的要求创作高质量的技术内容', backstory=""" 你是一位资深技术写作专家,擅长将复杂的技术概念 转化为通俗易懂的文章。你精通 Markdown 格式, 善于使用代码示例和图表来增强理解。 """, llm=llm, verbose=True, memory=True, ) editor = Agent( role='内容编辑', goal='审核并优化内容,确保质量和准确性', backstory=""" 你是一位严格但公正的内容编辑,关注语法准确性、 逻辑连贯性和事实正确性。你会提出具体的修改建议, 而不是泛泛而谈。 """, llm=llm, verbose=True, ) 定义 Task strategy_task = Task( description=""" 为一篇关于「AI Agent 在企业中的应用」的文章制定内容策略。 要求: 1. 目标受众:技术决策者(CTO、技术总监) 2. 内容长度:3000-5000 字 3. 风格:专业但不晦涩 4. 需要覆盖的关键点: - AI Agent 的定义和价值 - 主流框架对比 - 企业落地案例 - ROI 分析 输出:详细的内容大纲和写作要点。 """, expected_output="一份详细的内容大纲,包含章节结构和每章的要点", agent=strategist, ) writing_task = Task( description=""" 根据策略师的大纲,撰写完整的技术文章。 要求: - 使用 Markdown 格式 - 包含代码示例 - 包含对比表格 - 适当的图表说明 """, expected_output="一篇完整的 Markdown 格式技术文章", agent=writer, context=[strategy_task], # 依赖前一个任务的输出 ) editing_task = Task( description=""" 审查文章并优化: 1. 检查事实准确性 2. 优化段落过渡 3. 修正语法错误 4. 确保风格一致性 5. 输出最终版本 """, expected_output="审查意见 + 最终优化版文章", agent=editor, context=[writing_task], output_file='output/final_article.md', # 保存到文件 ) 组建 Crew 并执行 # 创建 Crew content_crew = Crew( agents=[strategist, writer, editor], tasks=[strategy_task, writing_task, editing_task], process=Process.sequential, # 顺序执行 verbose=True, memory=True, # 团队级记忆 planning=True, # 执行前先规划 # 层次模式配置 # process=Process.hierarchical, # manager_llm=llm, ) # 执行 result = content_crew.kickoff() print(result.raw) 自定义工具集成 创建自定义工具 from crewai.tools import BaseTool from pydantic import BaseModel, Field import requests import json class WebSearchInput(BaseModel): query: str = Field(..., description="搜索关键词") max_results: int = Field(default=5, description="最大返回结果数") class WebSearchTool(BaseTool): name: str = "web_search" description: str = "搜索互联网获取最新信息" args_schema: type[BaseModel] = WebSearchInput def _run(self, query: str, max_results: int = 5) -> str: # 使用搜索 API response = requests.get( "https://api.search.brave.com/res/v1/web/search", headers={"X-Subscription-Token": "YOUR_API_KEY"}, params={"q": query, "count": max_results} ) results = response.json().get("web", {}).get("results", []) formatted = [] for r in results: formatted.append(f"标题: {r['title']}\n链接: {r['url']}\n摘要: {r['description']}\n") return "\n".join(formatted) if formatted else "未找到相关结果" class DatabaseQueryInput(BaseModel): sql: str = Field(..., description="SQL 查询语句") class DatabaseQueryTool(BaseTool): name: str = "database_query" description: str = "查询企业数据库获取业务数据" args_schema: type[BaseModel] = DatabaseQueryInput def _run(self, sql: str) -> str: import sqlite3 conn = sqlite3.connect("data/company.db") cursor = conn.execute(sql) columns = [d[0] for d in cursor.description] rows = cursor.fetchall() conn.close() # 格式化为表格 result = [", ".join(columns)] for row in rows[:20]: # 限制返回行数 result.append(", ".join(str(v) for v in row)) return "\n".join(result) # 将工具分配给 Agent researcher = Agent( role='市场研究员', goal='收集和分析市场数据', backstory='你是市场研究专家,擅长数据收集和分析。', llm=llm, tools=[WebSearchTool(), DatabaseQueryTool()], ) 层次化团队模式 # 层次模式:管理者 Agent 负责任务分配 from crewai import Process manager = Agent( role='项目经理', goal='协调团队成员,确保任务按时高质量完成', backstory='你是一位经验丰富的项目经理,擅长资源分配和进度管理。', llm=llm, allow_delegation=True, # 允许委派任务 ) hierarchical_crew = Crew( agents=[researcher, writer, editor], tasks=[research_task, writing_task, editing_task], process=Process.hierarchical, manager_agent=manager, # 指定管理者 manager_llm=llm, verbose=True, ) 生产级配置 错误处理与重试 from crewai import Crew from crewai.utilities import Logger class ProductionCrew: def __init__(self, config: dict): self.config = config self.max_retries = config.get("max_retries", 3) self.logger = Logger(verbose=True) def run_with_retry(self, crew: Crew, inputs: dict) -> dict: """带重试机制的 Crew 执行""" for attempt in range(self.max_retries): try: result = crew.kickoff(inputs=inputs) return { "status": "success", "result": result.raw, "token_usage": result.token_usage, } except Exception as e: self.logger.log(f"尝试 {attempt+1} 失败: {e}") if attempt < self.max_retries - 1: # 调整重试策略 crew.llm.temperature = min(crew.llm.temperature + 0.1, 1.0) continue return { "status": "failed", "error": str(e), "attempt": attempt + 1, } 监控与可观测性 # 使用 LangSmith 或自定义回调进行监控 from langchain.callbacks import get_openai_callback def monitored_crew_run(crew: Crew, task: str): """带监控的 Crew 执行""" # Token 使用追踪 with get_openai_callback() as cb: result = crew.kickoff(task) metrics = { "total_tokens": cb.total_tokens, "prompt_tokens": cb.prompt_tokens, "completion_tokens": cb.completion_tokens, "total_cost": cb.total_cost, "execution_time": result.execution_time, } # 发送到监控系统 send_metrics_to_dashboard(metrics) # 输出执行报告 print(f""" ═══════════════════════════════════ Crew 执行报告 ═══════════════════════════════════ 任务: {task[:50]}... 状态: 成功 Token 使用: {metrics['total_tokens']:,} 成本: ${metrics['total_cost']:.4f} 耗时: {metrics['execution_time']:.1f}s ═══════════════════════════════════ """) return result, metrics 缓存与优化 from crewai.utilities import CacheHandler import hashlib import json import os class FileCacheHandler(CacheHandler): """文件系统缓存""" def __init__(self, cache_dir: str = "./.crew_cache"): super().__init__() self.cache_dir = cache_dir os.makedirs(cache_dir, exist_ok=True) def _hash_key(self, agent_name: str, input_text: str) -> str: return hashlib.md5(f"{agent_name}:{input_text}".encode()).hexdigest() def get(self, agent_name: str, input_text: str): key = self._hash_key(agent_name, input_text) path = os.path.join(self.cache_dir, f"{key}.json") if os.path.exists(path): with open(path) as f: return json.load(f) return None def set(self, agent_name: str, input_text: str, value): key = self._hash_key(agent_name, input_text) path = os.path.join(self.cache_dir, f"{key}.json") with open(path, "w") as f: json.dump(value, f, ensure_ascii=False) # 使用缓存 crew = Crew( agents=[...], tasks=[...], cache_handler=FileCacheHandler(), # 启用嵌入缓存 embedder={ "provider": "openai", "config": { "model": "text-embedding-3-small", } }, ) 成本优化策略 策略 效果 实现难度 任务分配合适的模型 节省 40-60% 低 启用缓存 节省 20-30% 低 减少冗余上下文 节省 15-25% 中 并行化独立任务 节省 30-50% 时间 中 流式输出 改善用户体验 低 # 模型分层策略 models = { "planning": "gpt-5", # 规划用强模型 "execution": "gpt-4o-mini", # 执行用快速模型 "review": "gpt-5", # 审查用强模型 "summary": "gpt-4o-mini", # 总结用快速模型 } # 为不同 Agent 分配不同模型 strategist = Agent(role='策略师', llm=ChatOpenAI(model=models["planning"])) writer = Agent(role='写作者', llm=ChatOpenAI(model=models["execution"])) editor = Agent(role='编辑', llm=ChatOpenAI(model=models["review"])) 竞品对比 特性 CrewAI AutoGen LangGraph 学习曲线 低 中 高 角色定义 直观 灵活 程序化 工作流模式 顺序/层次 多种 自定义图 内置工具 丰富 基础 需集成 记忆系统 ✅ ✅ 需实现 人类介入 ✅ ✅ ✅ 适合场景 内容/分析 研究/开发 复杂流程 生产成熟度 中高 高 中 最佳实践 角色设计要明确:每个 Agent 的角色、目标和背景故事要有清晰区分 任务粒度适中:太粗导致质量差,太细导致开销大 合理使用上下文依赖:通过 context 参数传递任务间依赖 监控成本:多 Agent 会成倍增加 token 消耗 测试与迭代:先小规模测试,逐步扩展团队 结语 CrewAI 以其直观的角色-任务模型,成为构建 AI 团队最易上手的框架之一。它特别适合内容创作、市场分析、研究报告等"软"任务场景。对于需要精细控制执行流程的场景,可能需要结合其他框架使用。 ...

2026-06-25 · 5 min · 864 words · 硅基 AGI 探索者
鲁ICP备2026018361号