Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope

本文主要是介绍Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文主要介绍如何在无需网关,无需配置 HttpClient 的情况下,使用 Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope 等 OpenAI 接口兼容的大模型服务。

1. 背景

一直以来,我们都在探索如何更好地利用大型语言模型(LLM)的能力。Semantic Kernel 作为一个微软开源的语义内核 SDK,它提供了一种高效的方式让用户可以在自己的应用程序中集成大语言模型 (LLM) 的强大功能。

同时,随着 OpenAI 的发展,其接口调用方式已被广泛采用和认可,成为了众多大型语言模型的标准接口或兼容标准。在 .Net 使用的 OpenAI 库,大家之前一直广泛使用的是 Azure.AI.OpenAI ,但是因为设计上的一些限制,我们无法直接调用本地大模型或者一些兼容 OpenAI 接口的大模型服务。因为内部审计,统一管理,成本分摊,无法直接访问或自建服务等原因,可以方便的修改服务地址,一直是大家的迫切需求。

近期 OpenAI 正式发布了第一个官方 .NET 版的测试 SDK,Azure.AI.OpenAI 的 2.x 版本,这个版本的 SDK 也将基于这个新的 SDK 进行开发。但是目前这个 SDK 还处于测试阶段。

在这里插入图片描述

在之前的文章中,我也介绍了如何在 Semantic Kernel 中使用本地大模型的临时方案。当前随着 Semantic Kernel 的不断完善,我们有了更方便的方式来调用本地大模型与阿里云灵积 DashScope 等一些兼容 OpenAI 接口的大模型服务。

2. 本地服务

相信大家都有自己的本地大模型服务,或者是一些兼容 OpenAI 接口的大模型服务。本地大模型部署的方式有很多种,也越来越简单,我们可以方便的使用 Ollama、llama-server(llama.cpp) 等开源项目,来运行 Llama 3, Phi 3, Qwen2, Mistral,Gemma 等流行的大模型。

在这里我介绍一下我近期的一个开源项目 LLamaWorker,一个基于 LLamaSharp 的 ASP.NET 项目,提供 OpenAI 兼容的接口,感兴趣的同学可以了解一下。

虽然都是开源项目,但相比较而言,Ollama 更适合普通用户。而 llama.cpp 和 LLamaWorker 更适合开发者,可以更方便的进行二次开发和项目集成。

3. 代码实现

在 Semantic Kernel 中,提供了一个实验性的功能,在 OpenAI 连接器中提供了自定义服务端点的功能。这个功能可以让我们直接调用本地大模型或者一些兼容 OpenAI 接口的大模型服务。

我们可以通过 AddOpenAIChatCompletion() 创建自定义的 OpenAI 服务。对于

var services = new ServiceCollection();
services.AddKernel();
services.AddOpenAIChatCompletion("qwen-long", new Uri("https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions"), "you key");

4. 注意事项

使用 AddOpenAIChatCompletion 时,我们需要输入完整的 ChatCompletion 端点,这与之前的使用习惯并不一致。

另外,由于改功能也尚处于试验阶段,并且其依赖的 Azure.AI.OpenAI 还是 1.0 的版本,对于后面的推出的 2.x 还并没有升级适配,还是需要时刻关注该接入方式的变更。

5. 最后

Semantic Kernel 的出现为开发者提供了一个强大且灵活的工具,使得在不同的环境下调用大型语言模型变得更加简单和高效。通过直接调用本地大模型或兼容 OpenAI 接口的服务,我们可以更好地控制数据的隐私和安全,同时也能够根据自己的需要调整服务的配置和性能。

此外,随着技术的发展和社区的贡献,我们期待看到更多的开源项目和工具的出现,这将进一步降低技术门槛,让更多的开发者和企业能够轻松地利用大型语言模型的强大能力。

这篇关于Semantic Kernel 直接调用本地大模型与阿里云灵积 DashScope的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1071657

相关文章

C#如何调用C++库

《C#如何调用C++库》:本文主要介绍C#如何调用C++库方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录方法一:使用P/Invoke1. 导出C++函数2. 定义P/Invoke签名3. 调用C++函数方法二:使用C++/CLI作为桥接1. 创建C++/CL

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

Maven如何手动安装依赖到本地仓库

《Maven如何手动安装依赖到本地仓库》:本文主要介绍Maven如何手动安装依赖到本地仓库问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、下载依赖二、安装 JAR 文件到本地仓库三、验证安装四、在项目中使用该依赖1、注意事项2、额外提示总结一、下载依赖登

springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法

《springboot整合阿里云百炼DeepSeek实现sse流式打印的操作方法》:本文主要介绍springboot整合阿里云百炼DeepSeek实现sse流式打印,本文给大家介绍的非常详细,对大... 目录1.开通阿里云百炼,获取到key2.新建SpringBoot项目3.工具类4.启动类5.测试类6.测

Android实现打开本地pdf文件的两种方式

《Android实现打开本地pdf文件的两种方式》在现代应用中,PDF格式因其跨平台、稳定性好、展示内容一致等特点,在Android平台上,如何高效地打开本地PDF文件,不仅关系到用户体验,也直接影响... 目录一、项目概述二、相关知识2.1 PDF文件基本概述2.2 android 文件访问与存储权限2.

python连接本地SQL server详细图文教程

《python连接本地SQLserver详细图文教程》在数据分析领域,经常需要从数据库中获取数据进行分析和处理,下面:本文主要介绍python连接本地SQLserver的相关资料,文中通过代码... 目录一.设置本地账号1.新建用户2.开启双重验证3,开启TCP/IP本地服务二js.python连接实例1.

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

使用Python开发一个简单的本地图片服务器

《使用Python开发一个简单的本地图片服务器》本文介绍了如何结合wxPython构建的图形用户界面GUI和Python内建的Web服务器功能,在本地网络中搭建一个私人的,即开即用的网页相册,文中的示... 目录项目目标核心技术栈代码深度解析完整代码工作流程主要功能与优势潜在改进与思考运行结果总结你是否曾经

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.