【chatgpt】学习开源项目chatgpt-web,搭建自己的chatgpt服务,功能非常丰富有打字效果

目录

  • 前言
    • 1,开源的chatgpt项目
    • 2,项目可以直接使用docker-compose跑起来
    • 3,关于打字模式SSE, octet-stream (打字特效)
    • 4,关于内容存储
    • 5,总结

前言


本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/130438873

1,开源的chatgpt项目


项目地址:
https://github.com/Chanzhaoyu/chatgpt-web

也有gitee搬运的项目,不知道是不是作者,最近也在更新:
https://gitee.com/boomer001/chanzhaoyu-chatgpt-web

项目从23年2月份开始,到目前项目已经有了很高的星星 20K 了。
项目的前端使用的是vue进行开发的。
项目的后端使用的nodejs 进行开发的,全栈项目了。

而且也官方的docker 镜像,直接配置起来就可以了。

2,项目可以直接使用docker-compose跑起来


从第二步骤讲起,apikey 如何申请,不在这里讨论,大家可以自行解决。

官方也有简单的使用docker-compose 配置,这个整理了下就配置下apikey 就行了:

docker-compose.yaml 配置文件:

services:app:restart: alwaysimage: chenzhaoyu94/chatgpt-web # 总是使用 latest ,更新时重新 pull 该 tag 镜像即可ports:- 3002:3002#volumes: #要是想自己修改页面,可以吧dist映射到/app/pulbic目录即可。#  - ./chatgpt-web/dist:/app/publicenvironment:# 二选一OPENAI_API_KEY: sk-xxxxxxx# 二选一# API接口地址,可选,设置 OPENAI_API_KEY 时可用OPENAI_API_BASE_URL: http://localhost:3002# API模型,可选,设置 OPENAI_API_KEY 时可用OPENAI_API_MODEL: gpt-3.5-turbo# 访问权限密钥,可选AUTH_SECRET_KEY: chat666# 超时,单位毫秒,可选TIMEOUT_MS: 60000

要是想自己修改页面,可以吧dist映射到/app/pulbic目录即
./chatgpt-web/dist:/app/public
chatgpt-web 就是这个github 项目下载后的地址。

当然也可以直接使用nodejs跑起来,分前后端的,前端项目也需要进行编译。

启动成功:
在这里插入图片描述
有登陆授权提示,需要输入配置的 auth 密码 比如chat666 。
要是错登陆不进去,当然这个是一个简单的授权。
在这里插入图片描述

登陆成功之后就可以使用了
在这里插入图片描述
带打字模式回答问题,这个地方就需要注意了。

3,关于打字模式SSE, octet-stream (打字特效)


SSE 是指“Server-Sent Events”,它是一种基于 HTTP 的服务器推送技术。使用 SSE 可以让服务器向客户端发送事件流,从而实现实时的数据更新和通知功能。SSE 协议基于 HTML5 标准,支持跨域通信,并且与 Web Sockets 不同,它是一种单向通信方式,即只能由服务器向客户端发送消息。在浏览器中,可以通过 JavaScript 的 EventSource API 来实现对 SSE 事件流的监听和处理。

H5的一个新协议,这里需要注意下,如果是直接暴露端口不用管。
但是要是需要使用nginx进行转发的就需要修改nginx配置了。

这里折腾了几天才弄明白,官方也给了解决办法,配置nginx的 octet-stream (打字特效)配置:

参考这个:
https://github.com/Chanzhaoyu/chatgpt-web/issues/402

