ChatGPT中文版源码

article/2024/9/7 19:29:36

ChatGPT最近很火爆大家都知道吧,今天废话不多说 直接给大家带来一个ChatGPT中文版的源码

先对整体进行一个介绍,这套源码界面很有科技感,其次是功能方面有专门的指令输入框,让你可以舒舒服服的玩转你手中的prompts

其次有黑夜和白天两个模式以及回到顶部功能

下面废话不多说 直接上代码

由于代码太多 我直接放前端页面的代码

代码是基于nodejs写的

下面是header文件

---
import Logo from './Logo.astro'
import Themetoggle from './Themetoggle.astro'
---<header><div class="flex justify-between"><Logo /><Themetoggle /></div><div class="flex items-center mt-2">
<span class="text-2xl text-slate font-extrabold mr-1">CTGPT.</span>
<span class="text-2xl text-transparent font-extrabold bg-clip-text bg-gradient-to-r from-sky-400 to-emerald-600">CN</span>
</div>
<p mt-1 text-slate op-60>基于 OpenAI API (gpt-3.5-turbo)开发.</p> 
</header>

下面是footer文件

<footer><p mt-8 text-xs op-30><br><aborder-b border-slate border-none hover:border-dashedhref="https://wwji.lanzouf.com/iVoeB0o7wrxe" target="_blank">安卓端下载<span px-1>|</span></a><aborder-b border-slate border-none hover:border-dashedhref="https://wwji.lanzouf.com/iYlRb0o7wryf" target="_blank">苹果端下载(safari打开安装需要去设置描述文件安装)</a></p><script charset="UTF-8" id="LA_COLLECT" src="//sdk.51.la/js-sdk-pro.min.js"></script>
<script>LA.init({id:"Jzntbyt4gmLpmsXz",ck:"Jzntbyt4gmLpmsXz"})</script>
<script>
var _hmt = _hmt || [];
(function() {var hm = document.createElement("script");hm.src = "https://hm.baidu.com/hm.js?5aff25b20308b19618d1ea0a4797216b";var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s);
})();
</script></p>
</footer>

下面是问题框代码

