首页 /
实操教程 /
AI Agent 落地的第 0 步:MCP、RAG 与工具调用的工程化选择 AI Agent 落地的第 0 步:MCP、RAG 与工具调用的工程化选择
技术开发AI AgentMCPRAGFunction Calling工程化2026-08-24
AI Agent 落地的第 0 步:MCP、RAG 与工具调用的工程化选择
1. 从大模型到 Agent:为什么需要记忆、规划与工具
大模型是无状态的静态知识库,Agent需要记忆、规划、工具来弥补不足。记忆解决上下文连续,规划解决任务分解,工具解决实时交互。
2. MCP 协议如何统一外部工具调用,对比 Function Calling
MCP(Model Context Protocol)是开放协议,通过 Client/Server 模型统一外部工具。Function Calling 是模型厂商私有机制,工具定义与调用方式绑定平台。
| 维度 | MCP | Function Calling |
|---|
| 标准化 | 开放协议 | 厂商私有 |
| 工具定义 | 元数据 JSON Schema | API 参数 |
| 连接方式 | 客户端-服务端 | 函数注册 |
| 适用场景 | 企业级多系统集成 | 轻量级单模型集成 |
3. RAG 在 Agent 中的边界:知识检索 vs 实时工具
RAG适合静态私有文档,工具适合实时数据和业务操作。判断原则:答案在文档中用RAG,答案需要系统计算/操作用工具。
4. 生产级 Agent 的评测、监控与安全
评测指标包括工具选择准确率、参数填充正确率、规划效率和任务完成率。监控需要覆盖 Trace、成本、延迟。安全要防 Prompt 注入、越权操作和数据泄露。
5. 经典代码示例:基于开源框架搭建一个检索+工具的Agent
这里使用 LangChain + Chroma + Tavily Search + OpenAI 构建一个 Agent。
import os
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_community.tools.tavily_search import TavilySearchResults
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_community.vectorstores import Chroma
from langchain_core.tools import Tool
from langchain_openai import OpenAIEmbeddings
llm = ChatOpenAI(model='gpt-4o-mini', temperature=0)
embedding = OpenAIEmbeddings()
vectorstore = Chroma(collection_name='company_docs', embedding_function=embedding)
retriever = vectorstore.as_retriever(search_kwargs={'k': 5})
def retriever_tool(input: str) -> str:
docs = retriever.invoke(input)
return '\n\n'.join([d.page_content for d in docs])
rag_tool = Tool.from_function(
func=retriever_tool,
name='company_docs_search',
description='在公司知识库中检索信息,入参是自然语言查询。'
)
search = TavilySearchResults(max_results=3)
tools = [rag_tool, search]
prompt = ChatPromptTemplate.from_messages([
('system', '你是一个智能助手,可以检索知识库或搜索实时信息来回答问题。'),
('human', '{input}'),
('placeholder', '{agent_scratchpad}'),
])
agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True)
res = agent_executor.invoke({'input': '请对比我们公司最新的产品与竞争对手的公开信息,并给出建议。'})
print(res['output'])
Mermaid流程图
graph TD
A[用户输入] --> B[Agent 调度器]
B --> C{需要工具?}
C -- 是 --> D[工具调用]
D --> E{继续规划?}
E -- 是 --> B
E -- 否 --> F[最终回答]
C -- 否 --> F
F --> G[输出]
推荐视频
| 平台 | 推荐搜索词 | 出处 |
|---|
| B站 | MCP协议入门 | 出处:B站 |
| 腾讯视频 | AI Agent开发实战 | 出处:腾讯视频 |
| 优酷 | RAG应用详解 | 出处:优酷 |
| 抖音 | AI Agent工具调用 | 出处:抖音 |
免责声明
本文仅供参考,不构成技术选型建议。代码示例可能随开源版本变化,请以官方文档为准。视频版权归原作者及平台所有。
操作清单
避坑指南
- 不要把能力全塞进Prompt,优先用RAG和工具承载。
- RAG对表格和时序数据效果差,考虑混合检索。
- 工具返回内容需要消毒,防止Prompt注入。
- MCP仍在快速迭代,需要固定客户端和服务端版本。
- 评测不能只看最终答案,要关注工具调用过程。
- Agent循环成本高,要设置最大迭代次数。
- 能够修改外部系统的工具必须加白名单和审计。
PREMIUM需要完整版教程?
包含详细步骤、视频演示、提示词模板和可下载资料包。微信支付即时获取。
购买完整版 ¥29.90