如何在使用密钥登录的时候请求ChatGPT的聊天接口并实现流式输出

一、ChatGPT的参考API地址

API Reference

二、官网相关API介绍

        下图是正常请求时候的请求头和body体,这样请求的话是等结果都加载出来后一起出现,并且返回的结果也是标准的json格式。
在这里插入图片描述
如果想要实现和ChatGPT一样的效果,官网的这样推荐的,如下图
在这里插入图片描述
在这里插入图片描述
从上图可以看到它用的是sse实现的,并且请求的body体加上Stream:true就可以。请求过来的格式可以看到不是标准的json格式,如下图,所以我们要处理成json格式,并拿到数据
流式输出body体
请求结果

三、具体实现代码

       我们要怎么拿到数据并实现流式输出,具体代码如下:

// 发送消息的方法
// 参数 content 是发送的消息
function sendAnswer(content) {// 请求的body体const data = JSON.stringify({model: 'gpt-3.5-turbo',messages: [{ role: 'user', content: content }],stream: true})fetch('https://api.openai.com/v1/chat/completions', {method: 'POST',// 这个headers包括 "Content-Type":"application/json" 和 "Authorization", `Bearer ${key}`// 其中这个key是你的登录密钥headers: headers,  body: JSON.stringify({model: 'gpt-3.5-turbo',messages: [{ role: 'user', content: content }],// 启用流式处理stream:true}),}).then( response => {// 创建一个可读取响应体数据的读取器对象const reader = response.body.getReader();let buffer = '';// 这一部分是创建了一个装回复聊天信息的盒子const layoutBox = document.createElement("div");layoutBox.classList.add("layout");// dialogue 是创建的一个大的父盒子的名称dialogue.appendChild(layoutBox);const answerBox = document.createElement("span")answerBox.classList.add("answerList","list")layoutBox.appendChild(answerBox)   // 因为流式输出会逐个字出来,所以定义 answers 存放回复的消息,不存放的话后续用innerHTML插入的时候会被覆盖,只显示最后一个字符let answers = [];   // 这是一个JavaScript Promise的语法,表示当读取器(reader)读取完成后,执行一个函数(processResult)来处理结果(result)return reader.read().then(function processResult(result){// 解码,并将解码后的数据存放到bufferbuffer += new TextDecoder().decode(result.value || new Uint8Array(),{stream: !result.done});// 这是以换行符将字符串分为多个部分,并过滤掉以[DONE]结尾的部分const parts = buffer.split('\n').filter(part => !part.endsWith('[DONE]'));;buffer = parts.pop();for(const part of parts){if(part.trim()){try {const response = JSON.parse(part.slice('data:'.length));console.log(response.choices[0].delta.content);answerContent = response.choices[0].delta.content;// 将内容存放到数组中,这个判断是answerContent 开头和结尾存在JSON解析不成功的部分,会在聊天记录的开始和结尾显示undefinedif (answerContent !== undefined) {answers.push(answerContent)}} catch (error) {console.error(`Failed to parse JSON: ${error.message}`);continue;}}}// 将数组中的内容以html的形式插入到聊天回复框中,如果不加join("")数组中的每一个字符都会被逗号隔开// 引入第三方库 marked 进行markdown格式化   import {marked} from "marked";answerBox.innerHTML = marked( answers.join(""),{headerIds: false,mangle: false});// 引入第三方库 hljs ,实现代码块高亮   import hljs from 'highlight.js'hljs.highlightAll(); if(result.done){return;}return reader.read().then(processResult);})})}

实现效果如下:
实现效果

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

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

相关文章

使用 ChatGPT 在几秒钟内生成鼠标移动机器人

在本教程中,我们利用 OpenAI 的语言模型 ChatGPT 的强大功能为鼠标移动机器人生成 Python 代码。 代码应每 2 秒将鼠标指针移动到屏幕上的随机位置。如何在指定时间自动打开计算机凭借基于自然语言输入生成代码的能力,ChatGPT 为希望快速实现某些功能而无…

wechaty搭建微信机器人——超详细版

文章目录 前言一、wechaty是什么?二、准备1.安装 Node.js(需要10.0版本以上)2.安装Wechaty 总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术…

基于ChatGPT的企业微信机器人

1、openAI账号 登录OpenAI的账号后,再点击右上角的“Personal”图标,然后点击“view API keys”进入API页面。 点击“create new secret key”按钮。 生成秘钥之后,把秘钥复制下来。 2、拉取项目代码 git clone https://github.com/zhay…

OpenChatKit :开源的 ChatGPT ,开箱即用!前OpenAI团队打造,GitHub 7000+星

MLNLP社区是国内外知名的机器学习与自然语言处理社区,受众覆盖国内外NLP硕博生、高校老师以及企业研究人员。 社区的愿景是促进国内外自然语言处理,机器学习学术界、产业界和广大爱好者之间的交流和进步,特别是初学者同学们的进步。 ChatGPT的开源平替来了,源代码、模型权…

关于“探码科技”,ChatGPT 如是说

最近 ChatGPT 很火,其高质量的对话让人叹为观止,关于“探码科技”,我们对 ChatGPT 进行了采访: ChatGTP,请你做一个自我介绍! 你好,我是 ChatGPT,一个由 OpenAI 开发的自然语言处理…

我利用 ChatGPT 提高工作效率的 5 种方式

技术应该是我们的朋友,而不是我们的敌人 ChatGPT 在 11 月的发布改变了世界。学校阻止该计划,程序员对他们工作中新发现的效率赞不绝口,而创意人员则怀疑他们的工作是否受到威胁。每个人都在想同一个问题:ChatGPT 的未来会是什么样…

ChatGPT技术报告

ChatGPT是一个由OpenAI开发的大型语言模型,是GPT(Generative Pretrained Transformer)系列模型的一部分。它使用了 Transformer 架构,并在大量的文本数据上进行了预训练。预训练的目的是使模型能够从大量的文本中学习语言知识和模…

体验了一下火爆全球的 ChatGPT,我震惊了

这几天,要说编程圈最热的话题,莫过于OpenAI的ChatGPT,写小说,写代码,找BUG,写论文,画漫画,谱曲……简直没有它干不了的事。 趁着下班时间,我也光速注册体验了一下&#…

起点中文网月票榜爬取及数据分析

此文转载自:https://blog.csdn.net/weixin_45036306/article/details/112385445 起点中文网月票榜爬取及数据分析 文章目录 起点中文网月票榜爬取及数据分析1. 数据爬取 1.1.1 准备1.1.2 网页分析1.1.3 层次爬取1.1.4 数据存储 2. 数据分析及可视化 1. 数据爬取 数…

8篇报告|马斯克称Chat GPT好得惊人

8篇报告|马斯克称Chat GPT好得惊人‼️ 最近,连续刷屏的AI应用ChatGPT火爆全球,成为科技圈第一大热潮。 马斯克在推特上评价 ChatGPT 称:“ChatGPT 好得惊人。我们离强得可怕的 AI 不远了。”比尔盖茨盛赞其影响“不亚于互联网诞…

万字长文解读:从Transformer到ChatGPT,通用人工智能曙光初现

ChatGPT掀起的NLP大语言模型热浪,不仅将各家科技巨头和独角兽们推向风口浪尖,在它背后的神经网络也被纷纷热议。但实际上,除了神经网络之外,知识图谱在AI的发展历程中也被寄予厚望。自然语言处理是如何伴随人工智能各个流派不断发…

ChatGPT 爆火背后的大语言模型到底是什么?

ChatGPT 是一个基于大规模预训练语言模型的自然语言处理技术。大规模预训练语言模型是指利用大量文本语料对神经网络进行预训练,使得神经网络可以学习到语言的各种规律、结构和特征,从而能够实现各种自然语言处理任务。 ChatGPT 是由 OpenAI 团队开发的…

ChatGPT时代,我们可能站到了自然语言编程的大门口

ChatGPT大火,我现在有种感觉:我们可能站到了自然语言编程的门口,一脚下去,也许能把门踹开。 当然,也可能会踢到一块铁板。 回顾我们的编程之路,基本上就是一个编程门槛不断降低的历史。 最早的一批前辈们…

ChatGPT的语言处理功能真有那么强吗?

作为一名语言类专业的学生,听说ChatGPT的语言能力已经超过70~80%的人类,能够与人进行正常对话,那么对它输入一些我们经常分析的歧义句,不知会有何表现。 进入 ChatGPT中文网 网站 朱鸾AI助手 ChatGPT中文网 - ChatGPT国内网页…

斯坦福等学者对ChatGPT做了在NLP几乎所有任务上的优劣势分析

进NLP群—>加入NLP交流群 一句话总结 在NLP的7个代表性任务中的20个流行数据集上系统性的分析ChatGPT的zero-shot学习能力,最终得出ChatGPT在许多有利于推理能力的任务上表现良好(例如,算术推理),而在解决序列标注等…

【关于ChatGPT的30个问题】15、ChatGPT会对自然语言处理和人工智能领域产生什么影响?/ By 禅与计算机程序设计艺术

15、ChatGPT会对自然语言处理和人工智能领域产生什么影响? 目录 15、ChatGPT会对自然语言处理和人工智能领域产生什么影响?

复旦邱锡鹏:深度剖析 ChatGPT 类大语言模型的关键技术

分享嘉宾 | 邱锡鹏 整理 | 禾木木,梦依丹 出品 | CSDN(ID:CSDNnews) ChapGPT 自问世以来,便展现出了令世人惊艳的对话能力。仅用两个月时间,ChatGPT 月活跃用户就达一亿,是史上用户增速最…

【自然语言处理】【ChatGPT系列】ChatGPT的智能来自哪里?

相关博客 【自然语言处理】【大模型】PaLM:基于Pathways的大语言模型 【自然语言处理】【chatGPT系列】大语言模型可以自我改进 【自然语言处理】【ChatGPT系列】WebGPT:基于人类反馈的浏览器辅助问答 【自然语言处理】【ChatGPT系列】FLAN:微…

ChatGPT 类大语言模型为什么会带来“神奇”的涌现能力?

作者 | 张俊林 责编 | 王子彧 出品 | CSDN(ID:CSDNnews) 如今,大语言模型已经彻底改变了自然语言处理 (NLP)的研发现状。众所周知,增加语言模型的规模能够为一系列下游 NLP 任务带来更好的任务效果,当…

抖音seo源码/源代码搭建/源代码部署打包-支持二开

1. 抖音seo源码/源代码搭建/源代码部署打包-支持二开 抖音SEO是指通过提高在抖音平台的关键词排名,来获取流量、获取客户的目的。抖音的流量主要分为付费流量、推荐流量和搜索流量,其中搜索流量因为付费太贵、上热门太累而成为另一种进入方式。与传统搜…