Semantic Kernel:图识文
多模态是每个LLM具有的能力,图片又是最常见的信息载体,GPT对图片的识别也很早就有了,随着GPT版本的迭代,效果越来越好。SK也是在很多就适配了图识文,只不过最近版本才支持本地图片的上传。(有点晚)
图片场景识别:
using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Connectors.OpenAI; var chatModelId = "gpt-4o"; var key = File.ReadAllText(@"C:\GPT\key.txt"); #pragma warning disable SKEXP0070 #pragma warning disable SKEXP0010 #pragma warning disable SKEXP0001 #pragma warning disable SKEXP0110 var kernel = Kernel.CreateBuilder() .AddOpenAIChatCompletion(chatModelId, key) .Build(); var chat = kernel.GetRequiredService<IChatCompletionService>(); var chatHistory = new ChatHistory(); chatHistory.AddUserMessage(new ChatMessageContentItemCollection { new TextContent("请说明这是那里,什么样的天气,大家在干什么?一共有多少人"), new ImageContent(File.ReadAllBytes("tam.jpg"),"image/jpeg") }); var settings = new Dictionary<string, object> { ["max_tokens"] = 1000, ["temperature"] = 0.2, ["top_p"] = 0.8, ["presence_penalty"] = 0.0, ["frequency_penalty"] = 0.0 }; var content = chat.GetStreamingChatMessageContentsAsync(chatHistory, new PromptExecutionSettings { ExtensionData = settings }); await foreach (var item in content) { Console.Write(item.Content); } Console.ReadLine();
图片:
结果:
文字识别:
using Microsoft.SemanticKernel.ChatCompletion; using Microsoft.SemanticKernel; using Microsoft.SemanticKernel.Connectors.OpenAI; var chatModelId = "gpt-4o"; var key = File.ReadAllText(@"C:\GPT\key.txt"); #pragma warning disable SKEXP0070 #pragma warning disable SKEXP0010 #pragma warning disable SKEXP0001 #pragma warning disable SKEXP0110 var kernel = Kernel.CreateBuilder() .AddOpenAIChatCompletion(chatModelId, key) .Build(); var chat = kernel.GetRequiredService<IChatCompletionService>(); var chatHistory = new ChatHistory(); chatHistory.AddUserMessage(new ChatMessageContentItemCollection { new TextContent("请识别图片上的文字,并输出"), new ImageContent(File.ReadAllBytes("japancard.png"),"image/jpeg") }); var settings = new Dictionary<string, object> { ["max_tokens"] = 1000, ["temperature"] = 0.2, ["top_p"] = 0.8, ["presence_penalty"] = 0.0, ["frequency_penalty"] = 0.0 }; var content = chat.GetStreamingChatMessageContentsAsync(chatHistory, new PromptExecutionSettings { ExtensionData = settings }); await foreach (var item in content) { Console.Write(item.Content); } Console.ReadLine();
图片:
结果:
文章来源微信公众号
想要更快更方便的了解相关知识,可以关注微信公众号
****欢迎关注我的asp.net core系统课程****
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
《asp.net core精要讲解》 https://ke.qq.com/course/265696
《asp.net core 3.0》 https://ke.qq.com/course/437517
《asp.net core项目实战》 https://ke.qq.com/course/291868
《基于.net core微服务》 https://ke.qq.com/course/299524
分类:
.net
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?