Spiga

2025年10月的文章归档

Net+AI智能体进阶4:MCP进阶扩展

2025-10-25 11:20:48

摘要:一、自定义传输协议 我们已经知道 MCP 的 Stdio 和 HTTP 传输协议了,今天我们深入探索一下 InMemory Transport(进程内传输)的实现原理,以及如何创建自定义传输协议。InMemory Transport 特别适合单进程内的 MCP 通信、单元测试和高性能场景。 1. InMemory Transport 原理 InMemory Transport 是一种在单进程内实现 MCP Client 和 Server 通信的传输方式。它使用内存中的数据结构(如 Pipe、Channel)进行消息传递,避免了跨进程通信的开销。 主要优势: 高性能:无需序列化到文件或网络,直接在内存中传递消息 易于测试:非常适合编写单元测试,不依赖外部进程或网络 同步控制:Client 和 Server 在同一进程,便于调试和状态管理 零依赖:不需要启动外部进程或监听端口 实现原理:InMemory Transport 基于 Pipe(管道)实现双向通信: 创建两个 Pipe: clientToServerPipe:Client → Server 方向 serverToClientPipe:Server → Client 方向 连接读写端: Client 写入 clientToServerPipe.Writer,Server 读取 clientToServerPipe.Reader Server 写入 serverToClientPipe.Writer,Client 读取 serverToClientPipe.Reader 消息序列化: 使用 JSON-RPC 格式序列化消息 每条消息以换行符 \n 分隔 sequenceDiagram participant C as McpClient participant CTP as clientToServerPipe participant STP as serverToClientPipe participant S as McpServer Note over C,S: 初始化连接 C->>CTP: Write (Request) CTP->>S: Read (Request) S->>STP: Wr…… 阅读全文

Net+AI智能体进阶3:MCP大模型的外挂商店

2025-10-18 12:28:24

摘要:一、MCP 协议基础 1. 协议概述 MCP 是一个基于 JSON-RPC 2.0 的应用层协议,专为 AI 应用程序设计。它定义了: 标准化消息格式:统一的请求/响应/通知结构 能力协商机制:Client 和 Server 协商支持的功能 双向通信:支持请求-响应和异步通知 错误处理:标准化的错误代码和异常处理 MCP 协议栈 MCP 协议建立在 JSON-RPC 2.0 之上,提供了额外的语义和约定: ┌─────────────────────────────────────────┐ │ AI Application Layer │ ← 使用 MCP 的应用 ├─────────────────────────────────────────┤ │ MCP Protocol Layer (Application) │ ← MCP 协议语义 │ (Tools, Resources, Prompts, etc.) │ ├─────────────────────────────────────────┤ │ JSON-RPC 2.0 Layer │ ← 基础 RPC 协议 ├─────────────────────────────────────────┤ │ Transport Layer (Stdio/HTTP) │ ← 传输机制 └─────────────────────────────────────────┘ 核心设计原则 原则 说明 示例 标准化 统一的协议格式 所有工具调用使用 tools/call 方法 协商式 能力协商机制 Client 和 Server 协商支持的功能 双向通信 支持请求和通知 Server 可以主动发送日志通知 类型安全 JSON Schema 验证 参数和返回值都有明确的类型定义 可扩展 支持自定义扩展 可以添加自定义 Capabilities MCP vs 其他协议 协议 用途 MCP 的优势 REST API 通用 Web 服务 MCP 专为 AI 上下文设计,支持工具发现和类型安全 gRPC 高性能 RPC MCP …… 阅读全文

Net+AI智能体进阶2:MEAI进阶扩展

2025-10-11 11:08:26

