当前位置: 首页 > 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 模型。

相关文章:

  • Spring Boot 自动装配技术方案书
  • 什么是alpaca 或 sharegpt 格式的数据集?
  • QT之QComboBox组件
  • AbMole解读:脂质体的关键组分和主要合成方法
  • 致远OA项目管理应用包简介【附百度网盘链接】
  • C++ 并发编程(1)再学习,为什么子线程不调用join方法或者detach方法,程序会崩溃? 仿函数的线程启动问题?为什么线程参数默认传参方式是值拷贝?
  • CPU的用户态(用户模式)和核心态(内核态)
  • CARS geom文件
  • 【经验记录】为什么安装node时会依赖Python
  • 实验九视图索引
  • Ota++框架学习
  • 如何查看打开的 git bash 窗口是否是管理员权限打开
  • EasyRTC嵌入式音视频通信SDK打造带屏IPC全场景实时通信解决方案
  • 全新开发-iVX图形化编程VS完整IDE
  • 正向代理与反向代理区别及应用
  • React学习———useContext和useReducer
  • 深度伪造对知识产权保护的新挑战与应对之策
  • 天拓四方盛装亮相第二十七届中国北京国际科技产业博览会
  • Colorama:Python终端色彩美化从入门到高级
  • 网络检测工具InternetTest v8.9.1.2504 单文件版,支持一键查询IP/DNS、WIFI密码信息
  • 绍兴网站建设推广/搜索引擎营销的优缺点
  • 网站管理 上传模板/武汉seo排名扣费
  • 报价网站制作/培训机构
  • 天创网站/镇江搜索优化技巧
  • 毕设做网站是不是太low/优化大师win7官方免费下载
  • 如何免费做网站推广/温州网站建设