也就是需要在nginx 配置后端接口:

	location ~ ^/api/chat-process {proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "Upgrade";# 流式输出chunked_transfer_encoding on;  # 开启分块传输编码tcp_nopush on;  # 开启TCP NOPUSH选项,禁止Nagle算法tcp_nodelay on;  # 开启TCP NODELAY选项,禁止延迟ACK算法keepalive_timeout 300;  # 设定keep-alive超时时间为65秒proxy_pass http://app:3002;}

返回的数据格式是数组,照回车 \n 进行区分,然后才是数据。
返回一个或者几个字词然后,界面上就有打字效果了:

在这里插入图片描述

项目中的处理函数:

const fetchChatAPIOnce = async () => {await fetchChatAPIProcess<Chat.ConversationResponse>({prompt: message,options,signal: controller.signal,onDownloadProgress: ({ event }) => {const xhr = event.targetconst { responseText } = xhr// Always process the final lineconst lastIndex = responseText.lastIndexOf('\n', responseText.length - 2)let chunk = responseTextif (lastIndex !== -1)chunk = responseText.substring(lastIndex)try {const data = JSON.parse(chunk)updateChat(+uuid,index,{dateTime: new Date().toLocaleString(),text: lastText + (data.text ?? ''),inversion: false,error: false,loading: true,conversationOptions: { conversationId: data.conversationId, parentMessageId: data.id },requestOptions: { prompt: message, options: { ...options } },},)if (openLongReply && data.detail.choices[0].finish_reason === 'length') {options.parentMessageId = data.idlastText = data.textmessage = ''return fetchChatAPIOnce()}}catch (error) {//}},})

项目中一共有4个接口:

/api/config 配置的接口,返回使用情况,配置信息。
/api/session 返回模型信息。这个成 功之后才可以进行聊天。
/api/verify 校验用户登陆状态。
/api/chat-process 最重要的用户聊天对话消息处理,使用了 SSE 模拟打字。

同时这个项目中还可以开启多个对话,记录上次对话内容。
比如先问上海的景点:
在这里插入图片描述
然后在问三个最好的,这时候chatgpt 就知道是上海的景点:
在这里插入图片描述

这个前端样式使用 naiveui

https://www.naiveui.com/zh-CN/os-theme
github 地址:
https://github.com/tusen-ai/naive-ui

只是手机端和pc端样式自适应。

4,关于内容存储


这个项目采取的是将相关的聊天信息存储到本地文件中。
在localstorage 中,优点是效率高,速度快。

在 uitls/storage/local.ts 使用的是

window.localStorage.setItem(key, json)
window.localStorage.getItem(key)
window.localStorage.removeItem(key)
window.localStorage.clear()

存储相关的信息,都存储到了一个字段中了。
分chat和 history 两个属性。
在这里插入图片描述
active 是激活的当前会话id

就是当前的时间戳:

  chatStore.addHistory({ title: 'New Chat', uuid: Date.now(), isEdit: false })

这里鉴权是做的写死的设置:

service.interceptors.request.use((config) => {const token = useAuthStore().tokenif (token)config.headers.Authorization = `Bearer ${token}`return config},(error) => {return Promise.reject(error.response)},
)

直接在head里面写死的,但是这样并不安全。
服务器授权如果使用 jwt 可以修改 verify 接口。
服务端返回 jwt 的授权,然后本地存储。

在拦截器里面都使用 jwt的鉴权,或者是直接存储到 cookie当中也行,但是会有跨域的问题需要解决。

5,总结


最近在使用chatgpt发现确实可以非常方便的提高效率的。
对于开发上面的各种问题的解决也是帮助非常大的。
同时在使用大模型的服务上也会有很多的工程问题需要解决。
一些登陆授权的还是常用的软件知识,都需要掌握进行学习。

这个开源项目非常的好!非常值得推荐!

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/130438873

在这里插入图片描述

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

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

相关文章

ChatGPT Plus 插件最全解读

前言&#xff1a; OpenAI放出大招&#xff0c;向所有ChatGPT Plus用户开放联网功能和众多插件&#xff0c;允许ChatGPT访问互联网并使用70个第三方插件。 本批第三方插件能够全方位覆盖衣食住行、社交、工作以及学习等日常所需&#xff0c;基本上能够扮演24小时私人助理的角色…

chatgpt赋能python:Python手机怎么下载:简易教程

Python手机怎么下载&#xff1a;简易教程 随着移动互联网和智能手机的普及&#xff0c;越来越多的人开始使用手机进行日常工作和娱乐&#xff0c;而Python语言作为一种广泛应用于科学计算、数据分析、Web开发等领域的编程语言&#xff0c;也逐渐受到手机用户的青睐。那么&…

独家 | CodeGPT:具有类ChatGPT功能的VSCode扩展

作者&#xff1a;The PyCoach‍翻译&#xff1a;陈之炎 校对&#xff1a;赵鉴开本文约1300字&#xff0c;建议阅读7分钟 本文为你介绍在VSCode中使用GPT-3的官方OpenAI API。 用Canva制作图片 我并非VSCode的忠实粉丝&#xff0c;但不得不承认&#xff0c;它比我每天使用的代码…

ChatGPT专业应用:生成演讲稿

正文共 1138 字&#xff0c;阅读大约需要 7 分钟 教育工作者、企业家等必备技巧&#xff0c;您将在7分钟后获得以下超能力&#xff1a; 生成演讲稿 Beezy评级 &#xff1a;A级 *经过寻找和一段时间的学习&#xff0c;一部分人能掌握。主要提升效率并增强自身技能。 推荐人 | …

5个 ChatGPT 功能,帮助你提升日常编码效率

ChatGPT 作为最快完成亿活用户的应用&#xff0c;最近真的是火出天际了。今天分享5个 ChatGPT 功能&#xff0c;来提升我们的日常工作以及如何使用它提高代码质量。 ChatGPT 的出现&#xff0c;彻底改变了开发代码的方式。但是目前为止&#xff0c;大多数软件开发人员和数据专业…

一款和chatgpt功能相似的产品 Perplexity ai

场景&#xff1a; 比起传统的列表式搜索&#xff0c;Perplexity AI把艳惊四座的ChatGPT和必应搜索结合起来&#xff0c;既有ChatGPT式的问答&#xff0c;又有像普通搜索引擎那样列出的链接&#xff0c;就连马斯克也亲自称赞&#xff1a;它不仅总结出了推文的由来&#xff0c;还…

SpringBoot调取OpenAi接口实现ChatGpt功能

很高兴和大家分享我实现的一个小项目&#xff0c;利用 Spring Boot 实现了一个 ChatGpt 对话系统。在本文中&#xff0c;我将详细介绍这个项目的实现步骤&#xff0c;以及代码实现。 什么是 ChatGpt ChatGpt 是一种基于 GPT 技术的对话系统&#xff0c;能够生成连贯、流畅、…

ChatGPT是什么?Chatgpt有什么用处?

ChatGPT是什么&#xff1f;Chatgpt有什么用处&#xff1f;ChatGPT是基于GPT语言模型源码进行修改和优化后开发而来的聊天机器人。它可以通过学习很多人类对话的方式与人类进行沟通&#xff0c;不断地提高自己的对话能力。ChatGPT是一种强人工智能技术&#xff0c;可应用于智能客…

测试真的会被ChatGPT代替一文告诉你

送走最后一车货&#xff0c;最后三个工人&#xff0c;老王吃力的关上大铁门。左手从口袋摸出一盒烟&#xff0c;轻轻一颠&#xff0c;滑落一根&#xff0c;右手娴熟的夹住。掏出打火机&#xff0c;点燃&#xff0c;一丝青烟腾起&#xff0c;萦绕在指头。 夕阳穿过玻璃&#xf…

ChatGPT开通后测试 来看看效果如何

我的ChatGPT开通后测试 来看看效果如何开通了&#xff0c;简单测试测试它吧。 先让它写首诗吧&#xff0c;读起来还不错&#xff1a; 再让写个简单小代码 问了它不会什么&#xff0c;它也不谦虚 问他怎么在抖音上赚钱&#xff0c;它回答的头头是道。 问它几个弱弱的问题&#x…

ChatGPT给测试工程师带来的机会和威胁

一、什么是ChatGPT ChatGPT&#xff08;全名&#xff1a;Chat Generative Pre-trained Transformer&#xff09;&#xff0c;美国OpenAI [1] 研发的聊天机器人程序 [12] &#xff0c;于2022年11月30日发布 [2-3] 。ChatGPT是人工智能技术驱动的自然语言处理工具&#xff0c…

测试人员如何巧妙使用ChatGPT

《庄子天地》篇中描述了一个“抱瓮灌园”的寓言故事&#xff0c;一位“为圃者”不辞辛苦“凿隧而入井&#xff0c;抱瓮而出灌”&#xff0c;当子贡告诉他有一种先进的取水装置“桔槔”时&#xff0c;他却以“无非不知&#xff0c;羞而不为也”的理由加以拒绝。在不少人眼中&…

ChatGPT会干掉测试吗

编者荐语&#xff1a; 并不是危言耸听 当下最火的是什么&#xff0c;那非ChatGPT莫属了&#xff0c;以ChatGPT为代表的各类AIGC工具&#xff0c;在不断颠覆我们的认知&#xff0c;不仅能完成律师&#xff0c;医学考试&#xff1b;还能画出一张精美的设计图&#xff0c;拿下艺…

ChatGPT能测试用例,那么测试人员会被取代吗?

ChatGPT4已经发布了并引起了巨大的反响&#xff0c;有一些基于ChatGPT的应用还是令人印象深刻的&#xff0c;比如 画个草图&#xff0c;让ChatGPT根据草图去生成一个有完备功能的网页&#xff1b; 让ChatGPT实现一个可以在网页上运行的贪吃蛇游戏&#xff1b; 看图说话 调教…

用ChatGPT生成测试数据

大家好&#xff0c;欢迎来到 Crossin的编程教室 &#xff01; 在之前的文章 用ChatGPT写一个数据采集程序 中&#xff0c;我们演示了如何用 ChatGPT 辅助编写代码。 除了直接让ChatGPT写代码&#xff0c;我们也可以让它生成一些开发中使用的测试数据。 比如在开发和测试时&…

【实测】用chatGPT来完整的走一次测试流程吧,看看它到底相当于我们什么等级的工程师?

大家好&#xff0c;实测系列是含金量非常高且首发的专业论文性质文章&#xff0c;请一定要保存&#xff0c;点赞&#xff0c;分享哦~ chatgpt我不多做介绍了&#xff0c;连我乡下的舅妈都知晓的东西。都说这玩意挺神的&#xff0c;那今天我就亲自来测试一下用gpt来做一次完整的…

ChatGPT会替代开发和测试吗?

从去年11月底开始&#xff0c;ChatGPT的消息一次次刷新我们的认知&#xff0c;OpenAI公布的前几个版本我还只是震惊和感叹&#xff0c;可最近GPT4.0的公开让我彻底坐不住了&#xff0c;这已经超越了绝大部分人的能力&#xff0c;有这玩意儿还要啥搜索引擎。 首先&#xff0c;Ch…

ChatGPT如何推荐测试工具?

ChatGPT是一种当前被广泛关注的人工智能技术&#xff0c;它具备生成自然语言的能力&#xff0c;能够完成一些简单的文本生成、对话交互等任务。ChatGPT 算法的出现&#xff0c;打破了以前自然语言处理的瓶颈&#xff0c;使得机器具备了更加贴合人类想法的表达能力&#xff0c;也…

ChatGPT对测试行业的影响(附GPT使用实战展示)

引言&#xff1a; 时代的巨轮缓缓碾过&#xff0c;顺应时代才能胜者为王 文末有ChatGPT应用实战成果展示 ChatGPT之我见 测试的影响 正如上篇文章的推文所述&#xff0c;AI的发展让我们所有人都始料未及&#xff0c;就好像雨后春笋一样&#xff0c;各种各样的AI技术顺势而…

ChatGPT推荐最常用的自动化测试、性能、安全测试工具!

ChatGPT是一种当前被广泛关注的人工智能技术&#xff0c;它具备生成自然语言的能力&#xff0c;能够完成一些简单的文本生成、对话交互等任务。ChatGPT 算法的出现&#xff0c;打破了以前自然语言处理的瓶颈&#xff0c;使得机器具备了更加贴合人类想法的表达能力&#xff0c;也…