Agent、MCP、FunctionCode、RAG
本文介绍了AI系统的核心概念和工作机制。Agent作为"大脑",能够自主规划任务并调用工具执行;Function/Tool是Agent的"手脚",提供外部API调用能力;MCP则是标准化的工具连接协议,避免重复开发。文章通过天气查询示例展示了Agent如何分解任务、调用工具。RAG技术部分说明了如何通过知识库分片、向量索引和语义召回增强AI决策能力,并给出了
-
Agent:一个能自主决策的“大脑”。
-
Function/Tool:大脑可以使用的“手和脚”。
-
MCP:一套标准化的“工具包管理规范”。
Agent - 智能体
核心定义: 一个能够理解目标、进行规划、执行动作并达成目标的 AI 系统。
角色:整个系统的 “大脑” 或 “指挥官”
工作模式:
-
规则: 将复杂任务(如“写一份行业报告”)拆解成多个步骤(调研、分析、撰写)
-
决策: 决定每一步需要调用哪个工具
-
执行: 调用工具并观察结果
-
反思: 根据结果决定下一步行动,直到任务完成
-
一个简单的例子:你让Agent“查一下明天的天气并提醒我是否需要带伞”
-
他可能会规划为:
调用天气API -> 分析降雨概率 -> 调用日历工具创建提醒。
-
Function/Tool Calling - 函数/工具调用
核心定义:让 AI模型 能够主动调用外部函数或API来获取信息来获取信息或执行操作的机制
角色:她是Agent的“手、脚和感官”, 扩展了AI的能力边界
工作原理:
-
开发者在请求Ai模型是,预先定义好一系列可用的函数(包括函数名、描述、参数)
-
AI在理解用户问题后,如果发现需要外部信息或操作,会输出一个请求,表示它想要调用某个函数
-
你的代码执行这个函数,并将结果返回给AI
-
AI根据返回的结果,生成最终的回答。
-
一个简单的例子:
-
你问:“旧金山现在的天气怎么样?”
-
AI思考:“我需要调用
get_weather(location)函数来获取实时数据。” -
AI响应:
{ "function_call": { "name": "get_weather", "arguments": {"location": "San Francisco"} } } -
你的程序:执行
get_weather("San Francisco"),得到{ "temp": 18, "condition": "Sunny" },并将结果交回给AI。 -
AI最终回答:“旧金山现在天气晴朗,气温18摄氏度。”
-
MCP - 模型上下文协议
核心定义:一个由Anthropic公司提出的开源标准,旨在标准化AI模型与外部工具/数据源之间的连接方式。
-
角色:它是“工具包的标准化管理规范”或“统一的插件接口”。
-
要解决的核心问题:
-
之前:每个AI项目(如AutoGPT、LangChain)都要自己重复编写连接数据库、搜索引擎、Slack等工具的代码,即“重复造轮子”。
-
之后:通过MCP,可以编写一次工具连接器(称为MCP Server),然后任何支持MCP协议的AI应用(称为MCP Client)都可以直接使用它。
-
-
一个简单的例子:
-
有人写了一个MCP Server for PostgreSQL,它知道如何连接和查询数据库。
-
那么,无论是Anthropic的AI、你本地跑的Ollama,还是任何其他支持MCP的Agent,都不需要再自己写数据库连接代码,直接使用这个现成的Server即可。
-
RAG - 使用方法
-
创建项目文档结构
knowledge-base/ ├── project-context.md # 项目背景和架构 ├── coding-standards.md # 编码规范 ├── api-documentation.md # API 文档 ├── component-library.md # 组件库文档 └── deployment-guide.md # 部署指南
示例:项目上下文文档
# project-context.md## 项目概述- 项目名称: 电商管理平台 - 技术栈: React + TypeScript + Ant Design - 状态管理: Redux Toolkit - 构建工具: Vite ## 核心业务模块1. 用户管理 - 基于 RBAC 权限控制 2. 商品管理 - SKU/SPU 管理体系 3. 订单管理 - 多状态订单流程 4. 数据统计 - ECharts 可视化 ## 开发规范- 组件命名: PascalCase - 文件命名: kebab-case - API 前缀: /api/v1/ - 代码提交: Conventional Commits
-
在 Claude Code 中集成 RAG
Agent: 在提问时附上相关文档片段
Plan: 分步骤提供知识 一步步生成
-
RAG 增强的提示词模版
背景信息: <项目背景文档内容> 当前任务: <具体开发任务> 约束条件: - 代码规范:<编码标准> - 技术限制:<技术约束> - 业务规则:<业务逻辑> 请基于以上信息实现功能。
模版1: 功能开发
text 背景信息: <项目背景文档内容> 当前任务: <具体开发任务> 约束条件: - 代码规范:<编码标准> - 技术限制:<技术约束> - 业务规则:<业务逻辑> 请基于以上信息实现功能。
模版2: 代码优化
text 现有代码: <需要优化的代码> 项目上下文: <相关业务逻辑和架构信息> 优化要求: - 性能改进点:<具体指标> - 代码质量:<规范要求> - 可维护性:<最佳实践> 请基于项目上下文进行优化。
-
实际应用开发
示例1: 组件开发
text 基于以下项目规范创建用户管理页面: 项目技术栈: - 前端:React 18 + TypeScript + Ant Design - 状态管理:Redux Toolkit + RTK Query - 路由:React Router v6 - API:RESTful,认证使用 JWT 用户管理需求: 1. 用户列表展示(表格形式) 2. 用户搜索(按姓名、邮箱) 3. 用户状态切换(启用/禁用) 4. 角色分配功能 API 接口: - 获取用户列表:GET /api/v1/users - 更新用户状态:PATCH /api/v1/users/{id}/status - 分配角色:PUT /api/v1/users/{id}/roles 请实现完整的用户管理组件。
-
RAG 工作机制
-
分片:将复杂的“工作手册”分片, 可根据段落,页码,字数、章节 等
-
索引:通过 Embedding 将片段文本转换为向量,然后将片段文本和片段向量存在向量数据库中
-
召回:用户问题 通过 Embedding 得出目标向量,然后与 片段文本向量进行相似度比对,相似度高的整合起来给大模型做分析
-
注:Embedding就是把语义相近的文本所对应的向量靠近,这样的话,当用户询问类似的语义后就可以将问题转化为 Embedding 最后根据向量相似度把相关文本找出来,扔给大模型。(Embedding 是专门解析语义的大模型,非gpt等大模型)
更多推荐


所有评论(0)