现代 AI 应用技术栈,端到端全览
一张清晰的地图,画出构成一个真实 AI 应用的各层——模型、编排、检索、评估,以及那把它们黏在一起、毫不起眼的胶水。
人们在脑海里描绘一个 AI 应用时,描绘的是模型。但模型只是若干层中的一层,而决定一个 AI 功能能否真正运转的东西,大多住在它周围那些毫不起眼的层里。理解整个技术栈——每一块做什么、为什么存在——能把"AI 是不可预测的魔法"变成一组你能推理、调试和改进的组件。这是一张端到端的地图,从用户的输入到模型再返回,并对每一层在哪里凭实力立足给出诚实的注解。
模型层:能力,而非应用
居于中心的是模型本身,由某个提供商托管,或你自己运行。这是原始的能力:文本进、文本出,中间夹着一些推理。它至关重要,同时也是你掌控最少的那一层,因为你大多是在若干选项之间挑选,而非构建它。误区在于把这个选择当成整个项目。一个强大的模型接进一个糟糕的应用里,表现会不如一个普通模型置身于一个搭建良好的应用中。
实务上,这一层是一个带取舍的决定:托管对自运行、更大对更小、通用对专用。每一种都有成本、延迟、隐私和能力上的牵连。正确的取舍取决于你的任务,而且——重要的是——它是可替换的。把架构设计成你日后能换掉模型(随着选项变好或你的需求改变),是你在早期能做的杠杆率最高的架构决定之一。
编排层:把调用变成行为
单次模型调用很少能算一个应用。真实的功能会串联调用、依结果分支、失败时重试、调用工具,并从多个来源拼装提示。编排层就是协调这一切的代码——决定发送什么、按什么顺序、以及拿每个回应怎么办。这里住着你应用真正的逻辑,也是大部分工程投入流向之处。
编排也是复杂度悄悄累积的地方。每多加一步——一次检索调用、一次工具调用、一次为核查头一遍而做的第二次模型调用——都增添延迟、成本,以及一种新的失败方式。这里的纪律是只在某一步凭实力赢得位置时才加它,并让流程简单到当某处出错时你还能推理出发生了什么。一条你追踪不了的流水线,是一条你修不了的流水线。
上下文层:提示、检索与记忆
模型只知道摆在它面前的东西。上下文层就是拼装模型所见之物的一切:那个为任务定调的提示、那些把答案接地到你数据上的检索文档,以及一段对话里此前轮次的任何记忆。这常常是决定质量的那一层,因为同一个模型,依给它什么上下文,会产出天差地别的结果。
检索归属这里。当一个应用用你自己的文档作答时,这一层把查询嵌入、找出相关段落、并把它们折进提示里。记忆也归属这里——决定一段对话里更早的内容有哪些值得带着往前、哪些该丢掉。做得好,这一层让一个通用模型仿佛知晓你那个具体的世界。做得糟,它给模型喂不相关或自相矛盾的材料,而你却为结果去怪模型。
工具层:让模型去行动
一个只能产出文本的模型是受限的;许多有用的应用需要模型去做事情——查询实时数据、跑一个计算、查一个数据库、调用一个外部服务。工具层定义了模型可用的那些动作,并在模型请求时安全地执行它们。模型决定做什么;你的代码决定它是否以及如何真正发生。
关键的词是安全地。工具是一个 AI 应用触碰真实世界的地方,这意味着它们是错误会产生超出"一个糟糕句子"之后果的地方。这一层需要护栏:校验模型所请求的内容、限制它能触及的范围、并对不可逆的动作加以确认。把模型的工具请求当作不可信的输入,因为它实质上就是——模型是在建议一个动作,而非授权它,权威握在你的代码手里。
评估层:知道它是否管用
传统软件要么工作、要么抛出错误。AI 应用的失败更微妙:它们产出看似合理却错误的输出,并在你改提示或换模型时悄悄退化。评估层就是你借以知晓系统是否真在干它该干的活的办法——一组有代表性的测试案例,外加一种对照它们衡量质量的方法,持续地运行,而非只靠肉眼瞥几个输出来检查一次。
这一层是团队最常跳过、也最常为跳过它而后悔的一层。没有它,每一次改动都是一场赌博:你改善了一个案例,又悄无声息地弄坏了另外三个,却没有办法察觉。哪怕有一套不大的评估集,你也能换模型、调提示或加一步检索,并衡量你是帮上了忙还是帮了倒忙。评估正是把 AI 开发从猜测变成工程的东西,而它值得在你以为需要它之前就建起来。
可观测性与成本层:在明处运行它
一个 AI 功能一旦上线,你就需要看到它在做什么。可观测性层记录提示、检索到的上下文、模型回应、工具调用、延迟和成本。当一个用户报告一个糟糕的答案时,这就是你借以重建实际发生了什么、而非靠猜的办法。AI 系统是非确定性的,这让好的日志记录比在普通软件里更重要,而非更不重要。
成本与可观测性并肩而居,因为在 AI 应用里,成本是一种运行时属性,而非一笔固定的明细。每一次调用都消耗 token,每一次检索都增添上下文,每多一步编排都成倍放大用量。没有可见性,成本会无人留意地往上漂,直到一张账单或一道速率限制逼出这场对话。把成本当作一等信号来盯——按请求、按功能、随时间——能阻止经济性悄悄拖垮产品。
各层如何拼合在一起
追踪单个请求,技术栈就具体了起来。用户的输入到达,编排层接管,上下文层连同任何检索到的文档拼装出一个提示,模型产出一个回应,工具层执行模型请求的任何动作,结果返回——与此同时,可观测性层记录下整段旅程,而评估层在线下持续核查像它这样的旅程是否仍然顺利。每一层都可替换,而任何一层的薄弱都会给整体的质量封顶。
战略性的洞见是:这些层各自独立地失败和改进。一个令人失望的应用通常只有一层薄弱,而非根本上设计糟糕。诊断出是哪一层——糟糕的检索、马虎的编排、一个不安全的工具、没有评估——正是稳步改进自家 AI 功能的团队,与那些不停换模型、盼着下一个能修好一切的团队之间的区别。
总结
一个现代 AI 应用是一个技术栈,而非一个模型。模型供给能力,但编排协调它,上下文层喂养它,工具层让它行动,评估告诉你它是否管用,而可观测性让你在光天化日下运行它。大部分质量和大部分成本,住在模型周围那些层里,而非模型本身。带着这张地图去构建,AI 开发就不再感觉像魔法,而开始感觉像它本来的样子:普通的工程,只是中心多了一个异常不可预测的组件。
