「AI人工智能」NodeJs使用openai流式请求与非流式请求

文章目录
  • 前言
  • 一、非流式请求
    • 1.1 无上下文模式
    • 1.2 上下文模式
  • 二、流式请求


前言

NodeJs使用openai流式请求与非流式请求


一、非流式请求

一次性返回所有数据,请求时间较久,兼容性好。

1.1 无上下文模式

router.post("/openai", async (req, res) => {let url = 'https://api.openai.com/v1/engines/text-davinci-003/completions' // 3.5可用const response = await axios.post(url, {max_tokens: 1000,prompt: req.body.content,}, {headers: {'Authorization': 'Bearer ' + chat_key,'Content-Type': 'application/json'}});responseJSON(res, response)
})

1.2 上下文模式

// gpt3.5 - 完成 
router.post("/chart", async (req, res) => {let param = req.bodyvar data = JSON.stringify({messages: [{"role": "user","content": param.content}],model: chatConfig.model || 'gpt-3.5-turbo',frequency_penalty: chatConfig.frequency_penalty || 0,max_tokens: chatConfig.max_tokens || 1000,presence_penalty: chatConfig.presence_penalty || 0,temperature: chatConfig.temperature || 1,top_p: chatConfig.top_p || 1});var config = {method: 'POST',url: 'https://api.openai.com/v1/chat/completions', // 反向代理可用 无反向代理请求超时headers: {'Authorization': 'Bearer ' + chat_key,'Content-Type': 'application/json',},timeout: 60 * 1000,data: data, // POST 反向代理可用};axios(config).then((response) => {console.log(JSON.stringify(response.data));responseJSON(res, response.data.choices[0].message)}).catch((error) => {console.log(error);responseJSON(res, error)});
})

二、流式请求

即时数据响应,请求时间短,交互效果好,不一定适配所有系统。

let sendyhChatSteam = async (req, res, param) => {let _res = res;let data = {data: JSON.stringify({messages: [{"role": "user","content": param.content}],frequency_penalty: chatConfig.frequency_penalty || 0,max_tokens: chatConfig.max_tokens || 1000,presence_penalty: chatConfig.presence_penalty || 0,temperature: chatConfig.temperature || 1,top_p: chatConfig.top_p || 1})};let options = {hostname: 'api.openai-proxy.com',path: 'gpt-3.5-turbo',method: 'POST',headers: {'Content-Type': 'application/json'}};let question = ''let request = http.request(options, (response) => {response.setEncoding('utf8');// 监听 'data' 事件,获取返回的数据response.on('data', (chunk) => {question += chunk// 在这里处理每个数据块console.log(question);});// 监听 'end' 事件,表示数据传输完成response.on('end', () => {console.log('------------------监听 end 事件,表示数据传输完成-----------------------------');console.log(question);});});// 可以通过流式方式将数据写入请求request.write(JSON.stringify(data));// 结束请求request.end();
}

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

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

相关文章

算法训练day42leetcode01背包问题 416. 分割等和子集

01 背包 题目描述 有n件物品和一个最多能背重量为w 的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品只能用一次,求解将哪些物品装入背包里物品价值总和最大。 题目分析 每一件物品其实只有两个状态,取或者不取&…

CNC机加工引入复合机器人可以提高生产效率,降低成本

CNC加工企业在过去依赖大量的人工来完成生产线上的各项任务,包括CNC机床的上下料、物料搬运以及部分装配工作。然而,随着产能需求的不断增长和人工成本的持续上升,企业逐渐意识到自动化升级的重要性与迫切性。 面临的挑战与需求: …

Layer1 新星 Partisia Blockchain 撑起隐私保护伞,助你无忧加密交易!

信息纷繁芜杂、真假掺半的 Web3 行业,如何才能更快、更安全地实现快速交易?Partisia Blockchain 或许交出了一份满意的技术答卷。致力于隐私保护、互操作性和可持续创新的 Layer1 区块链新星,Partisia Blockchain 以安全公平标榜,…

VScode(Python)使用ssh远程开发(Linux系统树莓派)时,配置falke8和yapf总结避坑!最详细,一步到位!

写在前面:在Windows系统下使用VScode时可以很舒服的使用flake8和yapf,但是在ssh远程开发树莓派时,我却用不了,总是出现问题。当时我就开始了漫长的探索求知之路。中间也请教过许多大佬,但是他们就讲“能用不就行了&…

Jeff Bezos的投资正开始见效

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Vue+wow.js+animate.css实现动画效果

1.介绍 Wow.js 是一个轻量级的 JavaScript 库,用于在网页滚动时实现动画效果。基于 CSS3 的动画库 Animate.css,并通过触发 CSS 动画类来创建各种引人注目的过渡和动画效果。 使用 Wow.js,可以很容易地为网页中的元素添加动画效果&#xff…

MVC架构模式学习笔记(动力节点老杜2022)

GitHub代码笔记:laodu-mvc: 动力节点学习javaweb中的mvc笔记。 文章目录 1.视频链接 2.不使用MVC架构模式程序存在的缺陷 3.MVC架构模式理论基础 4.JavaEE设计模式-DAO模式 5.pojo & bean & domain 6.业务层抽取以及业务类实现 7.控制层 8.MVC架构模式与三…

Android apk 打包及签名

Android apk打包及签名主要分为3步: 1. 生成签名key store ➜ ~ keytool -genkey -v -keystore meet.jks -alias meet -keyalg RSA -keysize 2048 -validity 10000 keytool参数详解: -genkey:指示keytool生成一个新的密钥对。 -v&#xff…

Mac中文输入法区分回车和提交

一、功能描述: 在搜索框中输入关键词,回车跳转至搜索结果页 二、项目背景记录: vue3vuetify的项目 三、问题描述: 中文输入法。 在Windows下输入拼音后,敲击空格 > 显示第一个联想词,敲击回车 > 拼…

Python中的列表推导式是什么,并给出一个例子?

Python中的列表推导式(List Comprehension)是一种优雅且简洁的方式,用于快速生成列表。它是Python迭代机制的一种扩展,允许你使用一行代码就能根据已有的列表或可迭代对象(如元组、字符串、集合等)创建新的…

ElasticSearch之Nested对象

写在前面 本文看下es的nested嵌套对象相关内容。 1:es用了啥范式? 在关系型数据库中定义了6大数据库范式,即1,2,3,BC,4,5的NF(normal form),分别如下: 1N…

学习编程为什么选择C/C++,那么C++的强大之处到底体现在哪里呢?

学习编程为什么选择C/C,那么C的强大之处到底体现在哪里呢? 在开始前我有一些资料,是我根据网友给的问题精心整理了一份「C的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共…

Retelling|Facebook1

录音 Facebook 1 Retelling|Facebook1 复述转写 Today Im totally going to talk about Facebook. The aspects of this (its)rising fame and fortune, and the rise (小停顿)in(rising) fame and fortune of s founder Mark Zuckerberg, Mark Zuckerberg created this plat…

ctf_show笔记篇(web入门---代码审计)

301:多种方式进入 从index.php页面来看 只需要访问index.php时session[login]不为空就能访问 那么就在访问index.php的时候上传login 随机一个东西就能进去从checklogin页面来看sql注入没有任何过滤 直接联合绕过 密码随意 还有多种方式可以自己去看代码分析 30…

力扣串题:字符串中的第二大数字

此题的精妙之处在于char类型到int类型的转化&#xff0c;需要运算来解决 int secondHighest(char * s) {int max1-1;int max2-1;int szstrlen(s);int i 0 ;for(i0;i<sz;i){if(s[i]>0&&s[i]<9){if((s[i]-0)>max1){max2max1;max1s[i]-0;}else if((s[i]-0)&l…

峟思仪器助力尾矿库安全监测

在矿业领域&#xff0c;尾矿库的安全监测是保障矿山持续、安全运营的关键环节。尾矿库通常用于存放矿山开采过程中产生的固体废物&#xff0c;如果管理不善&#xff0c;可能会造成重大的安全事故&#xff0c;对环境和人类健康造成严重威胁。因此&#xff0c;采用先进的监测技术…

Sqllab第一关通关笔记

知识点&#xff1a; 明白数值注入和字符注入的区别 数值注入&#xff1a;通过数字运算判断&#xff0c;1/0 1/1 字符注入&#xff1a;通过引号进行判断&#xff0c;奇数个和偶数个单引号进行识别 联合查询&#xff1a;union 或者 union all 需要满足字段数一致&…

SAR洪水检测分析

对于洪水检测,经常使用合成孔径雷达 (SAR) 卫星图像。这里显示了 SAR 图像用于洪水检测的优缺点。 优点: - 无论天气如何,都能够捕获图像,从而实现高时间分辨率。 - 由于镜面反射,很容易区分水和其他物体。 缺点: - 图像中有很多斑点噪声。 - 凭直觉很难理解图像中出现…

机界先锋:Figure 01实现全面沟通与AGI通用人工智能的征途

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

yum安装mysql 数据库tab自动补全

centos7上面没有mysql&#xff0c;它的数据库名字叫做mariadb [rootlocalhost ~]#yum install mariadb-server -y [rootlocalhost ~]#systemctl start mariadb.service [rootlocalhost ~]#systemctl stop firewalld [rootlocalhost ~]#setenforce 0 [rootlocalhost ~]#ss -na…