自己的智能AI聊天机器人,可自定义头像,免费html源码分享,粘贴即用!

1.展示效果

效果预览图:

新增小功能:

① 在原有的基础上加入了本地实时存档的功能,按照下面的步骤便可以随时在本地查看以往和智能AI所有的聊天记录哦!再也不用担心关闭网页后先前的聊天内容全部消失啦!

PS:最新的谷歌Edge浏览器都有本地存档这个功能哦~

②实时监控本地储存空间余量(5MB)

③还有炫酷彩虹按钮,可以一键清空自己的本地存档,这样就不会被其他人不小心看到自己的聊天记录了!

④在使用的时候发现最下方的输入框容易遮挡文字影响截图与使用,所以便加入了隐藏按钮,点击便隐藏对话框,方便查看与截图~

⑤加入了可自定的头像哦!按照下方步骤便可以更换自己智能AI头像哦,聊天更有代入感~

⑥当遇见服务器无法回复的情况时,会自主提出异常,不用重启网页便可以直接在发送一次哦!

原版参考:(53条消息) 网页版chatGPT,国内直接打开就用的chatgpt_小袁同学.的博客-CSDN博客

2.修改头像の步骤

修改自己头像的位置,修改src地址就可以哦,可以使用网络上和本地的图。(网络上的图片就自己用用哦,有版权风险)

智能机器人头像修改同理哦

如果是本地图片粘帖上图片在电脑中的绝对路劲就可以哦!

但如果需要放网图的话要复制图像链接哦~

3.查看本地存档

以Edge浏览器为例:右键打开菜单点击检查,将会有如右侧的控制台弹出

找到应用程序,点进去

就可以在本地储存中看到你和AI的聊天记录啦!

4.全部html代码以及注意事项

使用的前提是需要有chatGPT的账号去获取apikey,然后把拿到的apikey放在下面代码中,

可以先创建txt文本将内容粘贴进去并且填写api后,将文件后缀名改为.html哦~

