AI应用开发的核心链路:模型、上下文、工具、记忆和评测

你有没有这样的体验:你提一个问题给在线的大模型,它回答地得头头是道。但是你开发调用API,把它包装成公司内部AI助手上线,第一天就收到投诉:引用的制度是两年前废止的版本。

这不是模型"不够聪明"的问题。从一次流畅的演示到一个能持续交付正确结果的AI应用,中间隔着一条完整的软件工程链路。

这篇文章沿着一个内部制度助手从原型到可用的实践过程,分析下一个AI应用的开发过程,一般涉及到哪些方面。

做DEMO简单,但是很难用起来

很多一知半解的人利用AI简单做出个DEMO来,就以为AI很厉害可以快速做出产品,也有很多领导不清楚背后的工程,以为AI这也能实现那也能实现,其实并不是这样的。

假如要做一个内部制度助手。通常是利用大模型的API,把员工的问题直接发过去,让模型回答。演示阶段效果不错——问"年假可以结转吗",模型给出了详细解释,语气专业,格式工整。

如果真的开始使用。有人问"今年病假扣不扣工资",模型给了一个言之凿凿的答案,但很可能有会引用的是三年前的旧规定。有人问"我还剩几天年假",模型编出了一个数字。有人说"帮我提交下周三的请假",模型回复"好的,已经帮你提交了"——当然背后什么也没发生。

这些失败的共同原因是:模型只是在当前输入的基础上生成文本,它不知道公司今年的制度改了什么,不知道这个人的考勤数据,也没有能力真正提交一份请假单。

怎样才算"回答对了"?

针对前面的这些问题,你可能会找一个更强的模型。

但是在换模型之前,有一个更基础的问题没解决:这个助手在什么情况下算是工作正确?

制度问答看起来简单,拆开看却有好几种不同的要求:

  • 回答年假政策,需要引用的是现行有效的条款,而不是模型训练数据里的旧版本。

  • 回答个人余额,需要的是HR系统里这个人当前的真实数据。

  • 提交请假,需要把申请写入审批系统并返回一个真实的单号。

这三种场景对"正确"的定义完全不同,对应用能力的要求也逐级上升。如果不先把这些标准理清楚,开发会不断陷入"模型回答看起来不错但又说不清哪里不对"的循环。

任务定义不只是写一句话。它包括:

  • 这个助手面对的用户是谁

  • 允许它使用哪些信息来源

  • 回答必须满足什么准确性要求

  • 哪些场景需要执行动作,动作失败了怎么处理。

这些内容和模型无关,但决定了后续每一个技术选择。

每次模型推理,能看到些什么信息?

很多人对大模型有一个直觉上的误解:觉得它"知道很多",所以应该能回答企业内部的问题。

实际上,模型在每次推理时能看到的信息,只有这一次请求中被送入的内容。这些内容通常包括几个部分:

  • 系统指令告诉它身份和行为规则

  • 用户的问题是当前要处理的输入

  • 如果应用做了检索或工具调用,那些结果也会被放进来

  • 多轮对话中前面的消息也可能被保留

所有这些加在一起,构成了模型当前一次推理的上下文。

上下文有两个容易忽略的特点。

第一,它是有限的。即使最新的模型已经支持很长的输入窗口,把整个知识库或全部对话历史一股脑塞进去,效果往往不好——信息太多反而会让模型在不相关的内容中迷失。

第二,上下文不是记忆。这一次推理结束后,模型不会自动记住任何内容。下一次请求如果不重新提供相关信息,模型就和第一次见面一样。

回到制度助手的例子:如果系统只把员工的问题直接发给模型,模型的上下文里只有这句问题。它不知道公司今年更新了哪些制度,不知道这个员工的部门和入职年限,也不知道前一次对话里已经确认了哪些信息。要让回答准确,就必须在发送给模型之前,把相关的材料组织好放进上下文——这件事不是模型做的,是应用做的。

AI应用获取外部信息