摘要:一、函数调用进阶用法 1. FunctionInvokingChatClient 深入解析 FunctionInvokingChatClient 是 MEAI 中负责函数调用的核心中间件。当我们调用 UseFunctionInvocation() 时,实际上是在管道中插入了这个强大的中间件,它会自动处理模型的函数调用请求。 工作原理与执行流程 FunctionInvokingChatClient 作为装饰器包装底层的 IChatClient,拦截对话请求并自动处理函数调用循环: 发送初始请求:将用户消息和可用工具传递给模型 检测函数调用:模型返回时,检查响应中是否包含 FunctionCallContent 执行函数:自动调用被请求的函数,获取执行结果 回传结果:将函数结果作为 FunctionResultContent 添加到对话历史 继续迭代:再次调用模型,让它基于函数结果生成最终回答 返回响应:直到模型不再请求函数调用,返回最终答案 这个循环过程完全自动化,开发者无需手动管理函数调用状态。 用户消息 → 模型(发现需要调用函数) → 执行函数 → 模型(基于结果) → 最终答案 ↑_______________________________________________| (自动迭代,最多 MaximumIterationsPerRequest 次) 核心配置选项 通过 UseFunctionInvocation(configure: options = ) 可以访问 FunctionInvokingChatClient 的配置选项。以下是各属性的详细说明: AdditionalTools(全局工具集) 用途:注册跨所有请求共享的工具,无需每次在 ChatOptions.Tools 中重复指定 适用场景:系统级工具(如时间、日期、日志) 与 ChatOptions.Tools 的关系:两者会合并,AdditionalTools 优先级更低 AllowConcurrentInvocation(并发调用) 用途:允许模型在单次响应中并发调用多个函数 性能优势:多个独立函数可并行执行,显著减少等待时间 注意事项:确保工具函数是线程安全的 示例场景:同时查询多个城市的天气 MaximumIterati…… 阅读全文

Net+AI智能体进阶1:NET平台AI底座

2025-10-04 17:26:05

摘要:一、M.E.AI概述 1. 引言 Microsoft.Extensions.AI (MEAI) 定位于.NET 生态系统的 AI 功能基础抽象层,提供如 IChatClient 和 IEmbeddingGenerator 等核心接口,旨在统一和简化.NET 应用与各类 AI 服务的集成方式 。 Microsoft.Extensions.AI (MEAI) 是一系列旨在为.NET 开发者提供与各种人工智能服务进行集成和交互的统一方法的库 。它的核心目标是提供一组通用的抽象,从而简化.NET 应用程序中生成式 AI 组件的表示,并实现与不同 AI 服务的无缝集成和互操作性。 MEAI 的核心功能主要围绕两个关键接口展开:ChatClient 和 IEmbeddingGeneratorTInput, TEmbedding。 2. MEAI 的核心功能和优势 IChatClient:用于与聊天型 AI 服务交互的客户端接口,支持多模态消息传递和流式响应。 IEmbeddingGeneratorTInput, TEmbedding:用于生成向量嵌入的通用接口,支持多种输入类型。 依赖注入 (DI) 和中间件支持:利用.NET 的成熟 DI 和中间件模式,简化组件集成。 这使得开发者可以轻松地将自动函数工具调用、遥测和缓存等功能集成到应用程序中。 服务无关性:MEAI 的设计目标是实现与特定 AI 服务的解耦,使得开发者可以在不同的 AI 提供商之间轻松切换,而无需修改应用代码。 这不仅提高了代码的可移植性,还简化了测试和模拟过程。 多模态支持:IChatClient 接口支持文本、图像和音频等多种消息类型,满足现代 AI 应用的需求。 流式响应:IChatClient 支持流式响应,允许应用程序逐步处理来自 AI 服务的输出,提升用户体验。 扩展性:MEAI 的设计允许开发者为不同的 AI 服务实现自定义的客户端和嵌入生成器,促进生态系统的多样化和创新。 与 Semantic Kernel 的集成:MEAI 提供了与 Semantic Kernel 的无缝集成,允许开发者利用 SK 的高级功能,同时享受 MEAI 提供的统一接口和抽象。 与 Microsoft Agent Framework 的集成:MEAI 还与 Microsoft Agent Framework …… 阅读全文