首页 > 其他分享 >Semantic Kernel + 通义千问:借助 one-api 调用阿里云灵积 DashScope api

Semantic Kernel + 通义千问:借助 one-api 调用阿里云灵积 DashScope api

时间:2024-02-16 12:11:06浏览次数:32  
标签:Kernel Semantic 千问 DashScope api OpenAI 通义

one-api 相当于是一个兼容 OpenAI api 的 api 网关(针对 api 的反向代理),借助 one-api 可以通过已有的 OpenAI 客户端调用非 OpenAI 大模型的 api,比如通义千问。

DashScope 是阿里云提供的模型服务灵积的英文名称,这里通过调用 DashScope api 使用通义千问 qwen-max 大模型。

以容器方式部署 one-api

docker run --name one-api -d --restart always -p 3000:3000 -e TZ=Asia/Shanghai -v /home/ubuntu/data/one-api:/data justsong/one-api

部署之后,通过浏览器访问对应服务器地址的 3000 端口就可以登录控制台(默认用户名是 root,密码是 123456)。

首先需要创建渠道(channel),这里创建类型为“阿里通义千问”渠道,默认填充的模型中就包含 qwen-max 模型,在“密钥”输入框输入阿里云灵积控制台“API-KEY管理”中创建的 api key

然后在 one-api 控制台创建 令牌(token),这里创建的 token 就是在 Semantic Kernel 中使用的 OpenAI 的 apiKey

最后用 C# 写个简单的控制台程序,通过 OpenAIChatCompletionService 与通义千问大模型进行对话

using Microsoft.Extensions.DependencyInjection;
using Microsoft.SemanticKernel;

var builder = Kernel.CreateBuilder();
builder.Services.AddOpenAIChatCompletion("qwen-max", "sk-one-api-token");
builder.Services.ConfigureHttpClientDefaults(b =>
    b.ConfigurePrimaryHttpMessageHandler(() => new QwenRedirectingHandler()));

var kernel = builder.Build();

var prompt = @"<message role=""user"">博客园是什么网站</message>";
var answer = await kernel.InvokePromptAsync(prompt);
Console.WriteLine(answer);

class QwenRedirectingHandler() : DelegatingHandler(new HttpClientHandler())
{
    protected override Task<HttpResponseMessage> SendAsync(
        HttpRequestMessage request, CancellationToken cancellationToken)
    {
        request.RequestUri = new UriBuilder(request.RequestUri!) { Scheme = "http", Host = "one-api", Port = 3000 }.Uri;
        return base.SendAsync(request, cancellationToken);
    }
}

运行程序,通义千问给出下面的回答:

博客园是一个面向软件开发者的中文技术社区网站,创建于2004年。该网站主要提供博客空间、在线阅读和发布文章、分享开发技术信息、交流编程经验等功能服务。博客园汇集了众多的软件开发者和技术爱好者,内容覆盖程序设计、系统架构、数据库、人工智能、网络安全等多个领域,是IT从业人员学习、分享和成长的重要平台之一。

标签:Kernel,Semantic,千问,DashScope,api,OpenAI,通义
From: https://www.cnblogs.com/dudu/p/18016887

相关文章

  • P3643 [APIO2016] 划艇
    题意给定数列\(a,b\),试求出序列\(S\)的方案数,使得:\(a_i\leS_i\leb_i,S_{i-1}<S_i\)或\(S_i=0\)。\(S\)不能是全\(0\)序列。\(a_i,b_i\le10^9,n\le500\)Sol不难想到一个trivial的思路。设\(f_{i,j}\)表示确定了\(S_1\toS_i\),并且\(S......
  • vue 组合api 中父传子 provide和inject
    父组件import{provide,ref}from'vue'provide('data-key','thisisroomdata')子组件import{inject}from"vue";constroomData=inject('data-key')......
  • 编译调试kube-apiserver
    k8sv1.19.0cdkubernetes&&makegenerated_filescdcmd/kube-apiserver&&gobuild报错app/server.go:467:87:undefined:openapi.GetOpenAPIDefinitionscdkubernetes&&makegenerated_files#vscodelaunch.json{"name":......
  • 机器视觉-使用YoloV8的Python API
    参考文档:https://docs.ultralytics.com/modes/predict/#working-with-resultshttps://zhuanlan.zhihu.com/p/655162922https://thinkinfi.com/motorcycle-helmet-detection-using-deep-learning/示例说明关于yoloruntimesettings.yaml对训练过程的干扰yolosettings.y......
  • zookeeper虚拟机使用和java api使用zookeeper案例
    zookeeper动物园管理员中间件,提供协调服务作用于分布式系统,发挥其优势,可以为大数据服务支持java,提供java和c语言的客户端api什么是分布式系统?很多台计算机组成一个整体,一个整体一致对外并且处理同一请求内部的每台计算机都可以相互通信(rest/rpc)客户端到服务端的一次请求到......
  • 3.在NET.API中去使用Nacos
    nuget安装:1.nacos-sdk-csharp1.3.42.nacos-sdk-csharp.AspNetCore1.3.43.nacos-sdk-csharp.Extensions.Configuration1.3.41.新建项目NacosService1,NacosService2,和NacosClient配置NacosService1的appsettings.json,NacosService2也要配哈{"Logging":{&quo......
  • 实现阿里云模型服务灵积 DashScope 的 Semantic Kernel Connector
    SemanticKernel内置的IChatCompletionService实现只支持OpenAI与AzureOpenAI,而我却打算结合DashScope(阿里云模型服务灵积)学习SemanticKernel。于是决定自己动手实现一个支持DashScope的SemanticKernelConnector——DashScopeChatCompletionService,实现......
  • kube-apiserver限流配置
    k8sv1.19.0APF之前限流客户端访问kube-apiserver,限流参数有max-mutating-requests-inflight(默认值是200,对应操作类请求)和max-requests-inflight(默认值是400,对应查询类请求)。staging/src/k8s.io/apiserver/pkg/server/filters/maxinflight.goWithMaxInFlightLimit函数分别创建......
  • 在k8S中,各模块如何与API Server进行通信的?
    在Kubernetes(k8S)中,各个模块与APIServer的通信通常通过以下方式进行:RESTfulAPI:KubernetesAPIServer提供了一个统一的RESTful接口用于集群内所有组件之间的通信。任何想要操作集群资源(如Pods、Services、ConfigMaps等)的组件都会通过HTTP/HTTPS调用APIServer的端点......
  • 借助 .NET 开源库 Sdcb.DashScope 调用阿里云灵积通义千问 API
    在昨天的博文中,我们通过SemanticKernel调用了自己部署的通义千问开源大模型,但是自己部署通义千问对服务器的配置要求很高,即使使用抢占式按量实例,每次使用时启动服务器,使用完关闭服务器,也比较麻烦,而且越高级的大模型对服务器的配置越高。所以昨天的博文中使用了很低级的Qwen-7B......