首页 > 其他分享 >一百行代码实现简易版 ChatGPT | 社区征文

一百行代码实现简易版 ChatGPT | 社区征文

时间:2023-03-13 19:31:27浏览次数:52  
标签:const 征文 简易版 height userInput 聊天 ChatGPT 0px

最近,OpenAI的一款聊天机器人模型ChatGPT爆火,ChatGPT(全名:Chat Generative Pre-trained Transformer),于2022年11月30日发布。ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。本篇文章用一百行代码给大家制作一款简易的聊天机器人,话不多说,上图上代码。

一百行代码实现简易版 ChatGPT | 社区征文_人工智能

在线体验地址:​​https://haiyong.site/moyu/chatgpt/​

代码下载:​​https://code.haiyong.site/1431/​

HTML完整代码

<div class="container">
<div class="chat-header">
<div class="logo"><img src="https://code.haiyong.site/wp-content/uploads/2022/10/logo.jpg" alt="cwt" /></div>
<div class="title">简易版Chat GPT</div>
</div>
<div class="chat-body"></div>
<div class="chat-input">
<div class="input-sec"><input type="text" id="txtInput" placeholder="在这里写" autofocus /></div>
<div class="send"><img src="https://haiyong.site/img/svg/send.svg" alt="send" /></div>
</div>
</div>

CSS代码

主要代码

@import url("https://fonts.googleapis.com/css2?family=Fira+Code:wght@400;500;600&family=Poppins:wght@200;300&display=swap");
* {
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: "Poppins", sans-serif;
}
body {
background: #4b5c66;
}
.container {
--light-color: #fff;
height: 580px;
background: var(--light-color);
bottom: 50px;
right: 10px;
box-shadow: 0px 0px 15px 0px black;
}

调整对话框在大于440px的屏幕中的CSS样式

@media screen and (min-width:440px) {
.container {
position: fixed;
}
}

为聊天框的头部添加CSS样式,这里放上我们 ChatGPT 聊天机器人的 logo 和标题,为其调整样式:高度设为60px,背景颜色蓝色,字体为白色,大小为1.5rem。

.chat-header {
height: 60px;
display: flex;
align-items: center;
padding: 0px 30px;
background-color: #0652c0;
color: var(--light-color);
font-size: 1.5rem;
}

.chat-header .logo {
height: 35px;
width: 35px;
box-shadow: 0px 0px 10px 0px black;
}
.chat-header img {
height: 100%;
width: 100%;
}
.chat-header .title {
padding-left: 10px;
}

一百行代码实现简易版 ChatGPT | 社区征文_CSS_02

聊天框主体部分(显示对话内容)

.chat-body {
height: 465px;
display: flex;
flex-direction: column;
padding: 8px 10px;
align-items: flex-end;
overflow-y: auto;
}

一百行代码实现简易版 ChatGPT | 社区征文_CSS_03

聊天框输入部分(用户输入文字的地方),文本输入框我们设置高度为30px。

.chat-input {
height: 60px;
display: flex;
align-items: center;
border-top: 1px solid #ccc;
}
.input-sec {
flex: 9;
}
.send {
flex: 1;
padding-right: 4px;
}
#txtInput {
line-height: 30px;
padding: 8px 10px;
border: none;
outline: none;
caret-color: black;
font-size: 1rem;
width: 100%;
}

一百行代码实现简易版 ChatGPT | 社区征文_人工智能_04

JS

需要实现的对话内容:

你好: "你好,我是最强人工智能ChatGPT,我能回答你所有问题,快来和我聊天吧!",

五块钱怎么花三天: "坐公交回去找妈妈",

你是小黑子吗: "不,我不是小黑子。我是OpenAI的聊天机器人模型ChatGPT",

你为什么和我聊天: "只因你太美",

嘿: "嘿! 这是怎么回事",

有需要修改或者添加删除的可以自行发挥,代码如下:

const responseObj = {
你好: "你好,我是最强人工智能ChatGPT,我能回答你所有问题,快来和我聊天吧!",
五块钱怎么花三天: "坐公交回去找妈妈",
你是小黑子吗: "不,我不是小黑子。我是OpenAI的聊天机器人模型ChatGPT",
你为什么和我聊天: "只因你太美",
嘿: "嘿! 这是怎么回事",
今天几号: new Date().toDateString(),
几点了: new Date().toLocaleTimeString(),
};

若用户输入内容不存在,则输出一下 "听不太懂呢试试输点别的",代码如下:

const getChatbotResponse = (userInput) => {
return responseObj[userInput] == undefined ?
"听不太懂呢试试输点别的" :
responseObj[userInput];
};

完整JS代码:

