Agent 开发 笔记

AI Agent开发入门笔记(1) 【代码】AI Agent开发入门笔记(1) 阅读详情

Agent 结构

Ai Agent 是基于 LLM 的能够自主理解、自主规划决策、执行复杂任务的智能体。
在这里插入图片描述
规划 Planning + 记忆 Memory + 工具 Tools

规划 Planning

规划:一项复杂任务通常包括多个子步骤,Agent 需要提前将一项任务分解为多个子任务。

  • 子目标与分解(Subgoal and decomposition):Agent 将复杂任务分解为更小、更易于处理的子目标,从而实现对复杂任务的高效处理。
  • 反思与完善(Reflection and refinement):Agent 可以对历史的动作进行自我批评和自我反思,从错误中吸取教训,并为未来的步骤进行改进,从而提高最终结果的质量。

实现:通过 prompt engine 来引导 LLM 实现规划(即步骤分解),通过 Prompt 提示词,Prompt 里面包含关于 Tools 的描述,最后 AI Agent 智能体就可以根据模型的输出使用外部 Tools(例如计算器,搜索API,数据库,程序接口,各种模型的API) 能使用外部 API 或者知识库。最常见的规划是任务分解 Task Decomposition 与 自我反思 Self Reflection。

记忆 Memory

  • 短期记忆(Short-term memory):所有上下文学习(In-context Learning),都是利用模型的短期记忆来学习。
  • 长期记忆(Long-term memory):为 Agent 提供长时间保留和回忆信息的能力,这个时候需要借助外部向量存储和快速检索来实现。其实复刻的就是人类的记忆模式。

实现:短期记忆实现上主要利用 Prompt Engineering;长期记忆实现上,主要利用向量数据库。

工具 Tool

Agent 会调用外部提供好的 API,补充 LLM 输出中缺失的额外信息,包括当前状态信息、具体的代码执行能力、访问专有信息源等,都需要借助外部的工具组件。

A2A

MCP 协议

MCP(Model Context Protocol,模型上下文协议)是一种开放协议,旨在实现 大型语言模型(LLM) 应用与外部数据源、工具和服务之间的无缝集成,类似于网络中的 HTTP 协议或邮件中的 SMTP 协议。

MCP 协议通过标准化模型与外部资源的交互方式,提升 LLM 应用的功能性、灵活性和可扩展性。

在这里插入图片描述
在这里插入图片描述
MCP 通过标准化人工智能应用生态系统中的通信规则,为开发者提供了一个统一、高效且可互操作的开发环境。


MCP 的核心设计

MCP 的核心是 模型上下文,即 LLM 在运行过程中所需的所有外部信息和工具。

MCP 通过定义标准化的接口和协议,使 LLM 能够动态访问和集成以下内容:

  • 外部数据源:如数据库、API、文档库等,为 LLM 提供实时或历史数据。
  • 工具和服务:如计算工具、搜索引擎、第三方服务等,扩展 LLM 的功能。
  • 上下文管理:动态维护 LLM 的对话上下文,确保连贯性和一致性。

MCP 的核心设计可以用三句话概括:

  1. 通过统一的接口和标准化的工具注册机制,实现了 AI 模型与外部工具的无缝连接
  2. 采用智能的资源管理和安全的数据传输机制,确保了系统运行的高效和安全
  3. 基于上下文感知的智能调度,提供了流畅的用户交互体验和精准的工具调用

在这里插入图片描述


MCP 工作流程

在这里插入图片描述
工作流程说明:

  1. 工具发现:MCP Client 获取可用工具列表及其功能描述

  2. 查询处理:Client 将工具转换为标准格式并发送给 LLM

    {
         
         
        "name":"search_weather",
    	"description":"获取指定城市的天气信息",
    	"parameters":{
         
         
    	    "city":"城市名称",
    	    "days":"天数预报(1-7天)"
    	}
    }
    
  3. 决策分析:LLM 根据用户需求选择合适的工具

  4. 工具调用:通过 MCP Server 执行工具调用并获取结果

  5. 结果处理:将工具执行结果返回给 LLM 进行分析

  6. 响应生成:LLM 生成自然语言响应

  7. 结果展示:向用户展示结果并维护对话上下文


MCP 的架构

在这里插入图片描述
总共分为了下面五个部分:

  • MCP Hosts : Hosts 是指 LLM 启动连接的应用程序,像 Cursor, Claude Desktop、Cline 这样的应用程序。
  • MCP Clients : 客户端是用来在 Hosts 应用程序内维护与 Server 之间 1:1 连接。
  • MCP Servers : 通过标准化的协议,为 Client 端提供上下文、工具和提示。
  • Local Data Sources : 本地的文件、数据库和 API。
  • Remote Services : 外部的文件、数据库和 API

