1. 引言
大模型已经渗透到日常开发、办公和产品设计中,但很多人仍然在问:
给模型写一段提示词就算 AI 应用了吗?给我挂个知识库就是 RAG 了吗?Agent 又是什么高阶玩法?
这篇文章的目标是把Prompt(提示工程)、RAG(检索增强生成)和Agent(智能体)这三种最常见的 LLM 使用范式说清楚,并帮你在实际场景下做出合适的选择。
2. Prompt:万能的“咒语”
2.1 是什么
Prompt 就是给大模型的自然语言指令,也是三者中最基础的上层范式。你几乎不需要改模型,也不用加外部工具,只需要设计好一句话或一段话,就能让模型完成翻译、总结、分类、角色扮演等任务。
常见形式包括:
- 零样本提示:“把下面这句话翻译成英文”
- 少样本提示(Few-shot):提供几个例子,让模型照着生成
- 思维链(Chain-of-Thought):“请一步步推理,最后给出答案”
- 角色设定:“你是一名资深 Java 架构师,请 review 下面这段代码”
2.2 什么时候用
- 任务相对封闭、知识稳定:翻译、摘要、代码补全、格式转换
- 不需要引入外部实时信息
- 希望快速验证、零开发成本
但如果模型的知识截止日期已经过期,或者需要访问企业内部文档,光靠 Prompt 是不够的。
3. RAG:给模型外挂“记忆”
3.1 核心思想
RAG(Retrieval-Augmented Generation)在 Prompt 的基础上,增加一个检索环节:先从外部知识库(文档、数据库、网页)中找到与用户问题最相关的片段,再把这些片段作为上下文塞进 Prompt,一起发给大模型生成答案。
工作流程一般是:
- 用户提问
- 向量化问题,去向量数据库召回 Top-K 相关文档块
- 拼接上下文 + 用户问题,组装 Prompt
- LLM 生成回答
3.2 典型应用
- 企业知识库问答(内部制度、产品手册)
- 基于最新论文的学术助手
- 客服机器人(结合工单历史)
以企业知识库为例,核心检索召回代码如下:
importopenaiimportnumpyasnpfrommy_vector_dbimportVectorDB# 1. 初始化向量数据库db=VectorDB(index_path="./kb_index.faiss")# 2. 问题向量化question="员工年假天数如何计算?"embedding=openai.Embedding.create(input=question,model="text-embedding-3-small")["data"][0]["embedding"]# 3. 相似性检索:召回 top-3 相关文档块retrieved_chunks=db.search(query_vector=np.array(embedding),top_k=3)# 4. 拼接上下文context="\n\n".join([chunk.textforchunkinretrieved_chunks])prompt=f"""请根据以下参考资料回答用户问题。 参考资料:{context}用户问题:{question}"""# 5. 将拼接好的 prompt 发送给 LLM 生成最终回答response=openai.ChatCompletion.create(model="gpt-4",messages=[{"role":"user","content":prompt}])print(response["choices"][0]["message"]["content"])核心步骤:向量化问题 → 检索 top-k → 拼接上下文 → 组装 Prompt → LLM 生成,这正是 RAG 将外部知识“喂”给大模型的典型方式。
RAG 的优势是能实时引入新知识,无需重训或微调模型,而且答案可溯源到引用来源。代价是需要维护文档切片、向量数据库和检索流水线。
4. Agent:会“动手”的智能体
4.1 不只对话,还能执行
Agent 是目前最高阶的玩法——模型不但能理解问题,还可以自主规划步骤、调用外部工具、观察执行结果并迭代,直到完成任务。
一个典型的 Agent 循环(ReAct 模式):
4.2 工具能力
Agent 可以调用的工具包括但不限于:
- 搜索引擎(Google / Bing API)
- 代码解释器(Python、Shell)
- 数据库查询(SQL)
- 内部 API(发邮件、创建工单)
4.3 适合场景
- 开放式复杂任务:“帮我查一下上周的销售数据,画成柱状图并发给张三”
- 需要多步推理与外部系统交互
- 自动化流程(例如自动代码修复、自动运维)
但注意事项:Agent 的自主性也带来风险——权限控制、错误放大、成本(多次 LLM 调用)和管理复杂度都比前两者高很多。
5. 三者对比
| 维度 | Prompt | RAG | Agent |
|---|---|---|---|
| 开发复杂度 | 低,零代码或少量代码 | 中,需搭建检索管线 | 高,需设计工具与流程 |
| 知识更新 | 依赖模型训练数据 | 实时,通过文档注入 | 实时 + 可用工具获取 |
| 能力边界 | 文本生成 | 文本生成 + 引用外部文档 | 生成 + 推理 + 执行 |
| 可控性 | 高,输出易预测 | 中,受检索质量影响 | 低,多步推理可漂移 |
| 典型应用 | 翻译、分类、文案 | 企业知识库、客服 | 自动化任务、数据分析 |
6. 怎么选:一张决策图
下面这张流程图可以帮你快速判断当前场景该用哪种方案:
- 如果你的应用只是做一个“更好的上下文”让模型回答得更准,选RAG。
- 如果你希望模型能主动查资料、调用 API、控制流程,直接上Agent。
- 大部分时候,好的Prompt 工程才是性价比最高的方案,不要一上来就盲目堆技术栈。
7. 总结
- Prompt是地基,适用于大部分文本任务,快速、可控。
- RAG解决了知识新鲜度和私有性的问题,让模型“有据可循”。
- Agent赋予模型行动力,适合复杂自动化,但需要更审慎的工程把控。
三者不是互斥的关系,实际项目中经常会组合使用:
例如一个客服系统可能用 Agent 总揽流程,在需要查询政策时走 RAG 检索,并将最终回复格式通过 Prompt 约束。
最后记住一句话:能靠 Prompt 解决的不要上 RAG,能靠 RAG 满足的不要折腾 Agent。