无聊写个 chatgpt 玩玩!这不得试一试 openai 的聊天和绘画功能

chatgpt 最近很火。使用 chatgpt 问一些问题还是很有用的。比如面试题,面试题的答案。简直不要太爽。

不过闲来无事,也使用 openai 提供的api ,写了几个小页面,可以进行聊天,和绘画。

项目放在 github 上了:https://github.com/wtdsn/chat-draw-by-openai

先看看页面吧!

image.png image.png

ok ,话不多说,说说整个过程吧

API 文档

地址 :https://platform.openai.com/docs/api-reference

可以看到,openai 提供了许多的 api 。它甚至提供了 openai 的 npm 包 。并且给了一些使用例子。

当然可以直接使用 openai 提供的 node 模块。可以省去一堆麻烦事。

在node 中怎么使用,看文档就可以了

调用这些 api ,需要一个 apikey 。需要注册 openai 账号。
注册后在 : https://platform.openai.com/account/api-keys 生成 apikey ,并且把它记下来就可以了。

不过这些 api 接口并不是免费的。请求会消耗一些 token ,这些 token 是花钱的。当然新用户有 5美元。能用很久

项目搭建

此项目的搭建呢!我使用了 vite 。不得不说 , vite 确实方便。

项目结构

key.txt 我记录了 apikey 。 github 中没有,丢上去就失效!

image.png

我写了三个页面

entry.html : 入口页面。输入 apikey ,然后选择去聊天或者去生成图画。

index.html : 聊天页面

draw.html : 生成图画页面

具体的一些 css ,或者如何生成聊天内容。具体就看 js 文件就行了

使用服务端推送

我注意到,chatgpt 回复的内容,是一点一点生成的。但是它可不是故意的。而是这样子用户感知上会比较快。
如果等全部内容都回复完再显示,可能需要等上好几秒。

在 chat 的api中,提供了一个 stream 参数 。那么服务端在回复的时候,是使用服务端推送的,也就是数据是一点一点推送过来的。而不是一次性返回!这样子可以快速的渲染出一些回复的内容,而不需要等待全部生成完再渲染

具体可以了解一下 :EventSource

不过, fetch api 可以处理返回的流数据。倒也不用使用 EventSource 了。

使用例子

FetchH 类 , 对 fetch 进行封装。这里参考了 axios 的一些思路。在请求时,就可以避免重复的配置

