文章目录
前言
这两年AI大模型火得一塌糊涂,各种新概念层出不穷。刚搞清楚什么是大模型,又冒出个RAG;刚弄明白Agent,又来一个MCP。很多后端开发同学看着这些术语一脸懵:“我一个写Java的,为啥要懂这些?”
但现实是,不管你写不写AI应用,你的IDE(Cursor)、代码助手(Claude Code)、甚至未来的运维工具,都在往AI方向进化。不懂这些概念,你连工具怎么用都搞不明白,更别说自己开发了。
这篇文章用后端开发能听懂的大白话,把LLM、Prompt、RAG、Agent、MCP、Skill这六个核心概念一次性讲透。
一、LLM(大语言模型)——那个"聪明的大脑"
全称:Large Language Model
一句话解释:就是ChatGPT、Claude、文心一言背后的那个"AI大脑"。
通俗理解:
LLM就像一个读过全世界书籍的超级学霸,你问什么它都能答上来。但它有几个致命缺陷:
- 记不住你的私有数据(不知道你公司的代码库)
- 没法动手干活(不能操作数据库、不能调API)
- 容易胡说八道(专业领域会编造答案)
这就是为什么我们需要后面那些技术来"武装"它。
后端视角:你可以把LLM看作一个远程API服务(OpenAI API、Anthropic API),输入文字返回文字,核心关注点只有三个——延迟、成本、输出质量。
二、Prompt(提示词)——你跟AI说话的方式
一句话解释:输入给LLM的文本指令,用于引导模型生成符合预期的输出。
核心区分:Prompt不是"一句话"那么简单,它分为两个层级:
① System Prompt(系统提示词)——给AI定"人设和规矩"
作用:设定AI的角色身份、能力边界、输出格式、行为约束。由开发者或产品经理预设,贯穿整个对话生命周期,用户通常看不到完整内容。
通俗理解:就像给员工发《岗位说明书》——“你的职位是资深Java架构师,说话要专业严谨,优先推荐Spring生态方案,不确定的事情直接说不知道。” AI从头到尾都得按这套规矩办事。
示例:
你是一位资深Java后端工程师,精通Spring Boot、微服务架构和性能调优。
回答问题时必须遵守以下规则:
1. 给出的代码示例必须可直接运行
2. 优先推荐生产级方案,拒绝过度设计
3. 涉及配置时,同时给出application.yml和application.properties两种格式
4. 如果不确定答案,明确回复"我无法确认",不要编造
② User Prompt(用户提示词)——用户真正想问的问题
作用:用户在当下对话中提出的具体任务或问题。每次对话都不一样,是动态变化的内容。
通俗理解:就是你打开ChatGPT后敲进去的那句话——“我项目启动报DataSource错误,帮我看看"或"最近失眠怎么办”。
示例(承接上面的System Prompt):
我的Spring Boot 3.2应用启动时报错:
"Failed to configure a DataSource: 'url' attribute is not specified"
application.yml里明明配置了spring.datasource.url,
可能是什么原因?怎么排查?
完整交互流程
┌─────────────────────────────────────────────────────┐
│ 开发者预设(固定,用户不可见) │
│ System Prompt: "你是Java架构师,按规范回答..." │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ 用户输入(动态,每次不同) │
│ User Prompt: "启动报DataSource错误,怎么排查?" │
└─────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ LLM组合处理: │
│ 以System Prompt定义的"人设"身份,回答User Prompt │
│ 提出的具体问题 │
└─────────────────────────────────────────────────────┘
后端视角:System Prompt是可复用的配置模板(类似Spring的@Configuration),User Prompt是具体请求参数(类似@RequestBody)。好的Prompt工程需要平衡"约束力"和"灵活性"——System Prompt太死板会扼杀创造力,太宽松又容易跑偏。
三、RAG(检索增强生成)——给AI配个"外挂知识库"
全称:Retrieval-Augmented Generation
一句话解释:就是给LLM外挂一个可检索的知识库,让AI在回答前先去这个知识库里查资料,再基于真实资料生成答案。
通俗理解:
你问LLM:“我们公司的订单表结构是什么?”
- 没有RAG:AI瞎编一个订单表给你。
- 有RAG:AI先去你的知识库(项目代码、内部文档、数据库Schema)里检索,找到真正的订单表DDL,再基于这个真实信息回答你。
你可以直接把RAG理解为"AI的外挂知识库",区别在于:
- 传统知识库像本地硬盘——文档存进去了,但AI不会主动去读,全靠你手动复制粘贴。
- RAG知识库像挂载到AI上的高速SSD——你问问题时,AI自动去这块硬盘里检索相关内容,读完再回答。
这就是Cursor能"读懂"你整个项目代码的原理——它把你本地代码向量化后存入知识库,你提问时自动检索相关片段,再喂给LLM。
后端视角:RAG本质上是一个离线建库 + 在线检索 + 结果注入的标准流程:
离线阶段(构建知识库):
- 文档切块(Chunking)——切大了浪费Token,切小了丢失上下文
- 向量化(Embedding)——用Embedding模型将文本转成向量
- 存入向量数据库(Milvus、PG Vector、Elasticsearch)
在线阶段(检索增强):
- 用户问题向量化
- 向量检索TopK相似文档
- 重排序(Reranker)——进一步精排
- 拼入Prompt上下文
- 发给LLM生成答案
核心难点:分块策略(语义完整性 vs Token消耗的平衡)、索引更新一致性(代码变了知识库必须同步更新)、检索精度(误召回会污染答案)。
四、Agent(智能体)——让AI"自己动手干活"
一句话解释:AI不再是一问一答的被动模式,而是能自主规划步骤、调用工具、观察结果、反复迭代,直到完成复杂任务。
通俗理解:
- 普通LLM:你问"查下小王上个月请了几天假",它回答"我查不到,请把数据给我"。
- Agent模式:你问同一句话,AI说"稍等" → 自动调HR系统API → 拿到数据 → 算天数 → 返回结果给你。中间所有步骤自动完成,不需要你手动介入。
Claude Code的"自动修复bug"就是典型Agent——它自己读报错日志 → 搜索相关代码 → 分析原因 → 修改代码 → 跑测试验证,全程你只需要看着它干活。
后端视角:Agent的核心模式叫ReAct(Reasoning + Acting),伪代码如下:
while not task_done and loop_count < max_steps:
thought = llm.think(state) # 思考:下一步该做什么
action = select_tool(thought) # 决策:选哪个工具
observation = execute_tool(action) # 执行:调用工具并观察结果
state = update(state, observation) # 更新:把结果记入上下文
loop_count += 1
后端开发需要关注的核心问题:循环终止条件设计(别让它无限转圈)、熔断机制(超时强制退出)、工具调用超时重试、上下文窗口溢出防护——全是咱们熟悉的分布式系统稳定性问题。
五、MCP(模型上下文协议)——AI的"万能插座"
全称:Model Context Protocol(由Anthropic公司提出)
一句话解释:统一了AI调用外部工具/API的接口标准,让LLM能通过同一套协议访问数据库、文件系统、第三方服务等各种外部资源。
通俗理解:
没有MCP时,要让AI查数据库,你得写代码把MySQL结果转成文本塞给AI;要让它发邮件,又得另写一套。每个工具都要单独适配,开发量巨大。
有了MCP,所有工具都遵循同一个接口规范(统一的输入输出格式、错误码、鉴权方式)。AI只需要学会MCP这一种"语言",就能调用任何接入了MCP协议的工具。
类比:就像USB-C接口,不管插的是显示器、硬盘还是充电器,只要都是USB-C,电脑就能识别。MCP就是AI领域的"USB-C标准"。
后端视角:MCP本质上是一个标准化的工具描述协议,类似OpenAPI/Swagger之于REST API。它定义了:
- 工具的名称、描述、参数Schema(JSON格式)
- 调用方式(同步/异步)
- 返回结果结构
- 错误码规范
后端开发只需要把现有的内部API、数据库操作、脚本工具封装成MCP标准格式,AI就能直接调用,无需为每个AI应用重复开发适配层。
六、Skill(技能)——给AI装个"快捷指令包"
一句话解释:将高频、固定的操作流程预先封装成可复用的指令模板,AI遇到特定场景时直接加载执行,不用每次都重新描述。
通俗理解:
你每天都让AI帮你做代码审查,每次都重复说:“检查命名规范、查空指针、看事务注解加没加、检查日志打印”。烦不烦?
有了Skill,你把这些固定步骤存成一个叫/code-review的Skill。之后每次敲/code-review,AI自动执行整套流程,不用重复唠叨。
类比:就像IDE里的代码片段(Code Snippets)或宏命令——把高频操作固化成"一键执行"。
后端视角:Skill是System Prompt的模板化封装。一个Skill包含:
- 触发词(如
/review) - 预置的System Prompt(定义角色和规则)
- 关联的工具列表(可能需要调用哪些MCP工具)
- 输出格式要求
本质上就是**策略模式(Strategy Pattern)**的AI版——不同场景加载不同策略,复用性强,维护成本低。
完整关系图谱
把这六个概念串起来,整个AI应用架构就清晰了:
┌─────────────────────────────────────────┐
│ 用户(你) │
└─────────────────────────────────────────┘
│
▼
┌───────────────────┐
│ User Prompt │ ← 你每次问的具体问题
│ (动态输入) │
└───────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ System Prompt │
│ (开发者预设的"人设+规则") │
│ 如:"你是Java架构师..." │
└─────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────┐
│ LLM(大模型) │
│ ——那个"聪明的大脑" │
└─────────────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ RAG模块 │ │ Agent模块 │ │ Skill模块 │
│ 外挂知识库 │ │ 自主规划执行 │ │ 快捷指令模板 │
└──────────────┘ └──────────────┘ └──────────────┘
│ │ │
└────────────────────┼────────────────────┘
▼
┌─────────────────────┐
│ MCP协议层 │
│ (万能插座/标准化接口)│
└─────────────────────┘
│
┌────────────────────┼────────────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 数据库 │ │ 文件系统 │ │ 第三方API │
└─────────────┘ └─────────────┘ └─────────────┘
总结:一句话记忆法
| 概念 | 一句话记住它 |
|---|---|
| LLM | 那个聪明的AI大脑(大模型) |
| System Prompt | 给AI定的"岗位说明书"(固定人设+规则) |
| User Prompt | 你每次问AI的那句话(具体问题) |
| RAG | AI的外挂知识库(自动检索+增强回答) |
| Agent | AI自己规划步骤、自动干活(自主智能体) |
| MCP | AI调用外部工具的"万能插头"(标准化协议) |
| Skill | 存下来的固定套路,一键复用(快捷指令) |
如需深入了解LLM应用开发中的System Prompt工程化设计、RAG知识库构建与向量数据库选型对比、Agent ReAct模式实现与熔断机制、MCP协议封装实战、Skill模板化管理与版本迭代等内容,请持续关注本专栏《大模型应用开发实战》系列文章。

1224

被折叠的 条评论
为什么被折叠?



