借助 .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 ...
随机推荐
- 解决Ubuntu 20.04下VS code无法使用中文输入法的问题
技术背景 在Ubuntu 20.04下,如果从应用商城中直接下载VS code,有可能会导致无法使用中文输入法的问题,那么就只能从其他地方写了中文再复制过来,非常的麻烦.从一些文章中收集到的信息来看, ...
- Clock Domain Crossing
Clock Domain Crossing CDC问题主要有亚稳态问题,多比特信号同步,握手信号同步,异步Fifo等 Topics Describe the SoC Design Issues Und ...
- 【C++】模板
模板 模板是一种参数化的多态性工具 参数化多态性是指将程序所处理的对象的类型参数化,是一段程序代码可以用于处理多种不同类型的对象 模板是一种使用无类型参数来产生一族函数或类的机制 参数化是指模板不以数 ...
- PolarD&N2023秋季个人挑战赛—Misc全解
签个到叭 题目信息 压缩包带密码,放到010查看PK头错误,改回去.. 解压后得到 562+5Yiw5Lmf5LiN6IO96L+Z5LmI566A5Y2V5ZGA77yM5b+r5p2l55yL55 ...
- Nginx的日志处理
Nginx的日志处理 背景 之前一直被各种咨询nginx的使用问题. 大部分都是性能, 加模块, 以及一些tcp端口等的问题. 其实这些都还好, 还有一个比较麻烦的问题时日志相关的. nginx的日志 ...
- [转帖]Unicode与utf的前世今生
https://www.cnblogs.com/naodong/p/12742987.html 历史上存在两个独立的尝试创立单一字符集的组织,即 国际标准化组织(ISO)于1984年创建的通用字符集( ...
- CentOS7最小安装注意事项
CentOS7最小安装注意事项 背景与说明 公司很多项目现在都是最小化安装的了. 自己之前为了方便都是使用GUI安装,很多地方可能都有遗漏 这里进行一下简单的安装总结, 避免以后新安装有缺失的项目 安 ...
- Nginx 解决 413 问题的配置.
Nginx 解决 413 问题的配置. Nginx 容易出现一个错误提示问题: worker_processes 1; events { worker_connections 1024; } http ...
- ELK运维文档
Logstash 目录 Logstash Monitoring API Node Info API Plugins Info API Node Stats API Hot Threads API lo ...
- 【记录一个问题】golang 中的 ecdsa(椭圆曲线加密) 算法很慢,因为用到了系统调用
代码中使用了椭圆曲线算法来签名,实际运行中发现不够快: func BenchmarkECDSA(b *testing.B) { privateKeyInst, err := parseSignatur ...