Agent 开发 笔记

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

学习AI Agent的相关知识需要从基础概念、技术框架、开发平台以及实际应用等多个方面入手。以下是一个关于AI Agent的学习指南,结合了当前可用的资源和实践方法。 ### 基础概念 首先理解什么是AI Agent是至关重要的。一个AI Agent可以被定义为一种能够感知环境并采取行动以最大化其成功机会的实体[^1]。这包括对人工智能的基本原理的理解,如机器学习、深度学习以及自然语言处理等。 ### 技术框架与工具 为了构建AI Agents,你需要熟悉一些关键的技术栈和工具。例如ModelScope-Agent提供了动手实践的机会来开发单个Agent的应用[^2]。对于想要探索多个Agent交互的人来说,AgentScope这样的平台允许创建复杂的对话系统,并且支持多模型配置[^3]。 ### 实践项目 通过具体的项目来应用你的知识是非常有效的学习方式。你可以开始尝试使用提供的示例代码初始化几个不同的大模型,并让它们之间进行相互对话。这种方式可以帮助你了解如何设置`agent_configs.json`文件以及如何利用Pipeline方式按顺序执行讨论流程。 ```python import agentscope # 初始化了多个大模型和多个Agent agents = agentscope.init( model_configs="./model_configs.json", # 前面创建的model_configs.json文件 agent_configs="./agent_configs.json", ) # 对应配置文件agent_configs.json中的顺序 dialog_agent_qwen = agents[0] dialog_agent_deepseek = agents[1] dialog_agent_gpt = agents[2] # Agent之间相互对话 # 1、Pipeline 方式(按顺序一个接着一个讨论) ``` ### 学习策略 鉴于该领域的知识体系庞大且更新迅速,建议设定明确的学习目标,制定详细的学习计划,并寻找合适的学习材料和社区支持[^4]。参与认证课程或在线研讨会也是提高技能的好方法。 ### 持续教育 随着新技术的发展,持续学习非常重要。关注最新的研究论文和技术博客,加入相关的论坛和社交媒体群组,这些都有助于保持你的知识是最新的。 在掌握了上述内容之后,进一步深入可能涉及到更高级的主题,比如强化学习、分布式计算下的Agent系统设计等。此外,还可以考虑贡献开源项目或者开发自己的Agent解决方案来解决现实世界的问题。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值