上下文解决了"模型看到什么"的问题,但有些信息不是提前准备好就够的。

员工问"年假可以结转吗",答案藏在公司的制度文档里。这些文档不在模型的训练数据中,但它们是相对稳定的——可以提前处理、索引,在用户提问时检索出最相关的段落,放入当前上下文。这就是检索增强生成(RAG)在做的事情:在生成回答之前,先从指定的知识源中找到相关依据,让模型基于真实材料回答,而不是凭训练时的印象编造。

但员工接着问"我还剩几天年假",这就不是检索文档能解决的了。余额是这个人在HR系统里的实时数据,每请一次假就变一次。要获取这个数据,应用必须在推理过程中去调用一个外部接口——查询HR系统,拿到结果,再把结果放回上下文让模型继续回答。

再进一步,员工说"帮我提交下周三到周五的请假",这已经不只是读取数据,而是要执行一个动作——在审批系统里创建一条申请记录。这个动作有后果:提交成功了要返回单号,提交失败了要告诉员工哪里出了问题。

检索工具调用是两种不同的外部能力。

检索从已有的知识源中找信息,帮助构造上下文;

工具让应用读取实时数据或在外部系统中执行操作。

两者的风险等级也不同——检索最多返回不够相关的结果,工具调用却可能产生真实影响,比如提交了一份有错误的请假单。

当工具越来越多、接入的系统越来越杂,连接方式本身也需要管理。MCP(Model Context Protocol)就是为此设计的一种开放协议:它规定了AI应用怎样用统一的方式发现和调用外部能力,但它不替应用决定该调用哪个工具、调用顺序是什么,也不负责业务逻辑。协议解决的是连接和交换,业务判断仍然是应用自己的事。

对话的状态和记忆

到目前为止,助手可以查制度、读余额、提交请假。但是每一次这样的交互上下文都是独立的。

员工上午提交了请假申请,下午来问"我上午提交的请假批了吗"。如果系统没有保留上午的交互状态,它不知道"上午的请假"指的是哪一条,只能让员工重新说一遍所有细节。

这就是状态和记忆需要解决的问题。

状态和记忆可以分成两个层面:

  • 短期记忆 通常是一次连续会话中需要保持的上下文——员工说了什么、系统做了什么、当前进行到哪一步。这些信息让同一次对话中的后续回合能自然衔接,而不是每次都从头开始。

  • 长期记忆 长期记忆则跨越不同的会话。这个员工上个月提交过一次加班调休,三个月前修改过紧急联系人,这些信息在未来的某次交互中可能有用——但"可能有用"不等于"应该全部保存"。保存全部聊天记录不是记忆,那只是日志。真正的记忆需要选择:什么信息在未来真正有价值,什么时候把它召回到当前上下文,什么时候更新或删除过时的记录

记忆不是模型自带的能力,而是应用层面的设计

模型每次推理仍然只看当前上下文——记忆系统的职责是在合适的时机把合适的历史信息重新放回上下文,让模型以为它"记得"。保存什么、保存多久、什么情况下召回、谁有权查看,都需要应用来决定。

怎样评估应用质量

信息来源、外部能力和状态管理都建好之后,团队面对的最后一个问题是:怎样证明这套系统在持续地正确工作?

依赖主观试用是不够的。产品经理问了十个问题,觉得回答都不错,但这十个问题可能恰好避开了所有边界情况。制度更新了一条,系统还在引用旧版本,可能过了两周才有人发现。工具调用偶尔超时,模型悄悄跳过了提交步骤,用户看到的是"已处理"但实际上什么也没发生。

评测不是上线前做一次验收,而是一个持续运行的质量闭环。

