2025-11-05
C#
00

什么是 MCP?

MCP(Model Context Protocol) 是一种面向大型语言模型(LLM)的新型连接协议,旨在为 AI 应用提供统一的方式来访问多种工具、数据源和服务。它就像给 AI 系统安装了一个 “USB-C 接口”,让不同的功能模块能通过一个标准化的管道无缝协作,实现更智能、更灵活的应用。技术上理解其实还是API这一套。

注释

  • 这里将 MCP 类比于“USB-C 接口”,意在说明其标准化的价值。就像如今许多电子设备都采用 USB-C 接口来提高兼容性和简化连接,MCP 也在做同样的事情,但对象是 AI 工具和数据源。

image.png


MCP 为什么比传统 API 更胜一筹?

在传统的应用开发中,如果需要连接不同的 API(如日历、邮件、数据库等),往往要分别进行多次集成,编写不同的代码,处理各自的鉴权、错误处理和文档。这不仅开发周期长,而且后期维护成本也很高。

MCP 提出的解决方案

  1. 单一协议:MCP 提供了一个标准化的“接口”,开发者在初次集成后,即可通过同一个协议访问多个工具或服务。
  2. 动态发现:一旦连接了 MCP,AI 模型能够动态地发现并与可用工具交互,而不需要对每个工具进行硬编码配置。
  3. 双向通信:和大部分“一次性请求-响应”的传统 API 不同,MCP 支持持续的双向通信——实现类似 WebSocket 那样的实时交互。

注释

  • 传统 API 类似于独立的门锁,每扇门都有自己的钥匙;MCP 则是一把万能钥匙。
2025-11-05
C#
00

在人工智能快速发展的今天,多模态AI应用已成为技术前沿的热点。微软开源的Semantic Kernel为C#开发者提供了强大的工具,使创建多模态图像分析应用变得更加简单和高效。本文将深入探讨如何利用C#和Semantic Kernel构建图像分析应用,并提供详细的代码示例。

什么是Semantic Kernel?

Semantic Kernel是微软开源的一个轻量级AI开发套件,它能让开发者轻松构建AI Agent,并将最新的AI模型集成到C#、Python或Java代码库中。它的核心优势在于将传统编程语言与大型语言模型(LLM)AI技术相结合的能力,使开发者能够利用熟悉的编程语言,同时享受先进AI技术带来的便利。

Semantic Kernel的多模态能力

多模态是现代LLM的重要能力,特别是在处理图像、文本等不同类型数据时。Semantic Kernel通过集成OpenAI、Azure OpenAI等服务,支持图像分析和其他多模态任务,包括:

  • 图像内容识别与描述
  • 图像中文本提取
  • 图像场景理解与分析
  • 基于图像的问答
2025-11-05
C#
00

在AI快速发展的时代,越来越多的开发者希望将智能对话功能集成到自己的应用中。本文将详细介绍如何使用C#和Microsoft Semantic Kernel框架连接DeepSeek AI服务,构建一个功能完善的聊天应用。文章包含完整代码示例和详细注释,适合有基础C#知识的开发者学习。这个库NB的就是支持所有大模型,不过有些地方要调整一下。

项目概述与技术栈

我们将构建一个控制台应用程序,支持以下功能:

  • 与DeepSeek AI进行自然语言对话
  • 流式响应显示(打字机效果)
  • 会话历史管理
  • 完善的错误处理

使用的核心技术和库:

  • C# 10+
  • .NET 6/7/8
  • Microsoft Semantic Kernel
  • OpenAI C# SDK (用于连接DeepSeek API)
  • Microsoft.Extensions.Hosting

环境准备与项目设置

创建项目并安装依赖

首先,创建一个新的控制台应用程序,并安装必要的NuGet包:

Bash
dotnet add package Microsoft.SemanticKernel dotnet add package Microsoft.SemanticKernel.Connectors.OpenAI dotnet add package Microsoft.Extensions.Hosting
2025-11-05
C#
00

通过使用 Microsoft 的 Semantic Kernel,我们可以轻松地创建和管理聊天历史记录,以便在聊天会话中保持上下文和连贯性。本文将详细介绍如何使用 Semantic Kernel 调用 Ollama 历史聊天应用,并提供多个示例和注释,帮助开发者更好地理解和实现这一功能。

什么是 Semantic Kernel?

Semantic Kernel 是一个强大的工具,旨在简化与 AI 模型的交互。它提供了多种功能,包括聊天记录管理、函数调用和多模态支持,使开发者能够构建更智能的应用程序。

创建聊天历史对象

聊天历史对象是一个用于维护聊天会话中消息记录的列表。以下是如何在 C# 中创建一个聊天历史对象的示例:

C#
using Microsoft.SemanticKernel.ChatCompletion; // 创建聊天历史对象 ChatHistory chatHistory = new ChatHistory(); chatHistory.AddSystemMessage("你是一个有帮助的助手。"); chatHistory.AddUserMessage("可以点什么?"); chatHistory.AddAssistantMessage("我们有比萨、意大利面和沙拉可供选择。你想点什么?"); chatHistory.AddUserMessage("我想要第一个选项。");
2025-11-05
Python
00

在Python开发中,你是否遇到过这样的困扰:为了一个简单的计算功能,却要定义一个完整的函数?或者在使用map()filter()等高阶函数时,总是需要额外定义辅助函数?这些看似微不足道的问题,却会让代码变得冗长和难以维护。

Lambda表达式就是解决这些问题的利器!作为Python中的"匿名函数",它能让你用一行代码完成原本需要多行的功能定义,让代码更加简洁、优雅。无论你是在进行数据处理、GUI事件绑定,还是函数式编程,掌握Lambda表达式都能显著提升你的开发效率。

本文将从实际问题出发,通过丰富的代码实战,带你深入理解Lambda表达式的核心概念、使用场景和最佳实践,让你的Python编程技巧更上一层楼!

🔍 什么是Lambda表达式?

Lambda表达式是Python中定义匿名函数的一种简洁方式。它允许你在需要函数的地方直接定义简单的函数,而无需使用def关键字正式声明。

📝 基本语法

Python
lambda 参数: 表达式

让我们通过对比来理解Lambda的威力:

Python
# 传统函数定义 def square(x): return x ** 2 # Lambda表达式 square_lambda = lambda x: x ** 2 # 使用效果完全相同 print(square(5)) # 输出: 25 print(square_lambda(5)) # 输出: 25

image.png

🎯 Lambda表达式的核心优势