GitHub Copilot 构建与扩展的经验总结
GitHub 发布了一篇文章,分享了他们在构建和扩展企业级应用 GitHub Copilot 过程中的经验。Copilot 是一款基于 大型语言模型(LLM) 的应用,旨在帮助开发者更高效地编写代码。
项目分阶段实施
GitHub 将项目分为三个阶段:“Find it”、“Nail it” 和 “Scale it”,并在三年内成功推出了 GitHub Copilot。
1. Find it 阶段:明确问题与目标
在该阶段,GitHub 专注于找到一个 AI 可以有效解决的特定问题,确保问题既足够具体以快速推向市场,又足够大以产生显著影响。团队明确了目标用户群体,即帮助开发者更快地编写代码,并减少上下文切换。此外,团队选择专注于 软件开发生命周期(SDLC) 中的一个环节:在 集成开发环境(IDE) 中编写代码,同时保持对 LLM 能力的现实预期。这使得工具能够专注于代码建议,而不是生成完整的提交。团队还致力于确保工具增强现有工具,而不是要求开发者改变工作流程。
2. Nail it 阶段:迭代开发与用户反馈
该阶段强调通过 A/B 测试 获取真实用户反馈,进行快速迭代。团队最初尝试通过 Web 界面与基础模型交互,但后来转向 IDE,以减少任务切换。进一步迭代使 Copilot 能够同时处理多个文件,基于观察到开发者在编码时经常参考多个打开的 IDE 标签。
随着生成式 AI 领域的快速发展,团队定期重新审视过去的决策,确保技术改进和用户熟悉度的提升不会使过去的决策过时。例如,团队放弃了为每种语言构建单独 AI 模型的计划,因为 LLM 的改进使得一个模型可以处理多种语言。
3. Scale it 阶段:优化与推广
在扩展阶段,团队优化了应用的通用性(GA),确保 AI 模型输出的一致性,管理用户反馈,并定义关键性能指标。团队还优先考虑了安全性和负责任的 AI 使用,实施了过滤器以避免建议不安全或冒犯性的代码。
为了优化质量和可靠性,团队采取了多种策略来应对 LLM 的随机性,例如调整发送给 LLM 的参数以减少响应的随机性,并缓存常见响应以减少变异并提高性能。
通过使用等待名单,GitHub 管理了早期用户的技术预览,使得团队能够处理来自一小部分早期采用者的反馈。深入分析真实用户反馈帮助团队识别问题更新,并逐步完善产品的关键性能指标,如开发者保留了多少由 Copilot 生成的代码。
安全与社区参与
团队优先确保生成的代码安全,开发了过滤器以拒绝可能引入安全问题的建议,如 SQL 注入。社区反馈还提出了 Copilot 建议与公开代码匹配的问题,团队实施了代码参考工具,帮助开发者做出明智决策。
市场推广策略
团队向多个有影响力的社区成员展示了技术预览,并针对个人用户而非企业进行推广。这有助于在发布时获得广泛支持,随后推动企业采用。
关键经验总结
- 聚焦具体问题:明确 AI 可以解决的特定问题,确保问题既具体又具有影响力。
- 迭代与用户反馈:通过快速迭代和真实用户反馈不断优化产品。
- 用户需求优先:在扩展应用时始终优先考虑用户需求。
GitHub 将继续密切关注生成式 AI 工具的需求和发展。更多详情可阅读 GitHub 博客的完整文章。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。