借助 .NET 开源库 Sdcb.DashScope 调用阿里云灵积通义千问 API
在昨天的博文中,我们通过 Semantic Kernel 调用了自己部署的通义千问开源大模型,但是自己部署通义千问对服务器的配置要求很高,即使使用抢占式按量实例,每次使用时启动服务器,使用完关闭服务器,也比较麻烦,而且越高级的大模型对服务器的配置越高。所以昨天的博文中使用了很低级的 Qwen-7B-Chat
模型,结果回答问题的效果很不理想,连博客园的网站域名都弄错了。
于是改变路线,尝试使用阿里云提供的模型服务灵积(DashScope
),但是灵积没有提供兼容 OpenAI api 的 api,虽然提供了 SDK,但仅支持 Python 与 Java,望 SDK 心叹的同时准备今天试试自己写 C# 代码调用灵积提供的通义千问 api。
在动手写代码之前,不抱任何希望地去 nuget 官网碰碰运气,搜了搜 qwen
,竟然惊喜地出现了一个搜索结果
有人在2个月之前就开始开发灵积的非官方 .NET SDK —— Sdcb.DashScope
,而且1个月之前发布了1.0版,真是及时雨,给作者点赞。
通过这 nuget 包的 Source repository 链接找到对应的 github 仓库 https://github.com/sdcb/Sdcb.DashScope ,立即签出代码,其中有单元测试代码,先跑一个测试体验一下。
先到阿里云灵积控制台的“API-KEY管理”中创建 api key,然后在自己的电脑上通过 user-secrets 保存 api key
dotnet user-secrets init
dotnet user-secrets set DashScopeApiKey sk-xxxxxxxxxxx
选择其中一个测试
[Fact]
public async Task OnlineChatTest()
{
using DashScopeClient c = new(_apiKey);
ResponseWrapper<ChatOutput, ChatTokenUsage> result = await c.TextGeneration.Chat("qwen-turbo", [ChatMessage.FromUser("今天长沙天气如何?")], new ChatParameters
{
EnableSearch = true
});
_console.WriteLine(result.ToString());
}
跑一下
dotnet test --filter OnlineChatTest
输出结果如下
ResponseWrapper { RequestId = 89e760f7-dc21-9461-8144-68629fa1ad00, Output = ChatOutput { Text = 今天是2024年2月11日,星期日,长沙的天气情况为晴朗。具体来说,湿度为75%,最低气温为3.0摄氏度,最高气温可达18.0摄氏度。风向以东南风为主,白天气温适宜,风力较小,仅为1级。夜间依然保持晴朗,风向转为东南风,风力同样维持在1级。建议外出时注意保暖,因为虽然白天阳光明媚,但早晚温差较大。空气质量评分为良,空气质量指数为97,相对较好。, FinishReason = stop }, Usage = ChatTokenUsage { OutputTokens = 126, InputTokens = 5 } }
接着,自己写个 .NET 控制台程序体验一下
准备控制台项目
dotnet new console -n dashscop-sample
cd dashscop-sample
dotnet add package Sdcb.DashScope
dotnet user-secrets init
dotnet user-secrets set DashScopeApiKey sk-xxxxxxxxxxx
添加 FrameworkReference
<ItemGroup>
<FrameworkReference Include="Microsoft.AspNetCore.App"></FrameworkReference>
</ItemGroup>
在 Progam.cs 写实现代码,使用 qwen-max
通义千问千亿级别大规模回答一个简单的问题博客园是什么网站
,看看效果
using Microsoft.Extensions.Configuration;
using Sdcb.DashScope;
using Sdcb.DashScope.TextGeneration;
IConfiguration config = new ConfigurationBuilder()
.AddUserSecrets<Program>()
.Build();
string apiKey = config.GetValue<string>("DashScopeApiKey") ?? "";
using DashScopeClient client = new(apiKey);
var result = await client.TextGeneration.Chat(
"qwen-max",
[ChatMessage.FromUser("博客园是什么网站")]);
Console.WriteLine(result.Output.Text);
public partial class Program
{ }
注:Sdcb.DashScope 贴心地提供了 ChatMessage.FromUser
方法
运行代码看看千亿级通义千问的回答(运行3次)
第1次的回答:
博客园是一个面向软件开发者的技术写作与分享平台,成立于2004年。它主要为程序员提供一个记录和分享技术知识、经验和见解的空间,内容涵盖编程语言、软件架构、算法、数据库、操作系统等多个领域。博客园在中国开发者社区中具有较高的知名度和影响力,吸引了大量IT从业人员和技术爱好者在此交流和学习。
第2次的回答:
博客园(www.cnblogs.com)是一个面向软件开发者的中文技术社区网站,创建于2004年。该网站主要提供博客空间服务,用户以软件开发者、IT从业人员以及对相关技术感兴趣的人员为主,他们在这里发表、分享和交流编程技术、架构设计、软件开发心得等各种专业技术文章。博客园在中国IT技术圈内具有较高的知名度和影响力。
第3次的回答:
博客园是一个专注于技术分享的中文博客平台,创建于2004年。该网站主要面向软件开发人员、IT专业人士以及对技术和知识分享感兴趣的人群,提供了一个发表和阅读原创技术文章的空间。用户可以在博客园上撰写和发布有关编程、系统架构、数据库、人工智能、云计算等各种IT技术领域的文章和心得,并与其他用户进行交流和讨论。
在博客园,许多知名的技术专家和行业大牛都有自己的博客空间,通过分享高质量的技术内容,博客园在IT技术领域内具有较高的影响力和知名度。
qwen-max
的回答果然比 Qwen-7B-Chat
强很多。
感谢 ZHOU Jie 给 .NET 社区带来的 Sdcb.DashScope!
借助 .NET 开源库 Sdcb.DashScope 调用阿里云灵积通义千问 API的更多相关文章
- 阿里版ChatGPT:通义千问pk文心一言
随着 ChatGPT 热潮卷起来,百度发布了文心一言.Google 发布了 Bard,「阿里云」官方终于也宣布了,旗下的 AI 大模型"通义千问"正式开启测试! 申请地址:http ...
- 开源PaaS工具CloudFoundry落地阿里云
原文:https://yq.aliyun.com/articles/292815?utm_content=m_37457 云计算技术的不断成熟和完善,尤其是IaaS平台的不断发展,使得越来越多的企业和 ...
- C#调用阿里云CDN API刷新缓存
使用CDN必须要解决CDN缓存的问题,要么在每次更新文件时生成不同的URL,要么在每次更新文件时刷新CDN缓存.我们在一个实际应用场景中用到了后者,所以需要调用阿里云CDN的API进行缓存刷新的操作. ...
- 使用Node.js调用阿里云短信的发送以及接收
为了使用Node.js调用阿里云短信服务,我自己写了个npm包, 目前实现了: 使用Node.js调用阿里云短信服务,发送短信: 使用Node.js调用阿里云短信服务以及MNS服务,接收用户上行短信 ...
- 通过AccessKey调用阿里云CDN接口刷新CDN资源案例
通过AccessKey远程调用阿里云CDN接口,快速实现自动化集成部署. CdnService.java package com.nfky.cdn; import com.aliyuncs.Defau ...
- Python 调用阿里云 API 收集 ECS 数据
#!/usr/bin/env python # coding: utf-8 # author: Wang XiaoQiang ''' 功能介绍: 1.调用阿里云API,收集所有区域 ECS 信息 2. ...
- python3调用阿里云语音服务
步骤 1 创建阿里云账号,包括语音服务里的企业实名 为了访问语音服务,您需要有一个阿里云账号.如果没有,可首先按照如下步骤创建阿里云账号: 访问阿里云 官方网站,单击页面上的 免费注册 按钮. 按照屏 ...
- 用ajax与fetch调用阿里云免费接口
最近学习态度比较积极,打算用react做一个小个人应用网站...所以从阿里云上买了些免费的接口,什么QQ音乐排行查询接口.IP地址查询.天气预报等等.调用时,发现身份校验可以通过简单修改头部信息的方式 ...
- Java调用阿里云短信通道服务【千锋】
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
- 零基础大数据入门教程:Java调用阿里云短信通道服务
这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...
随机推荐
- 继承 封装 多态 java的三大特性
import java.util.Scanner;class A{ int ivar = 7; void m1(){ System.out.print("A's m1, "); } ...
- docker容器常用操作
1.查看运行容器 docker ps: 2.查看所有容器 docker ps -a: 3.查看容器的日志 docker logs 容器名称/容器ID: 4.运行镜像 docker run --na ...
- Linux查看文件内容与处理文件
Linux查看文件内容与处理文件 目录 Linux查看文件内容与处理文件 查看文件内容 1.查看文件类型 2.查看整个文件 3.查看部分文件 处理文件 1.创建空文件 2.过滤文件内容 3.统计文件内 ...
- 【BUS】LIN Bus
概述 随着汽车内电子设备的增多,市场上对于成本低于 CAN 的总线的需求日益强烈,不同的车厂相继开发各自的串行通信(UART/SCI)协议,以在低速和对性能要求不高的场合取代CAN.由于不同车厂定义的 ...
- 百度网盘(百度云)SVIP超级会员共享账号每日更新(2024.01.02)
一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...
- [转帖]《Linux性能优化实战》笔记(一)—— 平均负载
最近在看极客时间的<Linux性能优化实战>课程,记录下学习内容. 一. 平均负载(Load Average) 1. 概念 我们都知道uptime命令的最后三列分别是过去 1 分钟.5 分 ...
- 【转帖】Linux查看二进制文件:一招制敌(linux二进制查看文件)
https://www.dbs724.com/146055.html 一招制敌:学会Linux查看二进制文件 在Linux操作系统中,二进制文件是一种常见的文件类型.如果你想深入了解一个二进制文件,可 ...
- [转帖]JVM NativeMemoryTracking ;jcmd process_id VM.native_memory;Native memory tracking is not enabled
目录 一.Native Memory Tracking (NMT) 是Hotspot VM用来分析VM内部内存使用情况的一个功能.我们可以利用jcmd(jdk自带)这个工具来访问NMT的数据. 1.N ...
- [转帖]mysql百万级性能瓶颈-数据库选型
项目中使用了mysql数据库,但数据量增长太快,不久到了百万级,很快又到表到了千万级,尝试了各种优化方式,最终效果仍难达到秒级响应,那么引发了我关于数据库选型到一些思考. 1.mysql的单表性能瓶颈 ...
- [转帖]一起来体验96核心、192线程CPU——第四代AMD EPYC处理器独家测试
http://k.sina.com.cn/article_1882475282_70344b12027010s1x.html 与第三代EPYC 7003系列处理器相比,新一代EPYC 9004系列处理 ...