AI之旅:Microsoft.Extensions.AI 送惊喜,Cnblogs.DashScope.AI 表支持

news/2024/12/2 12:03:55/文章来源:https://www.cnblogs.com/chinasoft/p/18581587

https://www.cnblogs.com/cmt/p/18577574

 

2024年10月8日,微软 .NET 官方博客发布了一篇博文 Introducing Microsoft.Extensions.AI Preview – Unified AI Building Blocks for .NET,给 .NET 开发者带来了一个小惊喜,.NET 类库将增加一个统一的调用 AI 服务的抽象接口层。

Microsoft.Extensions.AI is a set of core .NET libraries developed in collaboration with developers across the .NET ecosystem, including Semantic Kernel. These libraries provide a unified layer of C# abstractions for interacting with AI services, such as small and large language models (SLMs and LLMs), embeddings, and middleware.

这个小惊喜对我们的 AI 之旅是场及时雨。

今年3月,我们准备尝试基于 Semantic Kernel 使用通义千问大模型开发 AI 应用。当时由于阿里云模型服务灵积 DashScope (后来阿里云百炼取代了灵积)没有提供 .NET SDK,我们自己实现了 DashScope SDK for .NET,详见之前的博文。

在实现 DashScope .NET SDK 之后,由于 Microsoft.Extensions.AI 还没出生,为了能在 Semantic Kernel 中使用 DashScope SDK,我们还实现了 SemanticKernel.DashScope 与 KernelMemory.DashScope,详见之前的博文。

  • SemanticKernel.DashScope 实现了3个接口:IChatCompletionService 与 ITextGenerationService 以及 ITextEmbeddingGenerationService
  • KernelMemory.DashScope 实现了2个接口:ITextEmbeddingGenerator 与 ITextEmbeddingGenerator

实现这5个接口本身不是什么问题,问题是我们在实现与 Semantic Kernel 毫无关系的 DashScope SDK 时却要对 Semantic Kernel 与 Kernel Memory 产生依赖,这种纠缠以后将成为一种苦难。

现在救星出现了,有了 Microsoft.Extensions.AI,DashScope SDK 只需实现 Microsoft.Extensions.AI 的接口,从此与 Semantic Kernel 身处各自的世界,不再有任何牵连。

那如何让两个不同世界的 DashScope 与 Semantic Kernel 一起工作呢?第三者登场了,两情相悦的二人世界不需要第三者,但互不依赖的两个代码组件需要第三者——调用它们的应用开发者,但开发者要打通这两个世界需要有个前提,Semantic Kernel 要通过 Microsoft.Extensions.AI 的抽象接口调用 AI 服务,所以在同一天,微软 Semantic Kernel 官方博客也发布了一篇博文 Microsoft.Extensions.AI: Simplifying AI Integration for .NET Partners ,Semantic Kernel 支持 Microsoft.Extensions.AI 已是板上钉钉。

When Microsoft.Extensions.AI moves from preview to general availability (GA), we will enable this package in Semantic Kernel .NET

为了感谢这场及时雨,我们抢在 Semantic Kernel 之前,在 Microsoft.Extensions.AI 还处于预览版之际,在 DashScope SDK 中实现了对 Microsoft.Extensions.AI 的支持,实现了 IChatClient 与 IEmbeddingGenerator 接口,并且在11月27日发布了 nuget 包 Cnblogs.DashScope.AI

具体实现代码见 github 上的 PR https://github.com/cnblogs/dashscope-sdk/pull/51

接下来通过示例代码简单体验一下通过 Microsoft.Extensions.AI 的接口与通义千问大模型对话。

准备 .NET 控制台项目

dotnet new console
dotnet add package Cnblogs.DashScope.AI --prerelease

在下面的 C# 代码中调用 Microsoft.Extensions.AI 中 IChatClient 接口的 CompleteAsync 方法与通义千问大模型 qwen-coder-turbo 对话

using Cnblogs.DashScope.Core;
using Microsoft.Extensions.AI;var apiKey = "sk-xxxxxx";
var modelId = "qwen-coder-turbo";
IChatClient client = new DashScopeClient(apiKey).AsChatClient(modelId);
var response = await client.CompleteAsync("请用一两句话谈谈你对博客园AI之旅的看法");
Console.WriteLine(response.Message);
CS 复制 全屏

运行结果如下:

博客园的AI之旅是一次令人兴奋的技术探索,它展示了人工智能如何在内容创作、个性化推荐和用户互动等方面提升用户体验。这次旅程不仅推动了技术的进步,也为内容创作者和读者带来了新的可能性和便利。

由于目前 Semantic Kernel 还不支持 Microsoft.Extensions.AI,只能这样直接调用 IChatClient 接口简单体验一下。

