当前位置: 首页 > news >正文

使用 Semantic Kernel 调用 Qwen-VL 多模态模型

使用 Semantic Kernel 调用 Qwen-VL 多模态模型

一、引言

随着人工智能技术的不断发展,多模态模型逐渐成为研究的热点。Qwen-VL 是阿里云推出的大规模视觉语言模型,支持图像、文本等多种输入形式,并能够进行图像描述、视觉问答等多种任务。本文将介绍如何使用 Semantic Kernel(SK)调用 Qwen-VL 多模态模型,帮助开发者快速上手。

二、前提条件

  1. 安装 Semantic Kernel:请参考官方文档进行安装。
  2. 获取 Qwen-VL 模型:请确保已获取 Qwen-VL 模型的访问权限和 API Key。
  3. 准备开发环境:本文以 C# 为例,请确保已安装 Visual Studio 或其他 C# 开发环境。

三、实战

3.1 创建项目并引用 Semantic Kernel

首先,创建一个新的 C# 项目,并引用 Semantic Kernel 库。可以通过 NuGet 包管理器安装 Semantic Kernel。

dotnet add package Microsoft.SemanticKernel

3.2 配置模型参数

在项目中创建一个配置文件,用于存储模型的相关参数,如模型 ID、API Key 等。

public class ModelConfig
{public string Model { get; set; }public string EndpointKey { get; set; }public string ApiKey { get; set; }
}

3.3 创建 Semantic Kernel 内核

使用配置文件中的参数,创建一个 Semantic Kernel 内核。

var modelConfig = new ModelConfig
{Model = "Pro/Qwen/Qwen2.5-VL-7B-Instruct",EndpointKey = "https://api.siliconflow.cn",ApiKey = "your-api-key"
};
var builder = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelConfig.Model, new Uri(modelConfig.EndpointKey), modelConfig.ApiKey);
Kernel kernel = builder.Build();

3.4 加载图像并创建聊天历史记录

从磁盘加载图像,并创建一个聊天历史记录,其中包含一条系统消息,指示 LLM 扮演所需的角色。

// 4. 从磁盘加载图像。
byte[] bytes = File.ReadAllBytes("C:\\Users\\73429\\Desktop\\SK调用多模态模型.png");// 5. 创建一个聊天历史记录,其中包含一条系统消息,指示LLM扮演所需的角色。
var chatHistory = new ChatHistory("你的工作是描述图片。");

3.5 添加用户消息

向聊天历史记录中添加一条包含图像和关于图像的问题的用户消息。

// 6. 添加一条包含图像和关于图像的问题的用户消息。
chatHistory.AddUserMessage(
[new TextContent("图片中描述了什么?"),new ImageContent(bytes, "image/png"),
]);

3.6 调用模型并获取回复

使用 Semantic Kernel 内核调用 Qwen-VL 模型,并获取回复。

var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();// 7. 调用LLMvar reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);Console.WriteLine(reply.Content);

四、完整代码示例

以下是一个完整的代码示例,展示了如何使用 Semantic Kernel 调用 Qwen-VL 多模态模型。

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
// 1. 初始化配置
var modelConfig = new ModelConfig
{Model = "Pro/Qwen/Qwen2.5-VL-7B-Instruct",EndpointKey = "https://api.siliconflow.cn",ApiKey = "your-api-key"
};
// 2. 创建一个OpenAI聊天完成的内核
var builder = Kernel.CreateBuilder().AddOpenAIChatCompletion(modelId,new Uri(endpoint),apiKey);// 3.构建内核
Kernel kernel = builder.Build();var chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();// 4. 从磁盘加载图像。
byte[] bytes = File.ReadAllBytes("C:\\Users\\73429\\Desktop\\SK调用多模态模型.png");// 5. 创建一个聊天历史记录,其中包含一条系统消息,指示LLM扮演所需的角色。
var chatHistory = new ChatHistory("你的工作是描述图片。");// 6. 添加一条包含图像和关于图像的问题的用户消息。
chatHistory.AddUserMessage(
[new TextContent("图片中描述了什么?"),new ImageContent(bytes, "image/png"),
]);// 7. 调用LLM
var reply = await chatCompletionService.GetChatMessageContentAsync(chatHistory);
Console.WriteLine(reply.Content);public class ModelConfig
{public string Model { get; set; }public string EndpointKey { get; set; }public string ApiKey { get; set; }
}

运行结果如下,可以看到正确解析Qwen-VL正确解析出图片中的内容。
在这里插入图片描述

五、总结

本文介绍了如何使用 Semantic Kernel 调用 Qwen-VL 多模态模型。通过以上步骤,开发者可以快速上手,实现图像描述、视觉问答等多种任务。希望本文能帮助您更好地了解和使用 Qwen-VL 模型。

http://www.xdnf.cn/news/442279.html

相关文章:

  • YashanDB V23.4 LTS 正式发布|两地三中心、库级闪回重磅特性上线,生产级可用性再升级
  • docker(二)初识 docker
  • Rust入门之高级Trait
  • 机器学习 Day17 朴素贝叶斯算法-----概率论知识
  • 2025视频协作工具全景解析:技术跃迁与场景重构
  • 【Linux网络】认识网络
  • 编译openssl源码
  • 【软件工程】基于数据流和依赖分析
  • 商城小程序源码介绍
  • OpenHarmony系统HDF驱动开发介绍(补充)
  • react+html2canvas+jspdf将页面导出pdf
  • 673SJBH基于ASP的公交系统
  • 鸿蒙OSUniApp 实现图片上传与压缩功能#三方框架 #Uniapp
  • SpringAI更新:废弃tools方法、正式支持DeepSeek!
  • 【springcloud学习(dalston.sr1)】Eureka 客户端服务注册(含源代码)(四)
  • 【行为型之中介者模式】游戏开发实战——Unity复杂系统协调与通信架构的核心秘诀
  • 3337. 字符串转换后的长度 II
  • 【更新】全国省市县-公开手机基站数据集(2006-2025.3)
  • NVMe简介2
  • UniApp 微信小程序绑定动态样式 :style 避坑指南
  • 电脑开机提示按f1原因分析及解决方法(6种解决方法)
  • Baklib内容中台AI革新智能服务实践
  • 【评测】免费体验dify工作流模式下腾讯语音转文字speech2text服务
  • 软件逆向基础-CE篇
  • 剖析提示词工程中的递归提示
  • 安全合规检查开源项目ComplianceAsCode/content详解及操作系统新产品开发适配指南
  • upload-labs通关笔记-第5关 文件上传之.ini绕过
  • 探索AI新领域:生成式人工智能认证(GAI认证)助力职场发展
  • 全流量解析:让安全防御从“被动挨打”升级为“主动狩猎”
  • 一分钟了解大语言模型(LLMs)