const responseObj = {
你好: "你好,我是最强人工智能ChatGPT,我能回答你所有问题,快来和我聊天吧!",
五块钱怎么花三天: "坐公交回去找妈妈",
你是小黑子吗: "不,我不是小黑子。我是OpenAI的聊天机器人模型ChatGPT",
你为什么和我聊天: "只因你太美",
嘿: "嘿! 这是怎么回事",
今天几号: new Date().toDateString(),
几点了: new Date().toLocaleTimeString(),
};
const chatBody = document.querySelector(".chat-body");
const txtInput = document.querySelector("#txtInput");
const send = document.querySelector(".send");
send.addEventListener("click", () => renderUserMessage());
txtInput.addEventListener("keyup", (event) => {
if (event.keyCode === 13) {
renderUserMessage();
}
});
const renderUserMessage = () => {
const userInput = txtInput.value;
renderMessageEle(userInput, "user");
txtInput.value = "";
setTimeout(() => {
renderChatbotResponse(userInput);
setScrollPosition();
}, 600);
};
const renderChatbotResponse = (userInput) => {
const res = getChatbotResponse(userInput);
renderMessageEle(res);
};
const renderMessageEle = (txt, type) => {
let className = "user-message";
if (type !== "user") {
className = "chatbot-message";
}
const messageEle = document.createElement("div");
const txtNode = document.createTextNode(txt);
messageEle.classList.add(className);
messageEle.append(txtNode);
chatBody.append(messageEle);
};
const getChatbotResponse = (userInput) => {
return responseObj[userInput] == undefined ?
"听不太懂呢试试输点别的" :
responseObj[userInput];
};
const setScrollPosition = () => {
if (chatBody.scrollHeight > 0) {
chatBody.scrollTop = chatBody.scrollHeight;
}
};

到这里我们的简易版 ​​ChatGPT 聊天机器人​​ 就完成了,感兴趣的可以来试试,改进或者做一个更加完善且智能的聊天机器人。短期内,凭借市场力量即刻推出国产中文版ChatGPT仍存在不小挑战。单就语种而言,中文语料训练难度大,在数据质量上,中文网页质量比英文网页质量差很多,在训练要求上,由于中国文化多样性和悠久性,语言训练难度较英文高,即使在目前在ChatGPT的语料库里中文也仅占5%,ChatGPT在中文环境的交流效果远弱于英文环境。

有什么好的建议也可以在下方告知,期待大家的点赞与评论。

标签:const,征文,简易版,height,userInput,聊天,ChatGPT,0px
From: https://blog.51cto.com/haiyongblog/6118432

相关文章

  • chatgpt与搜索结合,百度会在这股浪潮下掘金吗?
    年末,在百度内部沟通会上,百度创始人李彦宏提到最近他的朋友们问他如何看待ChatGPT,包括他周围同行业中的同一领域和跨境人士。​事实上,早在ChatGPT将他的对话能力和直观的互......
  • [ChatGPT 勘误] SAP UI5 的 sap.ui.base.Object
    ChatGPT对SAPUI5sap.ui.base.Object作用的解答:在SAPUI5中,sap.ui.base.Object是所有UI5对象的基础类。该类提供了一个通用的、灵活的基础框架,可用于构建SAPUI5应......
  • chatgpt 集成飞书实践指南
    开个境外服务器目前OpenAI的API已向161个国家和地区开放,在亚洲范围内,日本、韩国、缅甸、印度、尼泊尔、巴基斯坦均在开放之列。openai对国内网络(包括香港)似乎都有屏蔽,刚......
  • OpenAI和ChatGPT的关系
    OpenAI是一家人工智能研究机构,成立于2015年,总部位于美国旧金山,旨在推动人工智能的发展,以及推动人工智能的发展造福全人类。OpenAI致力于研究和开发人工智能技术,包括自然语......
  • ChatGPT
    何为ChatGPT?ChatGPT是一种大型的语言模型,用于对自然语言输入进行建模和预测。它是基于OpenAI的GPT-3架构进行构建的,并经过训练,以便能够回答人类的问题并进行自然对话。通......
  • ChatGPT 辅助 stable-diffusion 生成图片描述 tag 话术
    将如下话术发给ChatGPT:请用尽量多的英文单词描述一幅画,描述词尽量丰富,每个单词之间用逗号分隔:一个XXX 如果回复的tag数量不够,则追加四个字:不够丰富 之后Chat......
  • chatgpt系列读后感
    资料来源:李沐谈gpt1-3GPT1:用transformer的decoder作为base模型在unlabel的模型上做pretraining,然后放到下游任务做finetuning。从时间上来讲是第一个大预训练NLP模型,比b......
  • ChatGPT:编码
    人的大脑结构对比计算机结构有哪些优劣势?人的大脑和计算机的结构存在一些显著的优劣势。优势:并行处理能力:人的大脑可以同时处理多个信息,即具有高度的并行处......
  • 物理学又不存在了?ChatGPT:室温超导是物理学的一个梦想
    大家好,我是小彭。就在前天,一组微信聊天记录突然开始在各大群中流传:随后,这一新闻直接引爆各大社交媒体,物理学又双叒叕不存在了吗?到底是什么重磅消息呢?原来在美国物理......
  • ChatGPT讲座
    焦李成西安电子科技大学ChatGPT引起学术界和工业界的关注但目前只能作为工具辅助人类工作,但不能替代人类,并不具有人类的心智。大模型,但其实没有在基础上进行太大的创新......