大模型应用开发核心概念
背景
大模型应用开发围绕几个核心范式展开:Prompt 工程、RAG、Agent、Fine-Tuning、Function Call。理解它们各自解决的问题和相互关系,是构建 LLM 应用的基础。
Prompt(提示词)
给大模型的输入指令,本质是自然语言形式的任务说明书。Prompt 质量直接决定输出质量。
五要素:
| 要素 | 说明 | 示例 |
|---|---|---|
| Role | 定义模型身份 | "你是一个资深后端工程师" |
| Task | 明确要做什么 | "帮我 review 以下代码" |
| Context | 提供背景和输入 | 相关代码、业务背景 |
| Format | 约束返回形式 | "用 JSON 返回"、"分点列出" |
| Constraints | 限制和禁止项 | 字数限制、语言要求 |
RAG(检索增强生成)
Retrieval-Augmented Generation,解决大模型不知道私有数据、知识有时效性的问题。
关键组件: 文档切分(Chunking) → 向量化(Embedding) → 向量数据库(Milvus/Pinecone/Chroma) → 检索策略
优点: 知识可实时更新、可溯源、不需重新训练 缺点: 依赖检索质量,检索不准则回答不准
Agent(智能体)
解决大模型只能"说话"不能"做事"的问题。给模型配备工具,让它自主规划、调用工具、根据结果决策。
四大核心能力:
| 能力 | 说明 |
|---|---|
| Planning | 把复杂任务拆解为子步骤 |
| Tool Use | 调 API、查数据库、执行代码 |
| Memory | 短期记忆(对话上下文) + 长期记忆 |
| Reflection | 检查结果,自我纠错 |
典型框架:LangChain、AutoGen、CrewAI
Fine-Tuning(微调)
解决通用大模型在特定领域表现不够好的问题。用领域数据继续训练模型参数,让模型"内化"专业知识。
常见方式:
| 方式 | 特点 |
|---|---|
| 全量微调 | 训练所有参数,效果最好但成本最高 |
| LoRA / QLoRA | 只训练少量低秩适配参数,性价比高 |
| SFT | 用"指令-回答"对训练 |
| RLHF | 用人类反馈强化学习对齐偏好 |
优点: 模型深度内化知识,推理时无需额外检索 缺点: 数据准备成本高、训练需 GPU、知识更新需重新微调
RAG vs Agent vs Fine-Tuning
| 维度 | RAG | Agent | Fine-Tuning |
|---|---|---|---|
| 核心思路 | 外挂知识库 | 外挂工具 | 改模型本身 |
| 知识来源 | 外部检索 | 工具返回 | 训练数据内化 |
| 更新成本 | 低 | 低 | 高 |
| 适用场景 | 知识问答、文档检索 | 多步骤任务、自动化 | 风格对齐、领域专精 |
实际项目中三者常组合使用,例如:微调后的模型 + RAG 检索 + Agent 工具调用。
Function Call(函数调用)
大模型调用外部工具的机制,是 Agent 能力的底层基础。
核心原则:模型不执行函数,只决定调哪个、传什么参数,执行由调用方负责。
示例: 用户问"北京今天天气怎么样?"
- 模型输出 →
{"name": "get_weather", "arguments": {"city": "北京"}} - 调用方执行 → 返回
{"temp": 28, "condition": "晴"} - 模型回答 → "北京今天28度,晴天。"
和 Agent 的关系:
- Function Call = 单次工具调用(底层机制)
- Agent = 多轮自主决策 + 多次 Function Call(上层编排)
函数定义需提前告诉模型:名称、描述、参数 schema,放在请求的 tools 字段中。
总结
| 概念 | 一句话 |
|---|---|
| Prompt | 和 AI 沟通的语言,写清楚才能得到想要的结果 |
| RAG | 给模型外挂知识库,解决知识时效性和私有数据问题 |
| Agent | 给模型外挂工具,让它能自主规划和执行多步骤任务 |
| Fine-Tuning | 改模型本身,让它在特定领域更专业 |
| Function Call | Agent 的底层机制,模型输出结构化函数调用,调用方负责执行 |