等 Semantic Kernel 支持 Microsoft.Extensions.AI,就不再需要我们之前实现的 SemanticKernel.DashScope 与 KernelMemory.DashScope。

今天就简单写到这,感谢您关注园子的 AI 之旅。

 
 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/845370.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

word 图标变为文本图标 修复不起作用

参考 https://blog.csdn.net/qq_42925869/article/details/141466944,在HKEY_CURRENT_USER\Software\Classes\Applications目录下发现没有WORD的程序,因此参考其他程序结构,手动新建。 新建完成后再次应用office tool plus修复,修复完成后图标恢复。

CH585_IAP升级步骤

1、打开名为:McuProgramIAPTool.exe的工具,工具界面如图: 注:仅下载界面有效2、给接收器升级时,不需要保证2.4G处于连接状态,只要接收器插在PC上即可完成升级 3、选择接口:mi_034、点击搜索按钮,如果插入了2.4G接收器,会枚举到对应设备,返回已连接信息5、选择要升级的…

YASKAWA安川DX100控制柜维修看这几步

维修YASKAWA安川DX100控制柜需要综合运用多种诊断技巧,并遵循严格的安全操作规程。通过预防性维护和及时的故障处理,可以显著提高DX100控制柜的可靠性和使用寿命,从而保障企业生产线的稳定运行。同时,建议联系子锐机器人维修定期对YASKAWA安川机器人维修和保养。一、YASKAW…

待办事项太多?这些App让你轻松搞定!

在日常工作和生活中,许多人都有过忘记重要事项或任务堆积的困扰。为了提高工作效率和生活质量,越来越多的人开始寻求一种高效的方式来管理自己的任务和待办事项。幸运的是,随着技术的进步,各类待办事项App应运而生,它们不仅能够帮助我们合理安排时间,还能通过各种智能化功…

cors问题复现

目录环境配置前端服务器 (端口3000)配置API服务器 (端口5000)启用配置 环境 Debian12 192.168.2.102/24rambo@mac:~$ cat /etc/apt/sources.list.d/debian.sources Types: deb URIs: https://mirrors.tuna.tsinghua.edu.cn/debian Suites: bookworm bookworm-updates bookworm…

Qt/C++实现帧同步播放器/硬解码GPU绘制/超低资源占用/支持8K16K/支持win/linux/mac/嵌入式/国产OS等

一、前言 首先泼一盆冷水,在不同的电脑上实现完完全全的帧同步理论上是不可能的,市面上所有号称帧同步的播放器,同一台电脑不同拼接视频可以通过合并成一张图片来绘制实现完完全全的帧同步,不同电脑,受限于网络的延迟,命令交互的时间占用,不同硬件之间的主频偏差等,肯定…

EyeSoothe:用科技守护您的眼睛!

眼睛是心灵的窗口,而 EyeSoothe 则是您保护眼睛健康的智能助手。这款全新的护眼应用结合了人工智能和深度分析技术,为您提供全方位的视力管理服务,带来舒适与便利。 https://apps.apple.com/cn/app/eyesoothe/ 为什么选择 EyeSoothe? • AI智能试戴眼镜:借助AI虚拟试戴功能…

ai大模型流式输出------基于SSE协议的长连接实现

传统的http1.0请求开发,已经满足了我们日常的web开发。一般请求就像下图这样子,客服端发起一个请求(触发),服务端做出一个响应(动作): 有时会有诸如实时刷新,实时显示的场景,我们往往是客户端定时发起请求,不断的尝试获取最新的数据。但是每次请求都会创建并释放一个…

子卡设计原理图:232-基于FMC的2收2发TLK2711子卡

基于FMC的2收2发TLK2711子卡 一、板卡概述TLK2711 是千兆位收发器,专用于超高速双向点对点数据传输系统。TLK2711与时钟芯片SI5338相结合支持1.6Gbps至2.5Gbps的有效串行接口速度,可提供高达 2Gbps的数据带宽。板卡包含2路TLK2711,实现2收2发 。二、技术规格 ● 电源供电:F…

Python 存储验证码至redis

存储时考虑原子性 import redis# 实例化redis对象r = redis.Redis(host=localhost, port=6379, db=5,decode_responses=True)# 随机码的存储 def save_code(email,lifetime,code):# 原子操作,确保原子性 都执行或都不执行# 原子性保存验证码return r.setex(email,lifetime,cod…

【终端】终端配置、Vim使用相关

终端设置 MobaXterm主题 GithubVim 设置相关设置显示行号/etc/vimrc 是系统范围的初始化配置 ~/.vimrc 个人的vim初始化配置如果没有个人的vim初始化配置:touch ~/.vimrc vim ~/.vimrc设置好保存退出 wq使用相关跳转跳转指定行 :100跳转到100行 跳转到最开头 gg 跳转到最末…