Agent 开发 笔记
定义
Ai Agent 是基于 LLM 的能够自主理解、自主规划决策、执行复杂任务的智能体。
MCP 协议
MCP(Model Context Protocol,模型上下文协议)是一种开放协议,旨在实现 大型语言模型(LLM) 应用与外部数据源、工具和服务之间的无缝集成,类似于网络中的 HTTP 协议或邮件中的 SMTP 协议。
MCP 协议通过标准化模型与外部资源的交互方式,提升 LLM 应用的功能性、灵活性和可扩展性。
MCP 通过标准化人工智能应用生态系统中的通信规则,为开发者提供了一个统一、高效且可互操作的开发环境。
MCP 的核心概念
MCP 的核心是 模型上下文,即 LLM 在运行过程中所需的所有外部信息和工具。
MCP 通过定义标准化的接口和协议,使 LLM 能够动态访问和集成以下内容:
- 外部数据源:如数据库、API、文档库等,为 LLM 提供实时或历史数据。
- 工具和服务:如计算工具、搜索引擎、第三方服务等,扩展 LLM 的功能。
- 上下文管理:动态维护 LLM 的对话上下文,确保连贯性和一致性。
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的生命周期包括初始化、运行和关闭三个阶段,确保连接的建立、通信和终止都符合协议规范。
以下是其工作流程:
-
上下文请求
LLM 应用向外部资源发送上下文请求,包含所需的数据或服务类型。
- LLM 应用根据任务需求,向外部资源发送请求。
- 外部资源返回所需的数据或服务结果。
-
上下文集成
LLM 应用将外部资源返回的上下文数据集成到模型中,用于生成响应或执行任务。
- LLM 应用将外部数据与模型内部知识结合,生成更准确或更丰富的响应。
-
上下文管理
MCP 支持动态管理 LLM 的对话上下文,确保多轮对话的连贯性。
- 上下文管理器维护对话的历史记录和状态。
- LLM 应用根据上下文生成连贯的响应。
MCP 的应用场景
MCP 广泛应用于以下场景:
- 增强型问答系统:通过集成外部数据源,提供实时、准确的答案。
- 智能助手:通过集成工具和服务,执行复杂任务(如预订、计算、搜索等)。
- 知识管理:通过集成文档库和数据库,提供专业领域的知识支持。
- 多轮对话:通过上下文管理,实现连贯的多轮对话。