陶玉印的博客

企业数据治理、数据仓库、数据质量、AI应用实践与研究

0%

软件为什么需要 AI Agent?

Chapter 1 软件为什么需要 AI Agent?

Part I Foundations

核心问题:为什么 AI Agent 会出现?

本章结论:AI Agent 的出现,并不是因为大模型足够强,而是因为传统软件越来越难以应对开放性任务。


Learning Objectives

完成本章后,应能够理解:

  • 软件为什么需要新的执行范式
  • AI Agent 解决的核心问题是什么
  • 为什么 LLM 是 Agent 的基础,但 LLM 不等于 Agent
  • Agent 在软件工程中的定位

本章只讨论 Agent 出现的原因,不讨论 Agent 的定义、组成和实现。这些内容将在后续章节展开。


1.1 软件的发展,本质是在降低复杂度

软件工程的发展历史,本质上是一部持续控制复杂度的历史。

每一次重要的技术演进,都源于上一代开发模式无法继续支撑软件规模的增长。

例如:

阶段 主要问题 解决方案
汇编语言 开发效率低 高级语言
结构化编程 流程混乱 函数、模块
面向对象 系统复杂 封装、继承、多态
MVC 职责耦合 分层设计
微服务 单体过大 服务拆分
云原生 运维复杂 自动化资源管理

这些技术的发展方向并不相同,但目标一致:

降低软件系统的复杂度,提高软件的可维护性。


1.2 传统软件擅长解决确定性问题

过去几十年的软件开发,建立在一个共同假设之上:

开发者能够提前定义系统的执行过程。

例如,一个订单系统可以抽象为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
创建订单



校验库存



计算价格



生成支付单



支付完成



发货

开发者需要提前确定:

  • 执行顺序
  • 判断条件
  • 异常处理
  • 数据结构
  • 调用关系

因此,传统软件本质上是:

将业务规则转换为可执行程序。

这种方式对于规则明确、边界清晰的业务非常有效,也是现代软件工程成功的基础。


1.3 软件开始面对越来越多的开放性任务

近年来,软件处理的问题发生了变化。

越来越多的新需求无法完全用固定规则描述。

例如:

  • 总结一份几十页的技术文档。
  • 根据企业制度回答员工问题。
  • 分析销售下降原因。
  • 阅读合同并提取风险点。
  • 根据用户需求生成 SQL。
  • 自动编写代码并修复错误。

这些任务有几个共同特点:

第一,它们没有固定算法。

例如”分析销量下降原因”,并不存在唯一正确的执行流程。

不同的数据、不同的行业、不同的分析角度,都可能得到不同的分析路径。

第二,输入具有开放性。

用户不再按照固定格式输入参数,而是直接表达自己的目标。

例如:

分析最近一个季度利润下降的原因,并提出改进建议。

对于软件来说,这不是一个函数调用,而是一段自然语言。

第三,完成任务需要动态决策。

系统需要根据中间结果决定下一步动作。

例如:

查询数据库后发现库存异常,接下来可能需要继续分析供应链数据,而不是按照预设流程继续执行。

传统的软件设计方法,并不擅长处理这类问题。


1.4 LLM 提供了一种新的能力

大语言模型(Large Language Model,LLM)的价值,并不仅仅在于生成自然语言。

对于软件工程而言,更重要的是另一种能力:

理解自然语言,并将其转换为可执行的推理过程。

例如:

输入:

统计最近半年销售额下降最快的产品。

模型能够理解:

  • “销售额”对应企业中的哪个业务概念;
  • “最近半年”表示时间范围;
  • “下降最快”意味着需要计算变化率;
  • 最终目标是完成分析,而不是简单返回数据。

这意味着,软件第一次拥有了理解自然语言目标的能力。

需要强调的是:

LLM 并没有改变软件工程的基本原则。

它只是增加了一种新的能力:

让软件能够处理过去难以形式化描述的问题。


1.5 仅有 LLM,并不能完成复杂任务

如果把 LLM 看作一个文本生成器,那么它能够完成的是:

1
2
3
4
5
6
7
8
9
输入



模型



输出

这种模式适合回答问题、生成内容、翻译文本等一次性交互。

但是,真实的软件任务通常包含更多步骤。

例如:

生成一份销售分析报告。

完成这个任务可能需要:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
理解目标



查询数据库



执行统计分析



生成图表



整理结论



输出报告

这里不仅需要模型生成文本,还需要:

  • 获取外部数据;
  • 调用工具;
  • 管理上下文;
  • 根据执行结果调整后续动作。

这些能力已经超出了 LLM 本身的职责。

因此,仅有模型,并不足以构建真正的软件系统。


1.6 AI Agent 的出现

AI Agent 正是在这样的背景下出现。

它并不是一种新的模型。

也不是某一种开发框架。

Agent 更接近一种新的软件组织方式。

它负责:

  • 接收目标;
  • 组织执行过程;
  • 协调模型与工具;
  • 管理任务状态;
  • 在任务完成前持续运行。

LLM 在其中承担的是推理能力,而 Agent 负责组织整个执行过程。

因此,两者的关系可以表示为:

1
2
3
4
5
6
7
8
9
10
            User Goal


AI Agent
┌──────────┼──────────┐
▼ ▼ ▼
LLM Tools Memory


External Systems

Agent 并没有替代软件系统,而是在软件系统之上增加了一层新的执行能力。


1.7 Agent 解决的不是智能问题,而是工程问题

从工程角度看,Agent 的价值并不是”更聪明”。

真正改变的是软件组织方式。

过去,开发者需要提前定义完整流程。

未来,开发者更多定义的是:

  • 系统目标;
  • 可调用能力;
  • 执行约束;
  • 安全边界;
  • 评价标准。

至于具体执行路径,则由 Agent 在运行过程中动态决定。

因此,Agent 引入的软件工程问题包括:

  • 如何描述目标?
  • 如何规划任务?
  • 如何管理上下文?
  • 如何调用工具?
  • 如何评估执行结果?
  • 如何保证安全与可靠?

这些问题构成了后续整本书讨论的核心内容。


Summary

传统软件建立在确定性流程之上,适用于规则明确、执行路径可预定义的业务。

随着软件越来越多地处理开放性任务,固定流程逐渐成为限制因素。大语言模型提供了自然语言理解和推理能力,但模型本身无法完成完整的软件任务。

AI Agent 的出现,是为了将 LLM、工具、数据和业务系统组织成一个能够持续完成目标的软件执行体系。

因此,本书讨论的重点不是如何调用模型,而是如何设计、实现和运行一个企业级 AI Agent 系统。


References

References

[1] OpenAI.
A Practical Guide to Building Agents.
https://openai.com/business/guides-and-resources/a-practical-guide-to-building-ai-agents/

[2] Anthropic.
Building Effective AI Agents.
https://www.anthropic.com/engineering/building-effective-agents

[3] Google.
Agent Development Kit Documentation.
https://google.github.io/adk-docs/

[4] Russell, Stuart; Norvig, Peter.
Artificial Intelligence: A Modern Approach.
Pearson.

[5] Vaswani et al.
Attention Is All You Need.
https://arxiv.org/abs/1706.03762