AI
智能体
定义
智能体(AI Agent)是一种能够自主行动、感知环境、 做出决策并与环境交互的计算机系统或实体,通常依赖大型语言模型作为其核心决策和处理单元,具备独立思考、 调用工具去逐步完成给定目标的能力。
架构
核心要素
- 大模型(LLM):大模型作为“大脑”:提供推理、规划和知识理解能力,是AI Agent的决策中枢。
- 记忆(Memory):
- 短期记忆:存储单次对话周期的上下文信息,属于临时信息存储机制。受限于模型的上下文窗口长度。
- 长期记忆:可以横跨多个任务或时间周期,可存储并调用核心知识,非即时任务。可以通过模型参数微调(固化知识)、知识图谱(结构化语义网络)或向量数据库(相似性检索)方式实现。长期记忆的主要体现为 个人知识库。
- 工具使用(Tool Use):调用外部工具(如API、数据库)扩展能力边界。
- 规划决策(Planning):通过任务分解、反思与自省框架实现复杂任务处理。例如,利用思维链(Chain of Thought)将目标拆解为子任务,并通过反馈优化策略。
- 行动(Action):实际执行决策的模块,涵盖软件接口操作(如自动订票)和物理交互(如机器人执行搬运)。比如:检索、推理、编程等。
三个阶段
阶段1:提示词立人设:GPTs、Cherry-Studio、豆包等通过提示词,做一个阉割版的智能体,直接和LLM交互。
阶段2(面向过程):工作流:定义工作流,每一步可以指定不同的模型,应用就会按照我们设定的流程执行任务。
阶段3:real 智能体(面相目标):智能体根据人类设定的目标,自主进行任务拆分,工具选择,进度控制,实现目标后自主结束工作。
RAG
定义
RAG(Retrieval-Augmented Generation,检索增强生成)是一种结合信息检索(Retrieval)与文本生成(Generation)的技术,旨在提升大语言模型在回答专业问题时的准确性和可靠性。
为什么需要RAG
- 减少特定领域(陌生领域)的幻觉;
- 数据实时问题;
- 提升准确率;
以下分三个场景进行举例。
场景1:大型语言模型(LLM)的训练依赖于网络上海量公开的静态数据,而某些特定领域(如企业内部资料、专有技术文档等)的数据通常不会作为公开的训练数据,导致模型在面对这些领域的查询时,可能因缺乏足够的信息而生成不准确甚至虚构的回复。
解决方案:为了解决这一问题,RAG技术通过引入向量数据库(Vector Database)作为外部知识源,将模型缺失的知识以结构化的形式提供(其实 个人知识库 就是RAG技术的落地的体现)。
场景2:随着LLM 规模扩大,训练成本与周期相应增加。因此,包含最新信息的数据难以融入模型训练过程,无法及时反映最新的信息或动态变化。导致LLM 在应对诸如“请推荐当前热门影片”等时间敏感性问题。
解决方案:提供联网搜索功能。
场景3:LLM在考试的时候面对陌生的领域,答复能力有限,然后就准备放飞自我了(AI幻觉),而此时RAG给了一些提示和思路,让LLM懂了开始往这个提示的方向做,最终考试的正确率从60%到了90%!
个人知识库执行流程
MCP与A2A
MCP
定义
MCP(Model Context Protocol,模型上下文协议) ,2024年11月底,由Anthropic 推出的一种开放标准。旨在为大语言模型(LLM)提供统一的、标准化方式与外部数据源和工具之间进行通信。
特征 | MCP | TCP/IP、HTTPS |
---|---|---|
本质 | 协议(Protocol) | 协议(Protocol) |
作用 | 标准化AI模型与上下文来源/工具之间的数据交互方式 | 标准化设备之间的网络通信方式 |
目标 | 让不同模型应用可以用统一方式访问资源/工具 | 让不同设备、系统可以互通数据 |
好处 | 消除碎片化集成、形成生态闭环 | 解决设备互联、实现互联网基础 |
- without MCP:这种为每个数据源构建独立连接的方式,可以被视为一个M*N问题。(M是大模型,N是插件)
- with MCP :可以被视为一个M + N问题。(中间件的感觉)
MCP 作为一种标准化协议,极大地简化了大语言模型与外部世界的交互方式,使开发者能够以统一的方式为AI 应用添加各种能力。可以将MCP理解为电脑的USB接口(一套标准),通过这个接口电脑可以访问各种外部设备。
MCP协议中的核心角色:
- MCP Client:MCP client 充当LLM 和MCP server 之间的桥梁,嵌入在主机程序中。接收来自LLM的请求,将请求转发到相应的MCP server ,将MCP server 的结果返回给LLM。
MCP Server:每个MCP 服务器都提供了一组特定的工具,负责从本地数据或远程服务中检索信息。是MCP 架构中的关键组件。
与传统的远程API 服务器不同,MCP 服务器既可以作为本地应用程序在用户设备上运行(操作本地数据库等),也可部署至远程服务器(调用外部接口(高德MCP等))
- MCP Host:MCP Client通常并不是独立运行的,而是嵌入在AI模型相关的工具当中,比如Claude桌面应用、IDE(Cursor、Cline、 WindSurf)等。内嵌MCP Client的应用被称为MCP Host。协作关系如下图所示:
通信机制
- stdio(标准输入输出):主要用在本地服务上,操作你本地的软件或者本地的文件。比如Blender 这种就只能用Stdio 因为他没有在线服务。(默认通信方式)
- 优点:
- 这种方式适用于客户端和服务器在同一台机器上运行的场景,简单。
- stdio模式无需外部网络依赖,通信速度快,适合快速响应的本地应用。
- 可靠性高,且易于调试
- 缺点:
- Stdio 的配置比较复杂,我们需要做些准备工作,需要提前安装需要的命令行工具。
- stdio模式为单进程通信,无法并行处理多个客户端请求,同时由于进程资源开销较大,不适合在本地运行大量服务。(限制了其在更复杂分布式场景中的使用)
- 优点:
- SSE(Server-Sent Events):主要用在远程通信服务上,这个服务本身就有在线的API,比如访问你的谷歌邮件,天气情况等。
- 优点:
- 适用于实时数据更新、消息推送、轻量级监控和实时日志流等场景
- 对于分布式或远程部署的场景,基于HTTP和SSE 的传输方式则更为合适
- 配置方式非常简单,基本上就一个链接就行,直接复制他的链接填上就行
- 优点:
stdio的本地环境安装
stdio客户端与对应的服务端都在本地,所以需要本地有运行MCP服务的环境。 stdio的本地环境有两种:一种是Python 编写的服务,一种用TypeScript 编写的服务。分别对应着uvx 和npx 两种指令。
stdio的本地环境安装uvx有两种安装方式:
- 若已配置Python环境,可使用命令安装:
pip install uv
- 若没配置Python环境,可在Windows下可以通过PowerShell运行命令来安装uv:
owershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex”
- 检查是否正常:
uv --version
、uvx --help
stdio的本地环境安装npx :
- 装一个node就行。
MCP Server仓库
- 官方模型上下文协议(MCP)参考实现的集合,还包括社区构建的服务器和附加资源的参考
- Awesome MCP,一份精选的超赞模型上下文协议(MCP)服务器列表
- Smithery
- MCP.so
- 阿里云百炼
cursor中使用MCP
Cursor 中添加 MCP Server 有两种配置方式:
全局设置:通过 Cursor Settings -> MCP Tools -> Add Custom MCP 添加全局可用的 MCP 服务。
项目级别:在项目目录的 .cursor 目录中新建 mcp.json 文件进行配置,仅对特定项目生效。(建议)
高德地图服务
高德地图的MCP Server需要从MCP.so (https://mcp.so/zh) 平台获取。申请高德地图的API:https://console.amap.com/
选择Agent模式,输入提示词:
1 | 1.从高德地图的MCP服务中获取北京站到天安门、天安门到颐和园、颐和园到南锣鼓巷的地铁线路;2.从高德地图的MCP中获取颐和园、南锣鼓巷附件的美食信息,每处获取三家美食店铺信息,3.将一二步的信息生成一个精美的html前端展示页面,并存放在当前目录下 |
MCP执行过程:
我们会注意到有很多的Called MCP Tool的调用,这个其实在MCP Server仓库中有提到的函数/工具,所以我们需要根据提供的函数/工具来提对应的需求。
最终效果如下所示:
Function Call、MCP、RAG
mcp类似于usb这样的协议 目的是统一各个工具和各家大模型之间交互的标准,rag是检索增强生成,用于从知识库向量检索到相关知识喂给大模型回答问题,让他不仅仅根据训练知识回答还要根据你自己的知识库知识回答。
function Call也好,mcp也好,就是一个大模型json输出而已。大模型默认输出markdown格式文本,也可以指定输出json。fc和mcp原理是一样的 都是拼接提示词,让大模型输出一个符合要求的json,然后从json中解析函数名和参数,客户端调用函数,获得结果。区别就是fc是开发者自己定义json格式(注意是开发者定义的,不是大模型定义的),mcp仅仅是增加了一个标准,类似于做成通用库,可以让遵循mcp的客户端都可以直接用,而无需再重复造轮子。
本地部署大模型
目标:使用 Ollama 在本地部署 DeepSeek 模型。
参考文献
安装ollama
- 访问 Ollama 官网:https://ollama.com/
- Ollama 默认会安装在 C 盘,想要安装在其它的盘,则要用命令来指定安装路径,比如 OllamaSetup.exe /dir=E:\Ollama,代码以安装在 E:\Ollama 为例,具体操作步骤如下
- 安装好后,接着是 下载模型,在 Cmd 窗口 或者 终端,输入 ollama run deepseek-r1:1.5b,Ollama 就会自动下载,这里的 1.5b 可以修改为你想下载的版本。(下载时,如果速度变慢或者卡住不动了。在窗口里按一下 Ctrl+C 取消下载,然后再次输入代码,就会重新下载,进度不会丢失)
使用模型对话
- 模型下载完成后会自动进入对话模式
- 在提示符
>>>
后输入问题并按回车 - 常用命令:
/clear
- 清除上下文,重新开始对话/bye
- 退出对话模式- 直接输入问题 - 开始对话
日常使用说明
启动模型
- 按 Win+R 打开运行
- 输入 cmd 打开命令提示符
- 输入启动命令:
ollama run 模型名称
例如:ollama run deepseek-r1:1.5b
模型管理命令
- 查看已安装模型:
ollama list
- 删除模型:
ollama rm 模型名称
例如:ollama rm deepseek-r1:1.5b
- 查看所有命令:直接输入
ollama
通过 API 接口访问模型
API 基本信息
- 默认 API 地址:
http://localhost:11434/api
- 支持的请求方式:POST
- 数据格式:JSON
- 默认 API 地址:
主要 API 接口
- 生成回答(Generate)
1
2
3
4
5curl -X POST http://localhost:11434/api/generate -d '{
"model": "deepseek-r1:1.5b",
"prompt": "你好,请介绍一下自己",
"stream": false
}'- 聊天对话(Chat)
1
2
3
4
5
6
7
8
9
10curl -X POST http://localhost:11434/api/chat -d '{
"model": "deepseek-r1:1.5b",
"messages": [
{
"role": "user",
"content": "你好,请介绍一下自己"
}
],
"stream": false
}'- JavaScript 示例代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28async function chatWithModel(prompt) {
const url = "http://localhost:11434/api/chat";
const data = {
model: "deepseek-r1:1.5b",
messages: [
{
role: "user",
content: prompt,
},
],
stream: false,
};
const response = await fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
return await response.json();
}
// 使用示例
chatWithModel("你好,请介绍一下自己")
.then((response) => console.log(response.message.content))
.catch((error) => console.error("Error:", error));- 注意事项
- 确保 Ollama 服务正在运行
- API 默认只监听本地请求(localhost)
- 如需远程访问,需要配置 Ollama 允许远程连接
- 建议在生产环境中添加适当的安全措施
- stream 参数设置为 true 时可获得流式响应
注意事项
- 硬件要求:
- 1.5b 版本:最低 8GB 内存
- 7b 版本:建议 16GB 以上内存
- 14b 版本:建议 32GB 以上内存
- 存储空间:
- 请确保有足够的硬盘空间(模型文件较大)
- 1.5b 约需 3GB
- 7b 约需 15GB
- 14b 约需 30GB
- 使用建议:
- 首次使用建议从小模型开始尝试
- 确保网络稳定,避免下载中断
- 使用时保持电脑有足够的可用内存
改变安装位置
需要注意的是,Ollama 存储模型的位置也是在 C 盘,你可以在 Cmd 窗口输入下面这条代码来修改,比如:
1 | setx OLLAMA_MODELS "E:\Ollama\.ollama\models" |
特别需要注意的是,设置好后,一定要退出 Ollama,重启一下 Ollama 才会生效。接着,在命令行里输入 ollama list,即可查看已下载的模型。
最后,你还可以将之前下载过的模型,移动到新的目录来,比如我安装在了 E:\Ollama,只需要将默认位置的整个 .ollama 文件夹,复制过来即可。这也是之前把模型储存位置修改为 E:\Ollama.ollama\models 的原因,直接一键复制即可。
1 | #默认安装位置: |