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 | 创建订单 |
开发者需要提前确定:
- 执行顺序
- 判断条件
- 异常处理
- 数据结构
- 调用关系
因此,传统软件本质上是:
将业务规则转换为可执行程序。
这种方式对于规则明确、边界清晰的业务非常有效,也是现代软件工程成功的基础。
1.3 软件开始面对越来越多的开放性任务
近年来,软件处理的问题发生了变化。
越来越多的新需求无法完全用固定规则描述。
例如:
- 总结一份几十页的技术文档。
- 根据企业制度回答员工问题。
- 分析销售下降原因。
- 阅读合同并提取风险点。
- 根据用户需求生成 SQL。
- 自动编写代码并修复错误。
这些任务有几个共同特点:
第一,它们没有固定算法。
例如”分析销量下降原因”,并不存在唯一正确的执行流程。
不同的数据、不同的行业、不同的分析角度,都可能得到不同的分析路径。
第二,输入具有开放性。
用户不再按照固定格式输入参数,而是直接表达自己的目标。
例如:
分析最近一个季度利润下降的原因,并提出改进建议。
对于软件来说,这不是一个函数调用,而是一段自然语言。
第三,完成任务需要动态决策。
系统需要根据中间结果决定下一步动作。
例如:
查询数据库后发现库存异常,接下来可能需要继续分析供应链数据,而不是按照预设流程继续执行。
传统的软件设计方法,并不擅长处理这类问题。
1.4 LLM 提供了一种新的能力
大语言模型(Large Language Model,LLM)的价值,并不仅仅在于生成自然语言。
对于软件工程而言,更重要的是另一种能力:
理解自然语言,并将其转换为可执行的推理过程。
例如:
输入:
统计最近半年销售额下降最快的产品。
模型能够理解:
- “销售额”对应企业中的哪个业务概念;
- “最近半年”表示时间范围;
- “下降最快”意味着需要计算变化率;
- 最终目标是完成分析,而不是简单返回数据。
这意味着,软件第一次拥有了理解自然语言目标的能力。
需要强调的是:
LLM 并没有改变软件工程的基本原则。
它只是增加了一种新的能力:
让软件能够处理过去难以形式化描述的问题。
1.5 仅有 LLM,并不能完成复杂任务
如果把 LLM 看作一个文本生成器,那么它能够完成的是:
1 | 输入 |
这种模式适合回答问题、生成内容、翻译文本等一次性交互。
但是,真实的软件任务通常包含更多步骤。
例如:
生成一份销售分析报告。
完成这个任务可能需要:
1 | 理解目标 |
这里不仅需要模型生成文本,还需要:
- 获取外部数据;
- 调用工具;
- 管理上下文;
- 根据执行结果调整后续动作。
这些能力已经超出了 LLM 本身的职责。
因此,仅有模型,并不足以构建真正的软件系统。
1.6 AI Agent 的出现
AI Agent 正是在这样的背景下出现。
它并不是一种新的模型。
也不是某一种开发框架。
Agent 更接近一种新的软件组织方式。
它负责:
- 接收目标;
- 组织执行过程;
- 协调模型与工具;
- 管理任务状态;
- 在任务完成前持续运行。
LLM 在其中承担的是推理能力,而 Agent 负责组织整个执行过程。
因此,两者的关系可以表示为:
1 | User Goal |
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