<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script><!-- 用来显示本地存储还有多少空间 -->
<div id="storageInfo"></div>
<!-- 清空本地储存可以写在标签内的炫酷一点的按钮 -->
<button style=" align-items: center;background: linear-gradient(45deg, #F44336, #FFEB3B, #4CAF50, #2196F3, #9C27B0);background-size: 400%;animation: rainbow 10s ease infinite;color: white;padding: 10px 20px;border: none;border-radius: 30px;box-shadow: 0px 4px 10px rgba(0, 0, 0, 0.2);cursor: pointer;font-size: 16px;font-weight: bold;letter-spacing: 1px;outline: none;text-transform: uppercase;"onclick="confirmClearLocalStorage()">清空localStorage
</button>
<style>button {display: block;margin: 0 auto;}@keyframes rainbow {0% {background-position: 0%;}50% {background-position: 100%;}100% {background-position: 0%;}}#chat-container {position: relative;width: 500px;height: 500px;}#chat-window {position: absolute;top: 50px;left: 50px;width: 400px;height: 400px;background-color: #fff;overflow-y: scroll;}/* 使view标签隐藏 *//* .show {display: flex;}.hide {display: none;} *//* .nav-visible .toggle-view {display: flex;}.nav-hidden .toggle-view {display: none;} */</style><div id="app" style="display: flex;flex-flow: column;margin: 20 "><scroll-view scroll-with-animation scroll-y="true" style="width: 100%;"><!-- 用来获取消息体高度 --><view id="okk" scroll-with-animation><!-- 消息 --><view v-for="(x,i) in msgList" :key="i"><!-- 用户消息 头像可选加入--><view v-if="x.my" style="display: flex;flex-direction: column;align-items: flex-end;"><view style="width: 400rpx; display: flex; align-items: center;">                        <view style="border-radius: 35rpx;"><text style="word-break: break-all;">{{x.msg}}&nbsp;&nbsp;</text></view><image src="您的头像地址哦" style="width: 40px; height: 40px; border-radius: 20px;"></image><!-- <image src="https://img2.woyaogexing.com/2017/07/07/67ca73a32fe97f63!400x400_big.jpg" style="width: 40px; height: 40px; border-radius: 80rpx;"></image> --></view></view><!-- 机器人消息 --><view v-if="!x.my" style="display: flex;flex-direction: row;align-items: flex-start;"><view style="width: 500rpx;display: flex; align-items: center;"><image src="机器人的头像地址哦" style="width: 40px; height: 40px; border-radius: 20px;"></image><view style="border-radius: 35rpx;background-color: #f9f9f9;"><text style="word-break: break-all;">&nbsp;&nbsp;{{x.msg}}</text><!-- &nbsp;加两个空格,美观一些 --></view></view></view></view><view style="height: 130rpx;"></view></view></scroll-view><!-- 底部导航栏 --><view   ref="toggleView"   style="position: fixed;bottom:0px;width: 100%;display: flex;flex-direction: column;justify-content: center;align-items: center;"><view style="font-size: 55rpx;display: flex;flex-direction: row;justify-content: space-around;align-items: center;width: 75%;margin: 20;"><input v-model="msg" type="text" style="width: 75%;height: 45px;border-radius: 50px;padding-left: 20px;margin-left: 10px;background-color: #f0f0f0;" @confirm="sendMsg" confirm-type="search"placeholder-class="my-neirong-sm" placeholder="用一句简短的话描述您的问题" /><button @click="sendMsg" :disabled="msgLoad" style="height: 45px;width: 20%;;color: #030303;    border-radius: 2500px;">{{sentext}}</button></view></view></view><!-- 点击按钮显示/隐藏导航栏 --><button  v-on:click="toggleNav" style="position: fixed; bottom: 20px; right: 20px; width: 50px; height: 50px; background-color: #999; border: none; border-radius: 50%; color: #fff; font-size: 24px; text-align: center; line-height: 50px;"> {{ navVisible ? '显':'隐'}}</button></div><!-- 实时显示所剩余的本地储存内存大小 -->
<script>function updateStorageInfo() {const usedSpace = JSON.stringify(localStorage).length;const totalSpace = 5 * 1024 * 1024; // 5MBconst freeSpace = totalSpace - usedSpace;const usedPercentage = (usedSpace / totalSpace) * 100;const storageInfoDiv = document.getElementById("storageInfo");storageInfoDiv.innerHTML = `localStorage已使用 ${usedPercentage.toFixed(2)}%(${(usedSpace / 1024).toFixed(2)}KB),剩余 ${(freeSpace / 1024).toFixed(2)}KB`;}// 在页面加载时更新一次localStorage的使用情况updateStorageInfo();// 监听localStorage的变化,当有新的数据添加到localStorage中时更新使用情况window.addEventListener("storage", function() {updateStorageInfo();});// 在以上代码中,updateStorageInfo()函数会根据localStorage的占用大小和总大小计算出剩余大小和使用百分比,然后将这些信息显示在id为storageInfo的div元素中。// 为了保证在页面加载时就能显示localStorage的使用情况,我们在代码中首先调用了updateStorageInfo()函数。// 此外,为了实现实时更新localStorage使用情况的功能,我们还添加了一个storage事件监听器。当页面中有其他代码向localStorage中写入数据时,该事件监听器会自动被调用,从而更新localStorage的使用情况。</script><!-- 清空本地储存 -->
<script>function confirmClearLocalStorage() {if (confirm("您确定要清空localStorage吗?此操作不可撤销!")) {localStorage.clear();alert("localStorage已清空");}}// 当点击按钮后,会调用clearLocalStorage函数,该函数会调用localStorage.clear()方法来清空所有的localStorage数据。最后弹出一个提示框,告诉用户localStorage已经被清空了。//改进后↓// 当用户点击按钮后,会调用confirmClearLocalStorage函数,该函数会弹出一个确认框,询问用户是否确定要清空localStorage。如果用户点击确认,函数会调用localStorage.clear()方法来清空localStorage中的所有数据,并弹出提示框告诉用户localStorage已经被清空了。如果用户点击取消,则不会执行清空localStorage的操作。
</script><script>const { createApp } = VuecreateApp({data() {return {navVisible: true,api: '换成你的api哦,使用上有疑问可以联系我企鹅756639910,记得备注来意哈',msgLoad: false,anData: {},sentext: '发送',animationData: {},showTow: false,msgList: [{my: false,msg: "你好我是openAI机器人,请问有什么问题可以帮助您?"}],msgContent: "",msg: "",//navVisible: true // 控制导航栏的显示/隐藏}},methods: {toggleNav() {//const toggleBtn = document.getElementById('toggleBtn');//const toggleView = document.getElementById('toggleView');const toggleView = this.$refs.toggleView; // 通过 ref 获取元素//toggleView.classList.toggle('hide');this.navVisible = !this.navVisible;console.log(this.navVisible);if(this.navVisible){toggleView.style.display = 'flex';}else{toggleView.style.display = 'none';}},sendMsg() {// 消息为空不做任何操作if (this.msg == "") {return 0;}this.sentext = '请求中'this.msgList.push({"msg": this.msg,"my": true})console.log(this.msg);this.msgContent += ('YOU:' + this.msg + "\n")// 添加聊天记录到localStorage中let chatHistory = localStorage.getItem('chatHistory') || '[]';chatHistory = JSON.parse(chatHistory);chatHistory.push({"msg": this.msg,"my": true});localStorage.setItem('chatHistory', JSON.stringify(chatHistory));this.msgLoad = true// 清除消息this.msg = ""axios.post('https://api.openai.com/v1/completions', {prompt: this.msgContent, max_tokens: 2048, model: "text-davinci-003"}, {headers: { 'content-type': 'application/json', 'Authorization': 'Bearer ' + this.api }}).then(res => {console.log(res);let text = res.data.choices[0].text.replace("openai:", "").replace("openai:", "").replace(/^\n|\n$/g, "")console.log(text);this.msgList.push({"msg": text,"my": false})this.msgContent += (text + "\n")// 添加聊天记录到localStorage中let chatHistory = localStorage.getItem('chatHistory') || '[]';chatHistory = JSON.parse(chatHistory);chatHistory.push({"msg": text,"my": false});localStorage.setItem('chatHistory', JSON.stringify(chatHistory));this.msgLoad = falsethis.sentext = '发送'}).catch(error => {alert(error);//弹出异常let text = "" //重置textthis.msgList.push({"msg": "服务异常,请重新发送..","my": false})this.msgContent += (text + "\n")this.msgLoad = falsethis.sentext = '发送'//再次点击发送});},}}).mount('#app')//这段代码的作用是将当前对话中的一条消息添加到聊天记录中,并将聊天记录存储在本地的localStorage中。// 首先,代码通过localStorage.getItem('chatHistory')获取了本地存储的聊天记录,如果没有聊天记录则初始化为空数组'[]'。接着,代码使用JSON.parse将获取到的聊天记录字符串解析为数组类型。此时,chatHistory变量中保存的就是之前存储在本地的聊天记录。// 然后,代码向chatHistory数组中添加了一条消息对象。该对象有两个属性,"msg"表示消息内容,"my"表示消息是否是自己发送的(即是否是用户自己发出的消息,true表示是,false表示否)。// 最后,代码使用localStorage.setItem将更新后的chatHistory数组再次存储到本地。这里需要使用JSON.stringify将数组转换为字符串格式,才能存储到localStorage中。// 这样一来,每次用户发送一条消息时,代码都会将该消息添加到聊天记录中,并将聊天记录保存到本地。下次用户再次访问页面时,就可以从localStorage中加载之前的聊天记录。
</script>

悄咪咪的说:

对您有帮助的话请关注我哦~关注后小作者会受到莫大的鼓励,回复您的问题也会更加积极哦!

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

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

相关文章

深度学习实战30-AIGC项目:自动生成思维导图文件,解放双手

大家好,我是微学AI,今天给大家介绍一下深度学习实战30-AIGC项目:自动生成思维导图文件,解放双手,思维导图是一种常见的工具,用于将复杂的信息和概念以图形化方式展示出来。AIGC项目旨在将这种思维导图的创建过程自动化,并通过使用ChatGPT作为生成器,使其变得更智能化和…

AIGC被ChatGPT带火!底层基础算力有望爆发式增长

ChatGPT火爆全球的背后&#xff0c;可以窥见伴随人工智能技术的发展&#xff0c;数字内容的生产方式向着更加高效迈进。ChatGPT属于AIGC的具体应用&#xff0c;而AIGC是技术驱动的数字内容新生产方式。AIGC类产品未来有望成为5G时代新的流量入口&#xff0c;率先受益的有望是AI…

微信没有回车键怎么换行_微信打字怎么换行

聊天换行是我们经常会遇到的情况,但是在微信聊天的时候,不论是手机微信APP还是电脑版微信,很多人都会发现本来想使用enter键换行的,结果却是把刚才的消息发出去了,那么微信打字怎么换行呢?下面就以苹果手机版微信和电脑微信分别为例给大家介绍一下吧。 微信打字怎么换行 …

chatgpt赋能python:Python主动换行的方法

Python主动换行的方法 Python是一种高级编程语言&#xff0c;它的语法简单易学&#xff0c;功能强大&#xff0c;应用范围广泛。在Python编程中&#xff0c;经常会遇到需要换行的情况&#xff0c;例如要在长字符串中插入回车符、将一条代码语句拆成多行等。 本文将介绍Python…

chatgpt智能提效职场办公-ppt怎么转换成word文档

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; 将PPT转换成Word文档有多种方法&#xff0c;以下是其中的一种&#xff1a; 打开PPT文件&#xff0c;并选择“文件”选项卡中的“另存为…

目前最强的AI绘画模型——Midjourney v5

文章目录 Midjourney v5 介绍加入社区使用ChatGPT生成提示词正式测试 我想&#xff0c;各类不仅是文字工作领域&#xff0c;艺术设计等相关的行业也应当被彻底颠覆了。 Midjourney v5 介绍 官网&#xff1a;https://www.midjourney.com/home/?callbackUrl%2Fapp%2F 订阅&…

5个超好用的国内AI绘图工具

一、引言 苹果亲自下场嵌入 AI 工具&#xff01;在苹果的官网发布了这样一段描述“Today, we are excited to release optimizations to Core ML for Stable diffusion in macOS 13.1 and iOS 16.2, along with code to get started with deploying to Apple Silicon devices.…

剪映 自动打关键帧 AutoHotkey

牙叔教程 简单易懂 明确目的 做小说推文的话&#xff0c; 前面几分钟肯定要自己打关键帧&#xff0c; 所以这里的自动打关键帧指的是后面几分钟的图片&#xff0c; 对关键帧要求比较高的同学可以划走了, 因为这里介绍的是简单的 上上下下缩放的关键帧 要求 用剪映提取字幕…

chatgpt赋能python:Python如何写字:学习Python绘制字符和字形

Python如何写字&#xff1a;学习Python绘制字符和字形 Python是世界上最受欢迎的编程语言之一&#xff0c;它可以用于创建各种应用&#xff0c;如数据科学、网络开发和机器学习等领域。但是&#xff0c;你是否知道Python还可以用来绘制字符和字形吗&#xff1f; 在本文中&…

chatgpt赋能python:Python如何输入符号——从基础到高级

Python如何输入符号——从基础到高级 Python是一种非常流行的编程语言&#xff0c;它被广泛应用于各种行业和领域。在Python中输入符号是非常重要的基础操作&#xff0c;本文将介绍Python如何输入符号的方法&#xff0c;包括基础的符号输入和高级的符号输入。 基础的符号输入…

chatgpt赋能python:Python中的点怎么打出来?

Python中的点怎么打出来&#xff1f; Python中的点是一个很基本的符号&#xff0c;它在代码中扮演着非常重要的角色。在本文中&#xff0c;我们将解释如何在Python中打出点以及点的作用。 首先&#xff0c;我们需要了解Python中点的使用。在Python中&#xff0c;点通常用作属…

我可能用到的网站和软件

(一)程序员交流的网站 csdn博客 https://www.csdn.net/博客园 博客园 - 开发者的网上家园InfoQ InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦掘金 掘金 (juejin.cn) (二)代码管理工具 github GitHub: Where the world builds software GitHub 有时候卡&…

WindowBuilder、SWT、jface

GUI&#xff08;Graphical User Interface&#xff0c;简称 GUI&#xff0c;图形用户界面&#xff09;是指采用图形方式显示的计算机操作用户界面&#xff0c;与早期计算机使用的命令行界面相比&#xff0c;图形界面对于用户来说在视觉上更易于接受。 Java GUI主要有两个核心库…

跟简单却又晦涩的 Promise 说 Hello

一、前言 我不知大家是如何接触到的 Promise, 我想可能是 Axios? 可能是对异步方法的封装&#xff1f;可能是对 Vue 中方法的封装&#xff1f;对 React 中方法的封装&#xff1f;我记得我当时还是只会一些 ES5 语法小白的时候,为了看懂别人写的代码&#xff0c;大量恶补 ES6 的…

在win10电脑上搭建python环境下的本地AI绘画工具Stable Diffusion

随着Chatgpt的横空出世&#xff0c;人工智能受到了前所没有的热棒&#xff0c;AI绘画也进入大众的视野。 Stable Diffusion是一种可以部署在本地环境上运行的人工智能绘画工具&#xff0c;图形运算主要用到的是显卡的GPU性能&#xff0c;因此最好有至少4G显存的显卡。 Stable…

chatgpt赋能python:Python画图写名字——提升SEO的绝佳选择

Python画图写名字——提升SEO的绝佳选择 随着互联网的发展&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;变得越来越重要&#xff0c;而优秀的内容和图片对SEO排名的提升起着非常重要的作用。Python作为一种高效的编程语言&#xff0c;也是SEO方面的新宠&#xff0c;因…

Qt6教程之三(6) 界面自绘与绘图类

据博主所知&#xff0c;Qt的绘图技术目前分为三大阵营&#xff0c;分别是&#xff1a; 一&#xff0c;基于QWidget的界面自绘制&#xff0c;这种方式纯粹为纯代码绘制&#xff0c;随着绘制图形量的不断增加&#xff0c;会导致其难以管理和性能不佳&#xff1b; 二&#xff0c…

HighCharts实现3D不同高度圆环图、3D饼图

最近做可视化比较多&#xff0c;就常用的图表类型做了一下总结。 因为做可视化的图表代码量非常大&#xff0c;所以会把echarts图表单独抽离出来&#xff0c;封装成一个组件&#xff0c;也可以复用&#xff0c;所以这里我直接把封装的组件直接放在这里&#xff0c;是可以直接拿…

直播合辑 | 微软ATP与您相约100场公益演讲

&#xff08;本文阅读时间&#xff1a;5 分钟&#xff09; Public100已历经了近一年的春夏秋冬&#xff0c;截止目前我们一共举办33场公益直播&#xff0c;由微软及合作伙伴中从事 AI 相关工作的工程师、产品经理、市场总监、运营经理等各类专家和学者&#xff0c;分享自己在学…

微信春节大数据出炉:《三体》阅读量第一 ;曝iOS 17应用商店将向第三方开放;斯坦福大学推出DetectGPT|极客头条...

「极客头条」—— 技术人员的新闻圈&#xff01; CSDN 的读者朋友们早上好哇&#xff0c;「极客头条」来啦&#xff0c;快来看今天都有哪些值得我们技术人关注的重要新闻吧。 整理 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 一分钟速览新闻点&#…