跳至内容

Topics/人工智能(AI)

什么是人工智能(AI)?

了解人工智能(AI)的基础知识,其工作原理,以及AI驱动的工具如何改变现代软件交付。

Jacob Schmitt

Senior Technical Content Marketing Manager

人工智能概述

人工智能(AI)指的是能够分析数据、识别模式并执行通常需要人类判断的任务的软件系统。现代人工智能系统依赖在大数据集上训练的统计模型,预测结果、生成响应,并支持广泛应用中的决策。

尽管人工智能研究可以追溯到20世纪50年代,但随着计算能力的提升、大规模数据集的普及以及软件基础设施的成熟,其实际应用在2020年代初迅速扩展。曾经仅限于研究环境的能力,如今已嵌入日常工具中,用于总结信息、回答问题以及生成书面或视觉内容。

在软件开发中,人工智能驱动编写代码、生成测试、分析日志、诊断故障并提出解决方案的工具。这些能力提高了代码变更的速度和规模,创造了新的生产力机会,同时也提高了对强有力验证实践的需求。AI辅助开发的有效性最终取决于团队在变更进入生产环境前的评估和验证能力。

人工智能的工作原理

理解人工智能系统如何产生输出,有助于设定现实的预期,支持这些工具的更高效使用。

现代人工智能系统建立在 模型 之上——经过训练的统计系统,接收文本、代码或指标等输入,并根据训练过程中识别的模式生成输出。在训练过程中,模型处理大量数据集,以学习输入与结果之间的关系。

训练完成后,模型进入 推理 模式,通过根据已学习的关系预测可能的延续或结果,对新输入生成响应。

由于推理依赖于概率而非固定规则,相同的输入在不同运行中可能产生不同的输出。这种可变性使人工智能系统能够处理复杂和创造性的任务,但这也意味着其输出应被视为有依据的预测,而非确定性的答案。

人工智能模型的类型

人工智能包含多种类型的模型,每种模型都针对不同类型的任务进行了优化。

模型类型 主要功能 典型开发用途
大语言模型 文本和代码生成 代码编写、技术解释、日志分析
嵌入模型 语义表示 搜索、相似性检测、信息检索
分类/预测模型 模式检测 不稳定测试识别、异常告警
视觉与语音模型 图像/音频处理 UI验证、图表解读

大语言模型(LLM) 是最广为人知的一类。它们驱动着能够生成代码、解释技术概念和分析日志的文本系统。主要基于源代码训练的变体实现了开发者如今所依赖的许多代码补全和生成功能。

嵌入模型 将文本或代码转换为能够捕捉语义信息的数值向量。这些表示支持语义搜索、相似性检测和检索增强生成。当开发工具呈现相关代码或将当前故障与历史事件进行关联时,嵌入模型往往在其中发挥着重要作用。

分类和预测模型 专注于更具针对性的任务,例如检测不稳定测试、估算构建时间或识别异常。虽然不如大语言模型复杂,但在处理结构化问题时,它们通常更快速、更轻量,也更易于解释。

计算机视觉和语音模型 处理图像和音频。在开发场景中,它们可用于验证UI渲染、解读图表或实现基于语音的交互。许多现代工具将多种模型类型组合使用——一个用于检索相关上下文,另一个用于生成输出,还有一个用于过滤或验证结果。

人工智能助手与人工智能代理

一旦模型能够生成输出,下一步需要考虑的是如何将这些输出应用到实际工作流程中。

AI 助手 响应提示并提供建议。开发者提出问题,收到回复,然后决定下一步该怎么做。人类始终对所采取的每一个行动负责。

AI 智能体 则拥有更高的自主性。它们能够执行针对既定目标的多步骤工作流程,在既定边界内做出决策,并在必要时进行升级处理。两者的区别在于独立程度:助手辅助决策,而智能体则能够执行决策。

以一个失败的测试为例。助手可能会分析错误、解释可能的原因,并建议潜在的修复方案。而智能体则可以检测到故障、审查日志、提出代码更改建议、运行验证,并创建拉取请求供审查。由于智能体具有更高的独立性,它们需要更强的安全保障措施,但它们也代表了开发工具演进中的重要一步。

人工智能局限性

当前的人工智能系统存在若干实际局限,团队必须考虑: 他们无法可靠地验证自己的输出,只能依赖外部验证机制。

  • 由于缺乏检索或搜索功能,他们的知识仅限于训练数据中存在的模式。

  • 语言模型一次只能处理有限的上下文,且可能忽略大量输入中的细节。

  • 它们有时会产生自信但不准确的输出(称为 hallucinations),包括不存在的函数或虚构的引用。

  • 当场景与训练数据有显著差异时,性能变得难以预测。

这些限制使得人工监督和确定性验证成为负责任使用的人工智能不可或缺的组成部分。

软件开发生命周期中的人工智能

