借助 .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 ...
随机推荐
- SD Host控制器微架构设计-02
SD_clk 测试模式下,选择hclk,将扫描链中的时钟保持一致 clk_en表示可以通过软硬件关闭时钟 sd_if模块 模块中设置一些寄存器,我们可以对寄存器进行读写或者对于寄存器中的某些域段进行读 ...
- SD协议-时序02
SD Bus PAD internal card clock - 对于SD card来讲,时钟信号是一个输入 Data0-3 - inout类型,既可能是输入,又可能是输出 对于Data0-3输出的时 ...
- 例2.8 已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后。
1.题目 例2.8已知带头结点单链表L,设计算法实现:以表中第一元素作为标准,将表中所有值小于第一个元素的结点均放在第一结点之前,所有值大于第一元素的结点均放在第一元素结点之后. 2.算法分析 3.代 ...
- WebApi输出json 不要把首字母转为小写
services.AddControllers().AddJsonOptions(c => { c.JsonSerializerOptions.PropertyNamingPolicy = ne ...
- MySQL高可用搭建方案之(MMM)
有的时候博客内容会有变动,首发博客是最新的,其他博客地址可能会未同步,认准https://blog.zysicyj.top 注意:这篇转载文章,非原创 首发博客地址 原文地址 前言 MySQL的高可用 ...
- [转帖]【SQL SERVER】锁机制
https://www.cnblogs.com/WilsonPan/p/12618849.html 锁定是 SQL Server 数据库引擎用来同步多个用户同时对同一个数据块的访问的一种机制. 基 ...
- [转帖]学习如何编写 Shell 脚本(进阶篇)
https://juejin.cn/post/6935365727205457928 前言 在<学习如何编写 Shell 脚本(基础篇)>一文中已经讲解了 Shell 脚本编程的基础知识, ...
- [转帖]人大金仓和PG的关系
作者:山抹微云链接:https://www.zhihu.com/question/582960448/answer/2997151260来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转 ...
- [转帖]diskspd的使用
https://www.cnblogs.com/tcicy/p/10005374.html 参数翻译 可测试目标: file_path 文件abc.file #<physical drive n ...
- ElasticSearch降本增效常见的方法 | 京东云技术团队
Elasticsearch在db_ranking 的排名不断上升,其在存储领域已经蔚然成风且占有非常重要的地位. 随着Elasticsearch越来越受欢迎,企业花费在ES建设上的成本自然也不少.那如 ...