大模型系列(三):提示工程、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 是最强大的形态,但也最复杂,建议从简单场景开始

相关推荐
Csvn24 分钟前
灰度发布:让变更只影响 1% 用户(R02)
人工智能·aigc·agent
疯狂的魔鬼1 小时前
我给 Agent 造了一个"元工具":让它自己写工具,再用三道门锁住风险
agent·ai编程
熊猫钓鱼>_>1 小时前
Kotlin Multiplatform for OpenHarmony 实战:kotlinx-coroutines 结构化并发适配
开发语言·kotlin·agent·harmonyos·openharmony·适配·华为云码道
前端双越老师1 小时前
程序员 1v1 访谈系列第四期:全栈比 Agent 重要
agent·ai编程·全栈
流烟默2 小时前
A2A第 1 篇:认识 A2A——Agent 之间的 HTTP
agent·a2a
虎鲸不是鱼2 小时前
【虎鲸进化论 15】上下文工程:长周期项目的接力
人工智能·自动化·大模型·llm·自进化agent
SharpCJ2 小时前
Koog(6)——会话记忆、历史压缩与执行恢复
llm·agent·koog
Web3&Basketball2 小时前
litellm 做 Agent 成本监控:3 个账单维度实战
python·大模型·agent·可观测性·litellm·成本控制·llm运维