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

article/2025/4/22 4:10:25

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://chatgpt.dhexx.cn/article/QXFopsMG.shtml

相关文章

ChatGPT与AI绘画,该上车了!

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

用ChatGPT优化AI绘画提示词的探索

注:本文中的AI绘画模型为Stable Diffusion 2.0,平台工具采用白海科技涌现AIGC引擎. 用ChatGPT优化AI绘画提示词的探索 这是一篇关于如何使用ChatGPT优化文生图提示词的简短经验说明。 自ChatGPT发布以来,大家已经探索了ChatGPT的各种各样的使…

让ChatGPT教你AI绘画|如何将ChatGPT与Midjourney结合使用,赶紧实践起来

转载 近期最火的人工智能应用莫过于ChatGpt了,上架短短3个月就已经有几个亿的用户了。反反复复地体验ChatGpt近一个月,感受就两个字​:牛批​! 简单介绍一下什么是Chatgpt,算了让它自己介绍自己吧 回答的还行吧​&a…

【ChatGPT】通过 ChatGPT 用文字描述来绘制插画

点击上方“独立开发者杂谈” 喜欢本文,请置顶或星标 使用文字描述绘制插画具有以下好处 无需绘画技巧,体验与AI结合,创意灵活性,节省时间。 使用 Figma 工具 Figma (https://www.figma.com)是一款流行的设计…

ChatGPT辅助AI绘画攻略

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

如何使用ChatGPT辅助AI绘画?

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

支持绘画-教你部署一个属于自己的chatgpt网站-收费版(源码)

废话不多少,上截图源码 支持绘画 前端页面 后端管理 源码下载链接: https://wwhj.lanzoue.com/b04jyfwza 密码:3csb

AI绘图网站素材(chatGPT-4汇总)

科研工作中在文献中都会用到画图工具,画出好看又科学的图片,不仅可以提升文章的可阅读性,同时对读者来说也是赏心悦目。AI绘图软件是目前比较常用的画图工具,利用AI工具基本就可以实现一般学术或者工作的画图需要,但是…

基于uni-app+vue3跨端「h5+小程序+App」仿制chatGPT模板实例

uni-chatgpt 一款uniappvite4uview-plus多端ChatGPT模板实例。 全新首发的一款多端仿制chatgpt智能对话实战项目,基于uniAppVue3PiniauViewUIMarkdownIt等技术开发搭建项目。支持编译到h5小程序APP端,支持markdown语法解析及代码高亮。 功能特点 全屏沉…

Python+ChatGPT制作一个AI实用百宝箱

目录 一、注册OpenAI二、搭建网站及其框架三、AI聊天机器人四、AI绘画机器人 ChatGPT 最近在互联网掀起了一阵热潮,其高度智能化的功能能够给我们现实生活带来诸多的便利,可以帮助你写文章、写报告、写周报、做表格、做策划甚至还会写代码。只要与文字相…

LLM/ChatGPT与多模态必读论文100篇(已更至第98篇)

目录 前言 第一部分 OpenAI/Google的基础语言大模型(11篇,总11篇) 第二部分 LLM的关键技术:ICL/CoT/RLHF/词嵌入/位置编码/加速/与KG结合等(34篇,总45篇) 第三部分 Meta等公司发布的类ChatGPT开源模型和各种微调(7篇,总52篇) …

2023 chatgpt商业完整运营源码

超级好看的chatgpt商业化版本 有完整的教程 完整 的源码 搭建有些难度!! 源码带支付功能,绘画,对话,都有 大家自行探索吧!

webotAI网页版上线啦!

国内终于也能玩ChatGPT啦!更智能的聊天,超清有趣的绘画,智能写作辅助办公。随着人工智能技术的快速发展,AI产品逐渐成为我们生活和工作中的得力助手。今天,我们为您推荐一款强大的AI产品—webotAI,它集AI聊…

最新AI创作系统ChatGPT网站源码+新增GPT联网功能+支持GPT4+支持ai绘画+实时语音识别输入

最新AI创作系统ChatGPT网站源码新增GPT联网功能支持GPT4支持ai绘画实时语音识别输入 一、AI创作系统二、系统介绍三、系统程序下载四、安装教程五、其他主要功能展示六、更新日志 一、AI创作系统 提问:程序已经支持GPT3.5、GPT4.0接口、支持新建会话,上…

最新ChatGPT网站源码+支持GPT4+支持ai绘画(Midjourney)+一键在线更新版本+永久更新!

最新ChatGPT网站源码支持GPT4支持ai绘画(Midjourney)一键在线更新版本永久更新! 支持手机电脑不同布局页面自适应 正文 ChatGPT网站系统商用运营版: 如果后续程序有新版,直接在后台一键更新即可! 程序完美运行无BUG,…

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

最新ChatGPT商业运营版网站源码支持AI绘画支持用户会员套餐邀请分佣功能支持后台一键更新网站后台管理永久更新! AI付费创作系统: 如果后续程序有新版,直接在后台一键更新即可! 程序完美运行无BUG,独家开发,支持6种会员…

ChatGPT4.0绘画h5公众号小程序三端流量主7版本开发

ChatGPT4.0绘画h5公众号小程序三端流量主7版本开发 别再天天感叹ChatGTP如何如何强大了,大家都知道目前ChatGTP很火,有的人只会玩,还有的人甚至都不知道这是啥东西,但有的人已经利用它开始工作或者赚钱了!我们开发的这…

2023年ChatGPT商业版免授权源码/AI绘画/付费系统

正文: 2023 最新 ChatGPT商业版源码,该产品支持用户付费套餐,AI 绘画,支付对接,卡密购买兑换等功能,并且可以免费使用,同时附带详细的教程文档。 AI程序采用NUXT3LARAVEL9开发 字节网盘&#…

真诡异,ChatGPT 竟让知乎股价暴涨

大家好,我是校长。 今天一大早,看到一条新闻:2 月 8 日,知乎涨幅扩大至超 50%,股价创新高,报 34.8 港元。 根据中银国际发表的研究报告所说,ChatGPT 注册用户激增,AIGC 潜力巨大&…

【ChatGPT进阶】如何使用ChatGPT做知乎好物?

如果你想通过知乎赚钱,知乎好物是一个不错的选择,门槛很低,而且是一个可以长期“躺赚”的项目,如果你会ChatGPT的话,可以去卷同行。 知乎好物是什么? 知乎好物是一种在知乎平台上创作内容或回答问题时&am…