
構(gòu)建基于Claude MCP的天氣查詢智能體 | 實(shí)戰(zhàn)落地示例
在 LLM 應(yīng)用中,Prompt 就是對(duì)模型的“指令”——它定義了輸入格式、上下文示例和輸出要求:
清晰的角色設(shè)定
你是一位經(jīng)驗(yàn)豐富的法律專家,請(qǐng)根據(jù)以下事實(shí)撰寫法律意見書。
明確“角色”可讓 LLM 在對(duì)應(yīng)語(yǔ)域和專業(yè)深度上更貼合預(yù)期。
格式化輸出要求
輸出格式(JSON):
{
"summary": "...",
"key_points": ["...", "..."]
}
強(qiáng)制模型按指定結(jié)構(gòu)返回,便于后續(xù)解析與系統(tǒng)集成。
Few-shot 示例
示例1:
Q: 計(jì)算 2+2。
A: 4
示例2:
Q: 計(jì)算 7*8。
A: 56
現(xiàn)在,請(qǐng)回答:
Q: 計(jì)算 9-3。
A:
提供示例幫助模型掌握問答格式與邏輯模式。
Chain-of-Thought(CoT)
請(qǐng)先列出解題思路,再輸出最終答案。
要求模型“思考”步驟,以提升復(fù)雜問題的準(zhǔn)確性。
邊界與錯(cuò)誤處理
如果問題無(wú)法回答,請(qǐng)返回 “無(wú)法回答” 而非編造內(nèi)容。
明確禁止生成“幻覺”或“胡編亂造”,提高輸出可靠性。
回答要點(diǎn)可包含使用自定義令牌、字段校驗(yàn)、Hash 驗(yàn)證等。
**RAG(Retrieval-Augmented Generation)**結(jié)合了 檢索 和 生成 兩大模塊:
Embedding & 檢索
Prompt 拼接
生成回答
┌────────────┐ ┌───────────┐ ┌──────────────┐
│ 用戶查詢 Q │──?── │ Embedding │──?── │ 向量索引庫(kù) V │
└────────────┘ └───────────┘ └──────────────┘
│ ▲
│ │
▼ │
┌───────────┐ Top?k ┌─────────────────┐
│ Prompt 拼接│?─────────────│ 最相關(guān)文檔切片 D │
└───────────┘ └─────────────────┘
│
▼
┌───────────┐
│ LLM 生成 │
└───────────┘
│
▼
用戶響應(yīng) Answer
System: 你是一名知識(shí)庫(kù)助理,請(qǐng)基于以下文檔回答用戶的問題。
文檔:
1. {{doc1}}
2. {{doc2}}
...
問題:{{query}}
回答時(shí),請(qǐng)引用文檔編號(hào)并給出簡(jiǎn)明答案。
“什么是 Dense Retriever 與 Sparse Retriever?它們有何優(yōu)缺點(diǎn)?”
“如何衡量 RAG 系統(tǒng)質(zhì)量?”
“如何降低 RAG 系統(tǒng)的成本與延遲?”
“如何防止 RAG 中的上下文拼接注入攻擊?”
方法 | 知識(shí)更新成本 | 通用性 | 生成質(zhì)量 | 系統(tǒng)成本 |
---|---|---|---|---|
Prompt | 低(無(wú)需重新訓(xùn)練) | 高 | 中 | 低 |
RAG | 中(重建向量庫(kù)) | 高 | 高(外部知識(shí)支持) | 中(索引成本 + 推理成本) |
Fine-tuning | 高(訓(xùn)練耗時(shí)) | 低(模型綁定) | 最高 | 高(訓(xùn)練 + 部署) |
以下以 Python + OpenAI Embeddings + FAISS 為例,展示 RAG 查詢 Pipeline 核心代碼。
import faiss
import numpy as np
from openai import OpenAI
from sentence_transformers import SentenceTransformer
# 初始化模型與索引
embedder = SentenceTransformer('all-MiniLM-L6-v2')
d = 384 # 嵌入維度
index = faiss.IndexFlatL2(d)
# 文檔預(yù)處理:切分與嵌入
documents = load_documents() # list of text chunks
vectors = embedder.encode(documents)
index.add(np.array(vectors))
# 查詢與檢索
def rag_query(query: str, top_k: int = 5) - > str:
q_vec = embedder.encode([query])
D, I = index.search(np.array(q_vec), top_k)
retrieved = [documents[i] for i in I[0]]
prompt = "根據(jù)以下文檔回答問題:\n" + "\n\n".join(retrieved)
prompt += f"\n\n問題:{query}\n回答:"
# 調(diào)用 OpenAI LLM
client = OpenAI()
resp = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role":"system","content":prompt}],
temperature=0.2
)
return resp.choices[0].message.content
# 示例
print(rag_query("什么是 RAG 系統(tǒng)?"))
問題 | 答題要點(diǎn) |
---|---|
Prompt 如何提升 LLM 生成質(zhì)量? | 提示詞示例(Few-shot)、CoT、角色設(shè)定、輸出格式限制、邊界控制 |
RAG 系統(tǒng)架構(gòu)包含哪些模塊? | 文檔預(yù)處理、向量索引、檢索、Prompt拼接、LLM生成 |
如何切分長(zhǎng)文檔并平衡召回與精確? | Chunk大小200–500字、重疊20–30%、結(jié)合 BM25 粗排 + ANN 精排 |
如何防止 prompt injection 攻擊? | 對(duì)用戶輸入與文檔切片做嚴(yán)格轉(zhuǎn)義、使用白名單、對(duì)系統(tǒng) Prompt 限制 |
RAG 中 Dense vs Sparse Retriever 如何選擇? | 語(yǔ)義匹配 vs 精確匹配、索引成本 vs 更新成本、場(chǎng)景決定 |
如何衡量 RAG 系統(tǒng)質(zhì)量與可用性? | Recall\@k、Precision\@k、Latency、Factuality、端到端分詞 & token 計(jì)費(fèi) |
Prompt vs RAG vs Fine-tuning 的優(yōu)缺點(diǎn)? | 見對(duì)比表;場(chǎng)景驅(qū)動(dòng)選型 |
在初級(jí)崗位中如何落地 RAG 項(xiàng)目? | 簡(jiǎn)易 Prototype → 向量庫(kù)部署 → 基本監(jiān)控與采集 → 并發(fā)與延遲優(yōu)化 |
問:如何設(shè)計(jì)一個(gè)用于法律文書摘要的 RAG+Prompt 系統(tǒng)?
答:
“首先,對(duì)法律文書進(jìn)行分段切片,chunk 大小控制在 300–400 字,重疊 25%,避免關(guān)鍵信息被拆散。使用 Sentence-BERT 為文檔和查詢生成向量,構(gòu)建 FAISS HNSW 索引,并部署在單節(jié)點(diǎn)或云服務(wù)。查詢階段,從索引檢索 Top?k 相關(guān)切片,再用以下 Prompt 模板拼接:System: 你是一名法律專家,請(qǐng)根據(jù)以下內(nèi)容撰寫摘要: 文檔:… 問題:請(qǐng)給出這份法律文書的關(guān)鍵要點(diǎn)。
LLM 生成后,對(duì)輸出做簡(jiǎn)單正則校驗(yàn) JSON 格式,再展示給前端。整個(gè)系統(tǒng)簡(jiǎn)單易擴(kuò)展,且可通過 Prometheus 監(jiān)控檢索延遲和模型響應(yīng)時(shí)間,結(jié)合 Grafana 可視化。”
Pitfall | 描述 | 優(yōu)化建議 |
---|---|---|
Prompt 太長(zhǎng) | 導(dǎo)致 Token 超限或無(wú)關(guān)信息干擾 | 精簡(jiǎn)示例、控制文檔切片長(zhǎng)度 |
Chunk 重疊不合理 | 過大冗余、過小丟失上下文 | 經(jīng)驗(yàn)值 20–30% 重疊 |
向量索引更新延遲 | 新增文檔后檢索結(jié)果不及時(shí) | 定時(shí)增量更新索引或使用在線索引服務(wù) |
Prompt Injection | 用戶輸入植入惡意指令 | 嚴(yán)格轉(zhuǎn)義、白名單字段、隔離系統(tǒng) Prompt |
模型生成“幻覺” | 輸出與事實(shí)不符 | 加入“如果無(wú)法回答,請(qǐng)返回‘無(wú)答案’”的邊界控制 |
高并發(fā)下延遲飆升 | 檢索/生成成為瓶頸 | 緩存常見查詢結(jié)果、批量檢索、并發(fā)優(yōu)化 |
本文系統(tǒng)涵蓋了 初級(jí)工程師 Prompt 面試題庫(kù) 中的兩大核心模塊:
下一步提升建議:
掌握上述內(nèi)容,你將在 LLM 初級(jí)工程師面試中自信應(yīng)對(duì)提示詞與 RAG 場(chǎng)景高頻考題,早日拿到心儀的高薪 Offer。祝面試順利!
構(gòu)建基于Claude MCP的天氣查詢智能體 | 實(shí)戰(zhàn)落地示例
API 認(rèn)證:JWT、OAuth 與 API KEY對(duì)比
零代碼打造高效 AI Agents:初學(xué)者快速上手指南
如何使用rest api發(fā)送電子郵件
如何通過 Evernote API 進(jìn)行筆記的批量操作
Akamai API Security 如何保護(hù) Web 應(yīng)用程序免受攻擊
Amazon Lex API集成指南:打造智能對(duì)話體驗(yàn)
GPT-4 API全解析:如何高效使用與集成OpenAI的最強(qiáng)API
18種最佳 RAG 技術(shù)
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)