大模型系列(三):提示工程、RAG 与 Agent

大模型的使用方式可以分成三个层次,难度递增,能力也递增。

一、提示工程(Prompt Engineering)

提示工程就是设计有效的输入(Prompt),让模型输出想要的结果

不需要训练模型、不需要微调,只需要学会"问问题"和"给指令"。

为什么需要提示工程?

同一个问题,不同的问法,得到的答案质量可能天差地别。

复制代码
# 不好的提示
"写个代码"

# 好的提示
"请用 Python 写一个函数,实现二分查找,要求输入一个有序列表和一个目标值,返回目标值的索引,如果不存在返回 -1,请包含注释"

3. 提示工程的核心技巧

技巧 说明 示例
角色设定 给模型一个身份 "你是一位资深 Python 工程师"
明确格式 指定输出格式 "请以 JSON 格式输出"
Few-shot 给几个示例 先给 2-3 个输入输出示例
思维链 要求分步思考 "请一步步分析"
结构化的提示 用分隔符等组织 ### 上下文 ### 分隔不同部分

4. 一个完整的提示模板

复制代码
你是一位专业的数据分析师,拥有 10 年经验。

### 数据 ###
[用户提供的数据]

### 任务 ###
请分析以上数据,回答以下问题:
1. 趋势是什么?
2. 异常点有哪些?

### 要求 ###
- 用中文回答
- 回答要简洁,每条不超过 50 字
- 对异常点给出可能的原因

### 输出格式 ###
{"trend": "上升", "anomalies": [{"date": "2024-01-01", "value": 100, "reason": "..."}]}

5. 提示工程的本质

提示工程就是用人类的语言,引导模型进行"条件生成"。

它是在不改变模型内部参数的情况下,通过输入来调整输出的方向。

二、RAG(检索增强生成)

RAG(Retrieval-Augmented Generation,检索增强生成)的核心思想是:在让模型回答问题之前,先从外部知识库中检索相关信息,然后把检索到的信息作为上下文提供给模型。

RAG 解决的问题

大模型的知识是"静态"的(训练数据截止到某个时间点),存在局限性:

  • 不知道你的私有数据(公司文档、个人笔记)

  • 不知道最新的信息(今天的新闻)

  • 容易产生"幻觉"(编造不存在的知识)

RAG 通过"外挂知识库"来解决这些问题。

RAG 的工作流程

具体步骤

  1. 将文档切块:把一篇长文档切分成小段落(chunk)

  2. 向量化存储:用 Embedding 模型把每个段落转成向量,存入向量数据库

  3. 检索:把用户的问题也转成向量,在向量数据库中搜索最相似的 K 个段落

  4. 增强生成:把检索到的段落作为上下文,加上用户的问题,一起发给大模型

代码示例(伪代码)

复制代码
# 1. 文档处理
documents = ["公司成立于2020年...", "主营AI产品...", "客户包括..."]
chunks = split_into_chunks(documents)  # 切块
vectors = embedding_model.encode(chunks)  # 向量化
vector_db.store(vectors, chunks)  # 存储

# 2. 检索
query = "公司做什么产品?"
query_vector = embedding_model.encode(query)
results = vector_db.search(query_vector, top_k=3)  # 搜索

# 3. 生成
prompt = f"""
基于以下信息回答问题:
上下文:{results}
问题:{query}
"""
answer = llm.generate(prompt)

RAG 的优势

优势 说明
知识可更新 只需更新知识库,无需重新训练模型
可解释性强 可以展示"引用来源",知道答案从哪里来
成本低 比微调模型便宜得多
幻觉可控 模型基于提供的信息回答,减少编造

三、Agent(智能体)

Agent(智能体)指的是能够让大模型自主地调用外部工具、执行多步任务的系统。

如果说 RAG 是让模型"能查资料",那么 Agent 就是让模型"能动手干活"。

Agent 的核心能力

能力 说明 示例
规划(Planning) 把复杂任务拆成子任务 "帮我订票" → 查机票 → 选航班 → 填信息 → 支付
工具调用(Tool Use) 调用外部 API 查天气、发邮件、搜索、计算
记忆(Memory) 记住之前的操作和结果 记住用户已经提供了哪些信息
反思(Reflection) 根据结果调整计划 如果支付失败,尝试其他方式

Agent 的工作流程

Agent 的工具示例

复制代码
# 定义一个工具(伪代码)
tools = [
    {
        "name": "get_weather",
        "description": "获取城市天气",
        "parameters": {"city": "string"}
    },
    {
        "name": "send_email",
        "description": "发送邮件",
        "parameters": {"to": "string", "subject": "string", "body": "string"}
    }
]

# Agent 自主决策
user_input = "明天北京天气怎么样?如果下雨,提醒我带伞"
# Agent 会:① 调用 get_weather("北京") → ② 判断是否下雨 → ③ 决定是否提醒

四、三者的关系

维度 提示工程 RAG Agent
难度
数据依赖 需要知识库 需要工具集
能力边界 模型自身知识 模型 + 外部知识 模型 + 知识 + 工具
典型场景 通用问答、文案生成 私有文档问答、客服 自动化任务、数据分析

五、最后

层次 作用 一句话理解
提示工程 设计输入,引导输出 "学会问问题"
RAG 外挂知识库,增强回答 "学会查资料"
Agent 自主规划,调用工具 "学会动手做"

建议

  • 日常使用:先掌握提示工程就够了

  • 企业场景:RAG 是落地最广的方案(客服、内部知识库、文档问答)

  • 复杂任务:Agent 是最强大的形态,但也最复杂,建议从简单场景开始

相关推荐
知无涯者1 小时前
Agent 007 - Parallel Tool Use
agent
python零基础入门小白2 小时前
LangGraph智能体实战:如何用Langfuse构建AI运行时全链路可观测系统?
人工智能·学习·ai·chatgpt·程序员·大模型·智能体
console.log('npc')2 小时前
2026 实测:Grok 4.5 与 Grok 4.6 怎么选?前端开发、教程写作、Figma 还原选型指南
前端·大模型·ai编程·figma·grok
面向Google编程2 小时前
Kafka 成了 Agent 的「共享内存」,Flink 成了它的「大脑」
flink·kafka·agent
明月_清风2 小时前
DeepSeek Harness 安全审计实录:四个 PoC 揭露的 Agent 运行时"信任危机"
后端·安全·agent
ShallWeL2 小时前
RAG Embedding 模型替换与索引回归
人工智能·embedding·知识库·工作流·rag
LayZhangStrive2 小时前
Prompt - 如何生成贴合我们业务需求的有效prompt
ai·prompt·agent·提示词
SuperHeroWu73 小时前
HarmonyOS Dev Assistant (HarmonyOS开发助手)如何打通元服务开发全流程
ai·agent·harmonyos·vs code·元服务·hbuilderx·assistant
阿里云云原生3 小时前
记录一次系统认知的升级:当“日志即状态”遇见“对象即真理”,我们如何定义一致性?
agent