建立评测至少需要几个要素:

  • 一组有代表性的任务 不只是简单的问答,还要包括需要检索的、需要调用工具的、信息不完整的、接口返回异常的。

  • 每个任务对应的成功标准 制度问答是否引用了正确版本,余额查询是否返回了真实数字,请假提交是否拿到了有效单号。

  • 过程检查 评测不只看最终回答,还可以检查过程:模型是否调用了正确的工具,是否在该追问的时候追问了,是否在工具调用失败后做出了合理的回退。这些过程信息——通常称为轨迹——对诊断问题非常有价值。一个回答正确的结果背后可能是偶然命中,一个回答错误的结果背后可能只是检索排序的小问题。

有一点需要特别注意:模型说"我已经帮你提交了请假申请",这不等于真的提交成功了。模型只是在生成文本,它不知道API有没有返回成功。评测必须去检查真实的环境结果——系统日志、数据库记录、API返回值——而不是模型的自我报告。

这张图展示的是一个最简单的AI应用的核心闭环。

业务任务和成功标准是起点,检索和记忆为当前上下文提供信息,模型基于上下文生成内容或决定下一步,工具连接外部系统执行操作,结果和过程轨迹进入评测环节,评测发现的问题再反馈回系统的各个环节进行改进。

不是每个应用都需要启用图中的全部组件——一个简单的文档问答可能只需要检索和模型,不需要工具和复杂的状态管理。

同样,一个非常复杂的AI项目软件,也远不止图上这些组件模块。

不是所有应用都需要用Agent

走到这里,有些读者可能会想:这不就是在描述一个AI Agent(智能体)吗?

不完全是。Agent是一种特定的运行方式:面对一个任务,由模型根据当前观察决定下一步做什么——可能是调用某个工具,可能是追问用户,可能是在工具返回结果后调整计划。

Agent的核心特征是动态决策:步骤不是预先写死的,而是模型在过程中根据情况选择的

但很多AI应用并不需要这种动态性。

制度助手回答"年假能不能结转",只需要检索相关条款再生成回答,步骤固定、路径明确,一个包含检索增强的单次模型调用就够了。查询个人年假余额,调用HR接口取数据再格式化返回,步骤也是固定的,用一个简单的工作流串起来就行。

只有当任务变得真正不确定——比如员工说"帮我请假",但缺少交接人信息,系统需要追问;追问后发现日期和团队活动冲突,需要建议调整;调整后提交接口超时,需要决定是重试还是换一个方式——这种场景下,步骤无法提前写完,才真正需要Agent来根据中间结果动态决定下一步

做一个应用选择架构的原则是:

  • 用能解决问题的最简单方案

  • 单次调用能搞定的不需要工作流

  • 固定工作流能搞定的不需要Agent。

Agent带来灵活性,但也带来更高的调试难度、更大的评测范围和更多的不可预测行为。

在很多实际项目中,一个好的RAG管道加上几个固定步骤的工具调用,比一个设计不充分的Agent可靠得多。

进一步学习

前面我们沿着一个制度助手的演进,把一个AI应用的核心链路走了一遍:先定义任务和成功标准,再组织上下文让模型获得正确的信息,通过检索和工具接触外部世界,用状态和记忆支持持续交互,最后用评测闭环持续验证结果。

这条链路不绑定任何框架或产品。无论用哪种模型、哪种开发工具,这些环节的问题都需要回答。

如果你对其中某个环节想深入了解:

参考资料

  1. Anthropic: Building effective agents — 区分预定义工作流与Agent,增强LLM可结合检索、工具和记忆。

  2. OpenAI: A practical guide to building AI agents — Agent适合需要动态工具调用和护栏的场景。

  3. Anthropic: Demystifying evals for AI agents — 评测需要任务、试验、评分器和轨迹,模型声称完成不等于真实结果。

  4. MCP官方架构文档 — Host-Client-Server架构,定义工具、资源和提示等上下文交换能力。

  5. RAG原始论文 (Lewis et al., 2020) — 把参数化模型与可检索知识结合用于知识密集型生成。

分享协议:  CC BY 4.0

©2026 AI全书. 保留部分权利

    备案号: 浙ICP备06043869号-8