Skip to content

AI 应用开发:大模型 API·RAG·Agent·MCP

前面是“用 AI 写代码”,这一章是“写调用 AI 的代码”。

你将学会

  • 调通一次大模型 API,并处理流式与错误;
  • 把提示词当代码来管理(模板化、版本化、评测);
  • 搭一个 RAG 最小闭环(检索 + 拼上下文);
  • 理解工具调用与 Agent 的循环;
  • 知道 MCP 是什么、解决什么问题;
  • 为 AI 应用做基本的评测与可观测。

前置知识

安全与合规(密钥管理)与代码质量与审查

一、调用大模型 API

一次请求的基本结构:

text
请求:模型名 + 消息列表(system / user / assistant)+ 参数(温度等)
响应:生成的文本(或流式分片)+ 用量(token 数)

要点:

  • 流式输出:边生成边显示,体验好,但要做好分片拼接;
  • 出错要兜:超时、限流、余额不足都要有明确提示与重试;
  • 算成本:token 用量直接等于钱,界面上最好给个上限。
text
# 最小请求(伪代码)
messages = [{ role: 'system', content: '你是简洁的助手' },
            { role: 'user',   content: userInput }]
return callModel({ model: 'xxx', messages, stream: true })

二、提示词即代码

生产环境里,提示词不是随手打的字,而是要管理的资产

  • 模板化:把提示存成文件/常量,变量用占位符;
  • 版本化:改提示走代码审查,能对比、能回退;
  • 评测:准备一组固定样例,改完提示跑一遍,看是变好还是变坏。

三、RAG 最小闭环

RAG(检索增强)= 先查资料,再让模型基于资料回答。

text
文档 → 切分 → 向量化 → 存库
用户提问 → 向量化 → 检索 top-k → 拼进提示 → 模型回答

最小实现:文档切块 → 存进向量库(或简单的关键词检索)→ 查询时取最相关的几块拼进提示。 先做最小闭环,再谈优化——很多“效果不好”其实是检索没找对,而不是模型不行。

四、工具调用与 Agent

  • 工具调用:你把可用的函数(查天气、读数据库、发邮件)告诉模型,模型决定“调哪个、传什么”;
  • Agent 循环:模型 → 调用工具 → 拿到结果 → 再决定下一步,直到完成;
  • 工程要点:给循环设上限(步数、时间、花费)、失败要能停下来、危险操作要人工确认。

五、MCP 与集成

MCP(Model Context Protocol)是把外部工具与数据接给模型的通用协议:一次接入,多个模型/工具都能用。 用途:让模型读写你的文件、查你的数据库、调你的内部系统——不必每个应用各写一套胶水。

六、评测与可观测性

“感觉变好了”不算数。至少要有:

  • 固定评测集:一组带期望答案的样例,改动前后各跑一次;
  • 日志:记录每次请求的输入、输出、耗时、用量;
  • 兜底:模型挂了/超时要降级(返回兜底文案、稍后重试)。

动手练习

  1. 写一个最小脚本,调通一次大模型 API,并打印用量。
  2. 做一个“文档问答”最小应用:给一段文档,提问能引用原文作答。
  3. 给它加上步数/费用上限与失败提示。

检查点

  • 能画出你的 AI 应用的数据流图(输入 → 检索 → 模型 → 输出);
  • 能说出一次调用的成本来自哪里;
  • 能为一次提示改动做“改前/改后”的对比评测。

常见问题

Q:一定要上向量数据库吗? 不一定。数据少时关键词检索就够;但先别优化,先用最小闭环验证“回答对不对”。

Q:Agent 会不会失控乱调工具? 会。所以要有步数/花费上限、危险操作白名单、以及人工确认点。

小结与下一步

到这里你已经能“用 AI 做产品”也能“做 AI 产品”。最后一步:把它变成可维护、可协作的工程——工程化与团队协作

陶渊明的小院 · 基于 VitePress 构建