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

发布于:2025-05-15 ⋅ 阅读:(10) ⋅ 点赞:(0)

使用 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. 调用LLM
 var 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 模型。


网站公告

今日签到

点亮在社区的每一天
去签到