import type { ChatMessage } from '@/types'
import { createSignal, Index, Show } from 'solid-js'
import IconClear from './icons/Clear'
import MessageItem from './MessageItem'
import SystemRoleSettings from './SystemRoleSettings'
import _ from 'lodash'
import { generateSignature } from '@/utils/auth'export default () => {let inputRef: HTMLTextAreaElementconst [currentSystemRoleSettings, setCurrentSystemRoleSettings] = createSignal('')const [systemRoleEditing, setSystemRoleEditing] = createSignal(false)const [messageList, setMessageList] = createSignal<ChatMessage[]>([])const [currentAssistantMessage, setCurrentAssistantMessage] = createSignal('')const [loading, setLoading] = createSignal(false)const [controller, setController] = createSignal<AbortController>(null)const handleButtonClick = async () => {const inputValue = inputRef.valueif (!inputValue) {return}// @ts-ignoreif (window?.umami) umami.trackEvent('chat_generate')inputRef.value = ''setMessageList([...messageList(),{role: 'user',content: inputValue,},])requestWithLatestMessage()}const throttle =_.throttle(function(){window.scrollTo({top: document.body.scrollHeight, behavior: 'smooth'})}, 300, {leading: true,trailing: false})const requestWithLatestMessage = async () => {setLoading(true)setCurrentAssistantMessage('')const storagePassword = localStorage.getItem('pass')try {const controller = new AbortController()setController(controller)const requestMessageList = [...messageList()]if (currentSystemRoleSettings()) {requestMessageList.unshift({role: 'system',content: currentSystemRoleSettings(),})}const timestamp = Date.now()const response = await fetch('/api/generate', {method: 'POST',body: JSON.stringify({messages: requestMessageList,time: timestamp,pass: storagePassword,sign: await generateSignature({t: timestamp,m: requestMessageList?.[requestMessageList.length - 1]?.content || '',}),}),signal: controller.signal,})if (!response.ok) {throw new Error(response.statusText)}const data = response.bodyif (!data) {throw new Error('No data')}const reader = data.getReader()const decoder = new TextDecoder('utf-8')let done = falsewhile (!done) {const { value, done: readerDone } = await reader.read()if (value) {let char = decoder.decode(value)if (char === '\n' && currentAssistantMessage().endsWith('\n')) {continue}if (char) {setCurrentAssistantMessage(currentAssistantMessage() + char)}throttle()}done = readerDone}} catch (e) {console.error(e)setLoading(false)setController(null)return}archiveCurrentMessage()}const archiveCurrentMessage = () => {if (currentAssistantMessage()) {setMessageList([...messageList(),{role: 'assistant',content: currentAssistantMessage(),},])setCurrentAssistantMessage('')setLoading(false)setController(null)inputRef.focus()}}const clear = () => {inputRef.value = ''inputRef.style.height = 'auto';setMessageList([])setCurrentAssistantMessage('')setCurrentSystemRoleSettings('')}const stopStreamFetch = () => {if (controller()) {controller().abort()archiveCurrentMessage()}}const retryLastFetch = () => {if (messageList().length > 0) {const lastMessage = messageList()[messageList().length - 1]console.log(lastMessage)if (lastMessage.role === 'assistant') {setMessageList(messageList().slice(0, -1))requestWithLatestMessage()}}}const handleKeydown = (e: KeyboardEvent) => {if (e.isComposing || e.shiftKey) {return}if (e.key === 'Enter') {handleButtonClick()}}return (<div my-6><SystemRoleSettingscanEdit={() => messageList().length === 0}systemRoleEditing={systemRoleEditing}setSystemRoleEditing={setSystemRoleEditing}currentSystemRoleSettings={currentSystemRoleSettings}setCurrentSystemRoleSettings={setCurrentSystemRoleSettings}/><Index each={messageList()}>{(message, index) => (<MessageItemrole={message().role}message={message().content}showRetry={() => (message().role === 'assistant' && index === messageList().length - 1)}onRetry={retryLastFetch}/>)}</Index>{currentAssistantMessage() && (<MessageItemrole="assistant"message={currentAssistantMessage}/>)}<Showwhen={!loading()}fallback={() => (<div class="h-12 my-4 flex gap-4 items-center justify-center bg-slate bg-op-15 rounded-sm"><span>AI正在思考中...</span><div class="px-2 py-0.5 border border-slate rounded-md text-sm op-70 cursor-pointer hover:bg-slate/10" onClick={stopStreamFetch}>停止</div></div>)}><div class="my-4 flex items-center gap-2 transition-opacity" class:op-50={systemRoleEditing()}><textarearef={inputRef!}disabled={systemRoleEditing()}onKeyDown={handleKeydown}placeholder="问些问题吧..."autocomplete="off"autofocusonInput={() => {inputRef.style.height = 'auto';inputRef.style.height = inputRef.scrollHeight + 'px';}}rows="1"w-fullpx-3 py-3min-h-12max-h-36rounded-smbg-slatebg-op-15resize-nonefocus:bg-op-20focus:ring-0focus:outline-noneplaceholder:op-50dark="placeholder:op-30"scroll-pa-8px/><button onClick={handleButtonClick} disabled={systemRoleEditing()} h-12 px-4 py-2 bg-slate bg-op-15 hover:bg-op-20 rounded-sm>Send</button><button title="Clear" onClick={clear} disabled={systemRoleEditing()} h-12 px-4 py-2 bg-slate bg-op-15 hover:bg-op-20 rounded-sm><IconClear /></button></div></Show></div>)
}

http://chatgpt.dhexx.cn/article/c15tZRVc.shtml

相关文章

ChatGPT app安装指南

当前只支持ios安装&#xff0c;现在大部分app store里的app都不是官方的&#xff0c;要下载官方app参照如下步骤&#xff1a; 1.切换appStore账号到国外注册appStore账号&#xff0c;注意不是icloud账号。 给大家提供个账号&#xff0c;下载使用完了退出下&#xff01; 另外特…

【NLP】陈根:70页PPT读懂ChatGPT

作者&#xff1a;陈根 来源&#xff1a;转载根新未来 从2022年末到了2023年初&#xff0c;ChatGPT火遍了全网。ChatGPT的成功&#xff0c;证明了大模型技术路线的正确性。这意味着&#xff0c;人工智能终于能从之前的大数据统计分类阶段&#xff0c;走向了今天具备类人逻辑沟通…

ChatGPT研究框架(80页PPT,附下载)

研究框架系列 来源&#xff1a;计算机文艺复兴 往期推荐 GPT-4写代码能力提升21%&#xff01;MIT新方法让LLM学会反思&#xff0c;网友&#xff1a;和人类的思考方式一样 今天&#xff0c;聊聊ChatGPT 阿里立秋&#xff1a;AI千人千面&#xff0c;淘宝如何做智能化UI测试&#…

量子位智库报告:三分钟看懂ChatGPT | 附下载

量子位智库量子位 | 公众号 QbitAI 你被ChatGPT包围了吗&#xff1f; 最近这项技术创新项目火得一塌糊涂&#xff0c;你或许听过、见过甚至还慕名试玩体验过了。 但是不是完全灯下黑状态了&#xff1f;不知道ChatGPT从何而来&#xff0c;原理是什么样的&#xff0c;又存在哪些利…

6天,50万!ChatGPT App 下载量远超美国 iOS 新应用的 99.99%

整理 | 朱珂欣 出品 | CSDN程序人生&#xff08;ID&#xff1a;coder_life&#xff09; ChatGPT 继去年推出之后&#xff0c;5 天用户破百万&#xff0c;2个月月活破亿&#xff0c;成为史上用户增长速度最快的消费级应用程序。 5 月 19 日&#xff0c;ChatGPT 正式迎来「iPh…

使用ChatGPT可以下载全景图

现在有很多的地方使用全景图&#xff0c;这些全景图是动态展示的720图片&#xff0c;无法通过浏览器点击下载到本地。更可惜的&#xff0c;截止到目前open.ai4.0版本也依然不支持生成图片。那还有什么办法呢&#xff1f; 步骤一 打开全景管家&#xff0c;把全景项目地址&#…

使用 ChatGPT 构建 YouTube 下载器的分步指南

让我们使用 ChatGPT 的代码生成功能在 Python 中生成功能齐全的 YouTube 下载器应用程序&#xff0c;而无需自己编写一行代码&#xff01;不相信这是可能的&#xff1f;只需按照本教程中的步骤操作...... ChatGPT 是 OpenAI 训练的大型语言模型&#xff0c;可以根据自然语言输入…

零代码量化投资:用ChatGPT下载沪深京 A 股历史行情数据

历史行情数据是做量化投资的基础必用数据。怎么借助ChatGPT来零代码实现批量下载沪深京 A 股历史行情数据呢&#xff1f; 在ChatGPT里面输入提示词如下&#xff1a; 写一段Python代码&#xff0c;用akshare库下载沪深京所有 A 股历史行情数据&#xff0c;具体步骤&#xff1a…

用chatgpt学习在Iconfinder网站下载png图标

文章目录 前言1、chatgpt是什么&#xff1f;2、gpt 是什么&#xff1f;3、 需要add.png图标&#xff0c;如何进行4、Iconfinder 介绍5、如何在 https://www.iconfinder.com/ 网站下载免费图标6、按照上节chatgpt的建议下载add图标总结 前言 我们在工作和生活中&#xff0c;常常…

ChatGPT 可以联网了!浏览器插件下载

Twitter 用户 An Qu 开发了一款新的 Chrome 插件帮助 ChatGPT 上网&#xff0c;安装插件以后 ChatGPT 就可以联&#xff01;网&#xff01;了&#xff01; 简单来说开启插件后&#xff0c;他可以从网上搜索信息&#xff0c;并且根据用户的提问给予最新的资讯。 在用户提问后&a…

【已解决---ChatGPT学术优化下载安装问题集锦】

文章目录 问题1&#xff1a;关于配置完项目后关闭&#xff0c;如何再次打开快速启动。问题2&#xff1a;项目链接打不开,是404。问题3&#xff1a;出现关于API的报错。问题4&#xff1a;[Local Message] Request timeout. Network error. Please check proxy settings in confi…

人工智能ChatGPT主题汇总(附下载)

人工智能&#xff08;AI&#xff09;是指机器执行人类能够轻松完成的感知、推理、学习和解决问题等认知功能的能力。过去20年以来&#xff0c;由于互联网产生的海量数据的可用性&#xff0c;人工智能在全球范围内获得了关注。2022年底&#xff0c;OpenAI上线了ChatGPT超级机器人…

OpenAI的模型下载(chatGPT模型)

OpenAI于Aug 21, 2019提交了一个commit&#xff0c;其公布了更大的774M模型&#xff0c;并且纠正了对之前公布的两个模型的参数估计错误导致的命名不准确问题&#xff0c;修改了其名称&#xff1a;其中&#xff0c;原117M模型更名为124M&#xff1b;345M更名为355M。&#xff0…

最新手机端ChatGPT来了!!!

你还在为ChatGPT网页端而发愁? &#xff1f;&#xff1f; 然而ChatGPT的战火已经烧到手机端啦&#xff01;大家可以在更便携的手机端畅玩AI了&#xff01; 目前部分安卓和iOS用户现在已经可以试用了&#xff01;大家可以在更便携的手机端畅玩AI了&#xff01; 接下来我们就盘…

ChatGPT到底是什么,一篇文章给你讲清楚

原文&#xff1a;https://baijiahao.baidu.com/s?id1761485011710783819&wfrspider&forpc 网上也是铺天盖地各种相关文章。有从商业角度出发&#xff0c;剖析ChatGPT 会引发了怎样的商业浪潮&#xff1b;有从技术角度出发&#xff0c;分析ChatGPT 的底层原理和技术&a…

chatGPT 介绍

ChatGPT是一种由OpenAI开发的大型语言模型。它的主要功能是生成自然语言文本。 功能 ChatGPT可以用来生成文章、对话、诗歌等自然语言文本。它可以根据给定的上下文和提示来生成相应的文本。例如&#xff0c;可以输入一个问题&#xff0c;让ChatGPT生成一个答案。 注册 要…

ChatGPT怎么用,搞懂ChatGPT到底是个啥?

我怎么才能使用ChatGPT&#xff0c;下面就来谈谈我的方法。ChatGPT到底是个啥? “ChatGPT是一次产品和市场上的突破&#xff0c;而不是AI基础理论的突破。”一位行业资深投资人对虎嗅表示&#xff0c;AIGC的大规模商用&#xff0c;需要三个条件&#xff0c;首先是基于技术积累…

ChatGPT 会开源吗?

最近&#xff0c;我被一款叫做 ChatGPT 的人工智能&#xff08;AI&#xff09;聊天机器人&#xff0c;刷屏了。网上有人说它是搜索引擎杀手&#xff0c;还有人说它将取代程序员... 最后&#xff0c;我还是没扛住铺天盖地的赞美&#xff0c;跑去注册了个账号&#xff0c;抱着调侃…

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

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

ChatGPT是什么?其本质是什么?

ChatGPT是OpenAI在2022年11月30日发布的一款全新的聊天机器人模型。 OpenAI 2015年创立&#xff0c;目标是开发造福全人类的AI技术2018年发布GPT(生成式预训练语言模型)&#xff0c;生成文章&#xff0c;代码&#xff0c;机器翻译等2022年11月30日发布ChatGPT全新聊天机器人模…