MCP 的架构由四个关键部分组成:

  • 主机(Host):主机是期望从服务器获取数据的人工智能应用,例如一个集成开发环境(IDE)、聊天机器人等。主机负责初始化和管理客户端、处理用户授权、管理上下文聚合等。
  • 客户端(Client):客户端是主机与服务器之间的桥梁。它与服务器保持一对一的连接,负责消息路由、能力管理、协议协商和订阅管理等。客户端确保主机和服务器之间的通信清晰、安全且高效。
  • 服务器(Server):服务器是提供外部数据和工具的组件。它通过工具、资源和提示模板为大型语言模型提供额外的上下文和功能。例如,一个服务器可以提供与Gmail、Slack等外部服务的API调用。
  • 基础协议(Base Protocol):基础协议定义了主机、客户端和服务器之间如何通信。它包括消息格式、生命周期管理和传输机制等。

MCP 就像 USB-C 一样,可以让不同设备能够通过相同的接口连接在一起。

在这里插入图片描述


MCP 通信机制

MCP 协议支持两种主要的通信机制:基于标准输入输出的本地通信和基于SSE(Server-Sent Events)的远程通信。

这两种机制都使用 JSON-RPC 2.0 格式进行消息传输,确保了通信的标准化和可扩展性。

  • 本地通信:通过 stdio (基于操作系统标准输入输出的本地进程间通信机制)传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。
  • 远程通信:利用 SSE 与 HTTP 结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。

MCP 的工作原理

MCP 通过定义标准化的数据格式和通信协议,实现 LLM 与外部资源的交互。

MCP 使用 JSON-RPC 2.0 作为消息格式,通过标准的请求、响应和通知消息进行通信。

MCP 支持多种传输机制,包括本地的标准输入/输出(Stdio)和基于 HTTP 的服务器发送事件(SSE)。

MCP的生命周期包括初始化、运行和关闭三个阶段,确保连接的建立、通信和终止都符合协议规范。

以下是其工作流程:

  1. 上下文请求
    LLM 应用向外部资源发送上下文请求,包含所需的数据或服务类型。
    在这里插入图片描述

    • LLM 应用根据任务需求,向外部资源发送请求。
    • 外部资源返回所需的数据或服务结果。
  2. 上下文集成

    LLM 应用将外部资源返回的上下文数据集成到模型中,用于生成响应或执行任务。
    在这里插入图片描述

    • LLM 应用将外部数据与模型内部知识结合,生成更准确或更丰富的响应。
  3. 上下文管理

    MCP 支持动态管理 LLM 的对话上下文,确保多轮对话的连贯性。

    在这里插入图片描述

    • 上下文管理器维护对话的历史记录和状态。
    • LLM 应用根据上下文生成连贯的响应。

MCP 的应用场景

MCP 广泛应用于以下场景:

  • 增强型问答系统:通过集成外部数据源,提供实时、准确的答案。
  • 智能助手:通过集成工具和服务,执行复杂任务(如预订、计算、搜索等)。
  • 知识管理:通过集成文档库和数据库,提供专业领域的知识支持。
  • 多轮对话:通过上下文管理,实现连贯的多轮对话。

MCP 与 Function Calling 的区别?

类别 MCP (Model Context Protocol) Function Calling
性质 协议 功能扩展机制
功能范围 通用(支持多数据源、多功能整合) 特定场景(单一数据源或功能)
目标 提供统一接口,实现跨系统互操作 扩展模型的基础能力(如查询、计算)
实现方式 基于标准协议(如REST/GraphQL) 依赖特定模型的API或SDK实现
开发复杂度 低:通过统一协议兼容多源 高:需为每个任务单独开发函数
复用性 高:一次开发可适配多场景 低:函数通常为单一任务设计
灵活性 高:支持动态适配和扩展(如动态加载数据源) 低:功能扩展需修改代码或重新开发
常见场景 复杂场景(如跨平台数据整合、多模型协同) 简单任务(如天气查询、数学计算)

关键差异总结

  • MCP 是协议层的抽象,解决跨系统协作问题;
  • Function Calling 是模型能力的扩展,解决单一功能实现问题。

function calling 的流程示意圖:

在这里插入图片描述


“通过 stdio 传输数据”指的是利用操作系统的**标准输入输出(Standard Input/Output,简称 stdio)**作为通信通道,在同一台机器上运行的客户端和服务器之间直接交换数据。具体解析如下:


stdio

1. 什么是 stdio?

• 标准输入(stdin):程序接收数据的默认通道(如键盘输入或管道输入)。
• 标准输出(stdout):程序输出结果的默认通道(如打印到终端或重定向到文件)。
• 标准错误(stderr):输出错误信息的通道。

在本地通信中,客户端和服务器通过 stdin/stdout 直接读写数据,无需网络协议或额外接口。


2. 如何通过 stdio 传输数据?

通信方式:
• 客户端将请求(JSON-RPC 2.0 格式)写入服务器的 stdin。
• 服务器从 stdin 读取请求,处理后将响应写入 stdout,客户端再从 stdout 读取结果。

