在nodejs中使用讯飞星火大模型3.0的demo

需求:

在nodejs引入讯飞星火大模型的api接口,

思路

看了一下官方文档 api连接为一个WebSocket Secure(WSS)连接,具体思路如下:

  1. 引入 cryptows 模块,分别用于生成加密签名和创建 WebSocket 连接。(这里要提前下载这两个模块
  2. 获取当前时间的 GMT 字符串,构建访问路径 tmp
  3. 获取讯飞星火的 API 密钥和密钥,以及应用程序的 ID。
  4. 使用 HMAC-SHA256 算法生成 tmp 的签名,并将其与 API 密钥等信息组成授权头。
  5. 将授权信息编码为 Base64 格式,构建访问星火 API 的 WebSocket URL。
  6. 创建 WebSocket 连接,并在连接打开时发送聊天请求。
  7. 监听连接的错误、消息和关闭事件,根据事件执行相应的处理,最终将结果通过 resolvereject 返回。

总体而言,是通过 WebSocket 连接与讯飞星火 API 进行通信,发送聊天请求并获取对应的响应。
 

获取appid,apiSecret,apiKey,检查token次数

  • 首先要注册星火大模型账号,然后进入控制台控制台-讯飞开放平台
  • 创建应用如下,自己创建(中间过程忘记了)

  • 最重要的获取次数选择自己需要的模型购买


     

最后检查控制台有无次数,获取到appid,apiSecret,apiKey

代码

// 访问讯飞星火 API 的方法
function initUrl() {return new Promise((resolve, reject) => {// 初始化问题值为空字符串let questionValue = '';// 引入加密和 WebSocket 模块const crypto = require('crypto');const ws = require('ws');// 获取当前时间的 GMT 字符串const dateString = new Date().toGMTString();// 定义星火 API 的主机和路径const host = 'spark-api.xf-yun.com';const path = '/v3.1/chat';// 构建用于签名的请求头let tmp = `host: ${host}\ndate: ${dateString}\nGET ${path} HTTP/1.1`;const APISecret = process.env.XH_APISECRET;  // 星火 APISecret 这里直接填入你自己的APISecret即可 格式如:ZjAafHbiODRdMjiyamM1azc3Yju1gMy1let signature = crypto.createHmac('sha256', APISecret).update(tmp).digest('base64');const APIKey = process.env.XH_APIKEY;  // 星火 APIKey 这里直接填入你自己的APISecret即可 格式如:4220a1b1881d40e8d70eb23fd1225cd1const authorization_origin = `api_key="${APIKey}", algorithm="hmac-sha256", headers="host date request-line", signature="${signature}"`;// 将授权信息编码为 Base64 格式let buff = Buffer.from(authorization_origin);const authorization = buff.toString('base64');// 构建访问星火 API 的 WebSocket URLconst signUrl = `wss://${host}${path}?authorization=${authorization}&date=${encodeURIComponent(dateString)}&host=${host}`;// 创建 WebSocket 连接let sock = new ws(signUrl);// 当连接打开时发送聊天请求sock.on('open', function () {console.log('讯飞星火连接sock连接成功!!!!');sock.send(JSON.stringify({header: {app_id: process.env.XH_APPID,  // 星火应用程序 ID  APPID 格式为 dbfab529},parameter: {chat: {domain: 'generalv3',temperature: 0.5,max_tokens: 1024,},},payload: {message: {text: [{role: 'user',content: 'js中数组去重的方法有哪些?',},],},},}));});// 监听连接的错误事件sock.on('error', function (err) {console.log('error: ', err);reject(err);});// 监听消息事件,处理 API 响应sock.on('message', function (data) {// 解析 API 响应的 JSON 数据const obj = JSON.parse(data);// 提取文本消息const texts = obj.payload.choices.text;// 将文本消息拼接到问题值中texts.forEach((item) => {questionValue += item.content;});});// 监听连接关闭事件,将结果通过 resolve 返回sock.on('close', function () {resolve(questionValue);});});
}// 导出 initUrl 函数
module.exports = initUrl;

注意:这里的 appid,apiSecret,apiKey, 一定要换成你自己的不然会收到错误的结果如下,还要检查自己是否有权限访问,检查自己是否有3.0的token次数,我封装的函数里面是对返回结果进行处理了的。

{"header":{"code":10005,"message":"InvalidParamError:(17:15:17.428) app_id is not same to kong app_id","sid":"cid000b592e@dx18b661de604b81d550","status":2}}

调用函数

 initUrl('数组去重的方法有哪些?').then((result) => {console.log('Result:', result);}).catch((err) => {console.error('Error:', err);});

控制台输出结果如下

记录一下。。。。。。。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/239045.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

力扣每日一题day37[113.路径总和ii]

给你二叉树的根节点 root 和一个整数目标和 targetSum ,找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1: 输入:root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…

Maven高级篇

Maven依赖管理原则; 可选依赖:隐藏当前项目中的指定的包,如此,别的包引用当前包时,当前包中的指定包就被隐藏了,在别的包中无法看到隐藏的包 排除依赖:指定排除引用包中所包含的依赖,防止与当…

基于Docker环境下的Jenkins搭建及使用

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

2023年12月21日开发正式版v1.2.3更新·本次更新30多个细节优化·完善丰富后台功能·加入演员关联机制

2023年12月21日开发正式版v1.2.3更新本次更新30多个细节优化完善丰富后台功能加入演员关联机制 产品简介 安卓苹果PCH5四端,蜻蜓z暗影版的衍生级版本,2023年优雅草蜻蜓z冬季雪花限定版,不仅继承了蜻蜓z的精良功能,还特色增加了弹…

Win系统修改Nginx配置结合内网穿透实现远程访问多个Web站点

文章目录 1. 下载windows版Nginx2. 配置Nginx3. 测试局域网访问4. cpolar内网穿透5. 测试公网访问6. 配置固定二级子域名7. 测试访问公网固定二级子域名 1. 下载windows版Nginx 进入官方网站(http://nginx.org/en/download.html)下载windows版的nginx 下载好后解压进入nginx目…

找不到msvcp120dll,无法继续执行代码的解决方法大全

当你尝试启动一个应用程序或游戏,并且遭遇到一个错误信息,告诉你“找不到msvcp120dll,无法继续执行代码”或者收到类似的提示,这说明你的操作系统中缺失了一个关键的动态链接库文件,即 msvcp120.dll。这种情况其实并不罕见&#x…

一文解析子网掩码和默认网关,成为网络设置达人

随着互联网的普及,越来越多的人开始接触并使用电脑和网络。然而,对于很多初学者来说,网络设置中的子网掩码和默认网关是两个相对陌生的概念。今天,我们就来深入解析这两个概念,让你轻松掌握网络设置技巧! …

从功能测试到测试开发,薪资翻倍,我整理的全网最全学习指南!

在这个吃技术的IT行业来说,我刚入行的时候每天做的也是最基础的工作,但是随着时间的消磨,我产生了对自我和岗位价值和意义的困惑。 一是感觉自己在浪费时间,另一个就是做了快2年的测试,感觉每天过得浑浑噩噩&#xff…

【快速应用开发】Blitz.js简介:Next.js的全栈框架

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

Swift 周报 第四十一期

文章目录 前言新闻和社区2024 年 Swift Student Challenge 公布现推出超过 30 个新的开发者活动 提案正在审查的提案 Swift论坛话题讨论推荐博文关于我们 前言 本期是 Swift 编辑组整理周报的第四十一期,每个模块已初步成型。各位读者如果有好的提议,欢…

深度学习目标检测(2)yolov3设计思想

YOLOv3基础 YOLOv3算法基本思想可以分成两部分: 按一定规则在图片上产生一系列的候选区域,然后根据这些候选区域与图片上物体真实框之间的位置关系对候选区域进行标注。跟真实框足够接近的那些候选区域会被标注为正样本,同时将真实框的位置…

Sentinel 流量治理组件教程

前言 官网首页:home | Sentinel (sentinelguard.io) 随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形…

macOS 开发 - MASShortcut

文章目录 关于 MASShortcut项目结构 快速使用源码学习检测是否有热键冲突处理 Event macOS 开发交流 秋秋群:644096295,V : ez-code 关于 MASShortcut MASShortcut 是一款快捷键管理工具,替代和兼容 ShortcutRecorder github : https://git…

Pytorch常用的函数(五)np.meshgrid()和torch.meshgrid()函数解析

Pytorch常用的函数(五)np.meshgrid()和torch.meshgrid()函数解析 我们知道torch.meshgrid()函数的功能是生成网格,可以用于生成坐标; 在numpy中也有一样的函数np.meshgrid(),但是用法不太一样,我们直接上代码进行解释。 1、两者…

最新消息丨OpenAI灰度测试GPT-4.5-turbo,快看看,你的版本是最新的吗?

刚刚,有朋友发来消息说:OpenAI 正在灰度测试它的最新模型——GPT-4.5-turbo。 于是,赶紧测了一下,发现果然如此。 相比于之前的 GPT-4-turbo,GPT-4.5-turbo 增强了6大能力。 分别是: √效率和性能&#x…

分子生成工具 - ResGen 评测

ResGen 模型是浙江大学药学院侯廷军老师课题组2023年发表在nature machine intelligence期刊上文章Nature Machine Intelligence | Volume 5 | September 2023 | 1020–1030,题目为:《ResGen is a pocket-aware 3D molecular generation model based on …

java: -source 7 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式)

目录 1、检查项目中 JDK 的设置: 2、检查模块中 JDK 的设置: 3、检查Idea 中的SDK设置 4、检查 IDEA 中 JDK 的设置(我出现的问题在这): 今天遇见了一个报错: 问题产生的原因是 JDK 版本太低&#xf…

【JAVA面试题】什么是深拷贝?什么是浅拷贝?

🍎个人博客:个人主页 🏆个人专栏: JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 一、解释 1. 深拷贝(Deep Copy): 2. 浅拷贝(Shallow Copy)&#xff1…

企业级“RAS”的数据平台如何炼成?

从“看报表”到“数据分析结果直接投入运营”,数字化正在深入企业经营,数据系统正在成为核心生产系统。相应的,企业对“作业挂了”、“系统崩了”、“算不出来”的容忍度越来越低——只有足够稳定、可靠、专业的数据系统,才能及时…

原生微信小程序中使用-阿里字体图标-详解

步骤一 1、打开阿里巴巴矢量图标库 网址:iconfont-阿里巴巴矢量图标库 2、搜索字体图标,鼠标悬浮点击添加入库 3、按如下步骤添加到自己的项目 步骤二 进入微信开发者工具 1、创建 fonts文件夹 > iconfont.wxss 文件,将刚才的代码复制…