人工智能工具现已贯穿软件开发生命周期,从代码创建到生产维护。随着代理驱动能力的成熟,其影响力持续扩大。

在编辑器里

现代代码助手帮助开发者从自然语言生成代码,建议重构策略,解释不熟悉的代码库,进行语言间翻译,并生成文档。这些功能减少了重复性任务的时间,使跨系统操作更为便捷。

许多开发环境现在默认包含智能功能,使开发者能够更快地迭代,同时保持专注。

在测试和代码审查中

AI工具缩短了编写代码和验证代码之间的时间。它们可以生成测试用例,在合并前识别潜在漏洞,确定哪些测试与变更相关,并检测与不稳定行为相关的模式。

机器辅助复习减轻认知负担,同时揭示可能被忽视的问题。安全扫描工具还受益于超越规则方法的模式识别,使验证更为全面,无需额外人工操作。

在CI/CD流水线中

当AI能力集成到CI/CD系统时尤为宝贵。这些工具可以诊断和修复故障构建,总结执行输出,检测多次运行中的重复模式,并建议改进代码、测试套件和流水线配置,提升性能和可靠性。

像CircleCI这样的CI环境提供了结构化条件,使AI生成的输出能够根据确定性标准进行验证。清晰的成功信号、快速的反馈循环和明确的执行边界,使CI/CD成为AI辅助开发的自然控制点。

代理性工作流程

代理性工作流程不仅限于基于提示的帮助。这些系统观察系统行为,在定义的范围内做出决策并采取行动。它们尤其适用于重复性任务,因为这些任务的结果可以轻易验证,比如修复不稳定的测试、提升覆盖率、更新依赖关系或优化流水线配置。

Chunk展示了该模型的实际工作原理。它可以识别问题、生成修复并打开拉取请求,所有更改在审核前都会自动运行测试。 人工监督依然是核心。代理提出变更建议,人工审核,审计轨迹记录每一步。这种结构既保持了可靠性,又让团队能够从自动化中受益。

人工监督依然是核心。代理提出变更建议,人工审核,审计轨迹记录每一步。这种结构既保持了可靠性,又让团队能够从自动化中受益。

AI辅助配送的风险管理

人工智能工具不仅带来了显著的生产力提升,也改变了团队管理风险的方式。更快的代码生成增加了自动化验证的需求,因为单靠人工审核无法随着输出量扩展。生成代码与人类编写的代码同样存在安全和合规风险,研究显示大量AI生成代码首次尝试时未能通过安全检查。

快速反馈循环至关重要。当CI系统运行缓慢或不可靠时,变化积累的速度超过了验证速度,从而削弱了AI工具应提供的优势。受益最多的团队将快速生成与同等快速的验证结合在一起。

随着 AI 加快变更的数量与速度,CI 正是确保这些变更可控且可靠的关键。

人工智能与CircleCI

AI辅助开发提高了代码变更的速度和频率,这使得持续验证比以往任何时候都更为重要。

虽然每项变更仍需通过测试、安全检查和质量门槛,但挑战在于如何保持流程足够快,以匹配AI辅助开发的节奏。

CircleCI帮助团队将验证重点放在关键部位。它不是每次都运行同一条流水线,而是查看代码变更、测试历史和依赖关系,来 决定哪些真正需要运行。这样既能快速反馈,又不牺牲信心。

当出现故障时,团队会获得上下文,而不仅仅是日志。AI驱动摘要 突出显示反复出现的失败、近期变更及相关测试行为,方便开发者先从哪里查看。

块状人工智能代理 更进一步。因为它了解你的流水线、测试和构建历史,可以调查失败、编写新测试、提出修复建议并推荐流水线改进。每一项拟议的变更仍会经过自动验证和人工审核,确保团队保持控制。

如何开始接触人工智能

将人工智能引入开发工作流程时,采用过程是渐进的、可衡量的,并且有强有力的验证实践支持,效果最佳。受益最多的队伍通常会遵循如下进度:

  1. 从低风险的用例开始,如代码完成、文档生成和测试建议,这些错误更容易发现和纠正。
  2. 让人工参与审核流程,使AI生成的成果被视为草稿,开发者会进行评估、完善和验证。
  3. 将所有变更都经过CI审核,确保人类和AI生成的贡献符合相同的测试、安全和质量标准。
  4. 通过跟踪审核时间、缺陷率和测试可靠性来衡量影响,了解AI改进工作流程的哪些方面及需要调整的地方。
  5. 在有明确成功标准的领域逐步引入主动性工作流程,随着信心增强逐步扩展。
  6. 优化反馈速度,使验证能跟上开发速度的提升。

如果你已经实施了这些实践,快速且可靠的CI基础将大大简化整个过程。你可以免费开始使用 CircleCI,开始构建支持安全、可扩展的 AI 辅助开发的验证工作流。

了解更多

>构建未来