class FetchH {constructor(url, config = {}) {if (typeof url === 'string') {config.url = url} else if (typeof url === 'object') {config = url}this.config = config}request(body) {// 合并请求参数let d = {...this.config.body,...body}return fetch(this.config.url, {method: this.config.method,headers: this.config.headers,body: JSON.stringify(d)})}
}// 返回函数,可直接调用
function createFetchH(url, config) {let fh = new FetchH(url, config)return (fh.request).bind(fh)
}// 创建 fetch
fetchH = createFetchH('https://api.openai.com/v1/chat/completions', {method: "POST",headers: {'Content-Type': 'application/json','Authorization': 'Bearer ' + apiKey,},body: {model: "gpt-3.5-turbo",temperature: 0.3,stream: true,max_tokens: 1000}
})

sendMsg 发送请求 (有删减)

async function sendMsg() {fetchH({ messages: chatStack }).then(res => {// 获取 readerreturn res.body.getReader()}).then(reader => {// 读取内容return getStream(reader)})
}

getStream 读取数据

function getStream(reader, textEl) {let ans = '', _role = ''// 文本转码const utf8Decoder = new TextDecoder("utf-8");return _getStream()// 读取流数据function _getStream() {return reader.read().then(function (result) {// 如果数据已经读取完毕,直接返回if (result.done) {return {role: _role,content: ans}}let { role, content } = parseText(utf8Decoder.decode(result.value))if (role) {_role = role}if (content) {ans += content}// 逐步添加文字requestAnimationFrame(() => {textEl.innerHTML = parse(ans)scroll()})// 还有数据,继续读取return _getStream();})}
}

parseText 解析文本 , 获取后的数据是字符串。可能有多个 data , 进行进行分割

function parseText(text) {let info = {content: ''}// 默认以 \ndata 进行分割 (可能有问题)text.split(/\n(?=data:)/).forEach(v => {if (v === 'data: [DONE]\n\n') {return ''}let { role, content } = JSON.parse(v.slice(6)).choices[0].deltaif (role) {info.role = role}if (content) {info.content += content}})return info
}

依赖包

文本的显示,使用了 marked 库。它可以把 markdown 的字符串内容转换成 html 格式的字符串。

还使用了节流 。节流使用了 utils-h 。当然这个包还提供了许多的工具函数。有兴趣可以去了解了解

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

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

相关文章

精心设计的ChatGPT网页版源码最聪明的镜像ChatGPT

demo软件园每日更新资源,请看到最后就能获取你想要的: 1.精心设计的 ChatGPT网页版源码 最聪明的镜像ChatGPT ChatGPT网页版源码 最聪明的镜像ChatGPT 支持GPT3.5turbo以及GPT4.0turbo的各种版本模型 精心设计的 UI,响应式设计,支持深色模式 极快的首…

CHATGPT制作AI绘画

CHATGPT是一种基于机器学习和自然语言处理技术的人工智能应用。它可以生成自然语言文本,并且可以通过训练来学习各种不同的技能。 其中,CHATGPT制作AI绘画指的是将CHATGPT应用于绘画领域,训练CHATGPT以生成艺术作品。 CHATGPT生成绘画的基本…

一个可以免费白嫖ChatGPT和AI绘画的网站

今天给大家分享一个可以免费白嫖ChatGPT的网站:https://www.aitest.me/ 不需要登录,完全免费,不需要魔法 2. 网站集成了200多个Prompt提示词 ​ 3. 支持GPT4和联网模式 ​ ​ 4. 可以进行英语口语训练 ​ 5. 可以解析文档 ​ 6. 傻瓜式AI绘

2023最新AI创作系统/ChatGPT商业运营版网站程序源码+支持GPT4+支持ai绘画(MJ)+实时语音识别输入+免费更新版本

2023最新AI创作系统/ChatGPT商业运营版网站程序源码支持ai绘画支持GPT4.0实时语音识别输入文章资讯发布功能用户会员套餐免费更新版本 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、主要功能展示六、更新日志 一、AI创作系统 1、提问:程序已经支持G…

【ChatGPT案例】ChatGPT帮你画漫画

【ChatGPT案例】ChatGPT帮你画漫画 这几天,心中一直有个想法:采用漫画的形式科普ChatGPT的发展过程。 但是漫画创作明显是个专业活,首先你需要好的构图想法,然后把心中的想法画出来。 怎么办?又该ChatGPT展现真正的…

ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~

文章目录 ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~HuggingFace 简介HuggingChat 登场展望 ChatGPT 平替天花板:HuggingFace 版 ChatGPT 来了,无需魔法无需等待直接起飞 ~ 二话不说上链接 htt…

ChatGPT与AI绘画,该上车了!

前几天的GPT-4发布会,大家都看了吗? ChatGPT有多么火爆多么强大?相信不需要再做解释,网上的各界精英早就讨论过无数次了。 自然语言处理工具这一新赛道,国内的同行也在积极参与,百度刚刚开了发布会&#xf…

2023全新UI商业版ChatGPT网页版源码V4.7.7+支持Ai绘画

正文: 安装教程: 搭建宝塔 解析域名 上传程序至根目录 配置数据库信息:lib/config.php 导入数据库 PHP选择:7.3 访问网页即可! 配置APIKEY,登录网站后台自定义配置,不然网站无法使用! 网站后台地址/admin 默认账号:admi…

如何利用ChatGPT画图,无需插件,原生ChatGPT,实测有效

ChatGPT 很智能,很聪明。但是它被困在了互联网里,只能通过网页上的文字,和我们交流。 就像历史上的一个个有趣的灵魂,我们只能通过书中的文字和故事,才能领会到他们的千古风流。 纯文字的方式,还是太单…

最新ChatGPT商业运营版网站源码+支持AI绘画+支持用户会员套餐+友邀请分佣功能+后台一键更新+网站后台管理+永久更新!

最新ChatGPT商业运营版网站源码支持AI绘画支持用户会员套餐友邀请分佣功能后台一键更新网站后台管理永久更新! 程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 API绘画、语音识别输入、用户会员套餐用户每日签到功能后台管理一键更新版本。支持手机电脑不同布局页面…

ChatGPT辅助AI绘画攻略

AI工具一定是近期设计圈爆火的话题,ChatGPT和Midjourney这两款工具不知道大家都体验过没有? 如果你是一个懒惰的艺术家,又或者作为设计师的你今天脑海里没有任何画面的情况下,那么ChatGPT和Midjourney这两款工具可以帮你解决&…

最新ChatGPT网站源码运营版+支持ai绘画(Midjourney)+GPT4.0+GPT官方3.5key绘画+实时语音识别输入+后台一键版本更新!

最新ChatGPT网站源码运营版支持ai绘画GPT4.0GPT官方3.5key绘画实时语音识别输入后台一键版本更新! 1.网站系统源码介绍: 程序已支持ChatGPT4.0、Midjourney绘画、GPT3.5 API绘画、语音识别输入、用户会员套餐用户每日签到功能后台管理一键更新版本。支…

如何使用ChatGPT辅助AI绘画?

如何使用ChatGPT辅助AI绘画? AI自动化内容生成(AIGC)是一种利用人工智能技术生成新内容的方法。它可以快速、自动、准确地从大量原始数据中生成新内容,大大提高了内容创作效率。AIGC 使用机器学习算法,自动识别文本特…

chatGPT AI绘画

chatGPT的火爆带动了很多的想象,其实国内的厂商也实现过类似的功能,但是只是在影响力上没有那么大所以不为人知,但是有一点是肯定的那就是AI创作正在以前所未有的速度侵入这个世界, 可能十年之内我们看到的任何人类产生的事物都将…

ChatGPT是怎么实现的?为什么它这么有效?

ChatGPT 能够自动生成类似于人类写作的文本,这一点非常引人注目,也令人意外。但它是如何实现的?为什么它能够如此出色地生成我们认为有意义的文本?我的目的是在这里概述ChatGPT内部的运行情况,并探讨它能够如此出色地产…

ChatGPT是如何一本正经地胡说八道的?

阅读本文大约需要5分钟 大家好,我是恩哥。 最近几天,刷屏朋友圈的只有两件事:ChatGPT横空出世,以及如何买药预防新冠。 恩哥第一时间体验了几天ChatGPT,总结下来就一句话:这个AI的聊天能力已经足以在很多…

用ChatGPT做表格真香!只需动嘴提要求和复制粘贴

明敏 发自 凹非寺量子位 | 公众号 QbitAI 托ChatGPT的福,梦想中让Excel自己统计数据,现在成真了。 △ 图源:抖音秦远国际物流 只需输入要求、数据,ChatGPT就能从头做个表。 想要增加行列、进行表内计算,通通不是问题&a…

chatGPT革了谁的命?

最近朋友圈、各大论坛、网站、短视频等平台都在热议ChatGPT4,ChatGPT确实已经引发了部分网友的失业焦虑,担心内卷。 ChatGPT是由Open AI公司开发,Open AI是一家2015年成立的创业公司,创始人包括美国创业孵化器Y Combinator前总裁阿…

ChatGPT懂SAP吗?跟ChatGPT聊完后,我暂时还不担心会被它取代岗位

我弄了个ChatGPT账号。随便问了一下他SAP的问题。它的回答还是比较有意思的。贴出来跟大家分享一下。 问题1:我是 SAP 开发工程师,你有什么可以帮到我。 作为一个语言模型,我可以为您提供关于SAP开发的一般性建议,以及关于如何使…