技术实现:
• 通常通过管道(Pipe)或重定向实现进程间通信。
例如:

 # 客户端通过管道发送数据到服务端
echo '{"jsonrpc":"2.0","method":"example","params":{}}' | server_program

• 编程语言中(如 Python、Node.js)可直接调用子进程并读写其 stdio。


3. 为什么适合本地通信?

• 高效:省去网络序列化/反序列化开销,速度更快。
• 简单:无需配置 IP、端口或协议(如 HTTP)。
• 隔离性:同一机器上的进程间通信,安全性较高。


4. 对比远程通信(SSE)

特性 stdio 本地通信 SSE 远程通信
适用场景 单机进程间通信 跨网络实时数据传输(如浏览器与服务器)
协议依赖 无(直接读写字节流) 依赖 HTTP/SSE 协议
复杂度 低(操作系统原生支持) 高(需处理网络延迟、断连等)
数据格式 均使用 JSON-RPC 2.0 标准化格式

总结
“stdio 传输数据”是一种基于操作系统标准输入输出的本地进程间通信机制,适用于同一台机器上运行的客户端与服务器,具有高效、简单的特点,是 MCP 协议中与远程通信(SSE)互补的解决方案。


SSE

自组织映射神经网络(SOM) 目录 1 背景:自组织(竞争型)神经网络 2竞争学习的概念与原理 2.1 竞争学习的步骤 2.2 示例 3SOM典型结构 4SOM网的权值调整域 5 SOM Kohonen 学习算法 6 SOM示例 7SOM设计细节 7.1输出层设计 7.2输出层节点排列的设计 7.3 权值初始化问题 7.4学习率的设计 7.5设计拓扑领域 8SOM功能分析 8.1 保序映射 8.2数据压缩 8.3 特征提取 9自组织映射神经网络与K均值算法的区别... 阅读详情

相关推荐

01_MySQL下载、安装与配置(以MySQL8.0.31版本为例)

1.点击下载好的mysql安装包 进入到mysql installer界面。2.选择MySQL Servers选项 一直下拉。

4820

盘点军工行业软件研发的那些常用GJB标准

GJB5000、2786、438、141、102、8114等...

文章主要涉及嵌入式软件开发、测试、项目管理等,欢迎交流,共同进步。 9453

OpenClaw Docker 安装问题解决全记录

控制面板无法加载(WebSocket 错误) | 确认 Nginx 配置中的 `Upgrade` 和 `Connection` 头正确 || 网关容器无法启动 | `docker compose logs openclaw-gateway`,检查权限、镜像名 |如需消除,使用 Let's Encrypt |- `<your-token>`:你的 OpenClaw 网关令牌(如 `b0e5ab...`)将 `<nas-ip>` 替换为你的群晖内网 IP(例如 `192.168.1.100`)。

u014490376的博客 2308

STK中的传感器与通信组件:雷达、发射机、接收机与天线的协同建模

本文深入解析了STK软件中传感器、雷达、发射机、接收机与天线的协同建模方法。通过构建一个完整的卫星对地数传系统实例,阐述了各组件如何分工协作,实现从几何指向到射频链路的高保真仿真,为复杂航天通信与探测系统的设计与分析提供了高效、灵活的解决方案。

weixin_29271263的博客 273

张量积曲面:数学原理与Python实现

Suv∑i0m∑j0nPij⋅Bipu⋅BjqvSuvi0∑m​j0∑n​Pij​⋅Bip​u⋅Bjq​v其中PijP_{i,j}Pij​是控制点网格,BipuB_i^p(u)Bip​u和BjqvB_j^q(v)Bjq​v是基函数,分别沿uuu和vvv方向定义。

T20151470的博客 1156

深入解析YT8521S千兆以太网PHY芯片的设计与调试要点

本文深入解析了YT8521S千兆以太网PHY芯片的设计与调试要点。重点剖析了硬件设计中的电源方案、RGMII接口电平配置(尤其是1.8V电平方案)以及PCB布局布线等关键细节,并提供了从硬件检查、驱动配置到性能测试的完整调试流程,帮助工程师规避常见陷阱,实现稳定可靠的千兆网络连接。

weixin_29190573的博客 688

告别云端依赖:手把手教你在Windows 10/11上离线部署WhisperDesktop(含模型下载避坑指南)

本文详细介绍了如何在Windows 10/11上离线部署WhisperDesktop,包括硬件要求、模型下载、环境配置和实战应用。通过本地部署,用户可以实现高效的语音转文字功能,无需依赖云端服务,特别适合注重数据隐私和需要离线工作的场景。

weixin_33736048的博客 322

C#串口通信从入门到精通(5)——打开、关闭串口

本文详细介绍如何打开串口

qq_34059233的博客 6784

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: PyTorch 笔记
下一篇: 内存泄露排查 笔记
sumatch
博客等级 码龄8年 251粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值