最近的chatGPT是热火朝天,基本人手一个。工具用的好,工作5分钟,划水一整天。
但是也会有不少烦恼,访问官方网站都有网络的问题,需要FQ解决。这类工具也还是会有网络波动的问题,也有一定的安全风险。今天介绍一个方案,从此告别网络的问题,私人独享属于自己的chatGPT,不再担心想用的时候访问不了的情况。
这个项目是一个国内大佬ddiu8081开源的chatGPT项目,基于 OpenAI GPT-3.5 Turbo API 的demo。界面如下所示,非常简洁好看,反应速度流畅,还可以设置场景角色提示词,更好的和chatGPT交流。

本地部署需要有一定的前端开发环境,如果没有开发环境可直接跳过看下一种在线部署到云端的方式。
1 Node:在部署之前要安装node环境。检查您的开发环境和部署环境是否都使用Node v18或更高版本,你可以使用nvm管理本地多个node版本。可以使用下面的命令查看node的版本。
node -v
2 PNPM: 推荐使用 pnpm 来管理依赖,如果你要用npm安装依赖也是可以的,如果你从来没有安装过 pnpm,可以使用下面的命令安装:
npm i -g pnpm
3 OPENAI_API_KEY: 在运行此应用程序之前,您需要从 OpenAI 获取 API 密钥。您可以在官网 beta.openai.com/signup 注册 API 密钥。
1 克隆项目到本地的两种方式,仓库地址如下:
// http
git clone https://github.com/ddiu8081/chatgpt-demo.git
// ssh
git clone git@github.com:ddiu8081/chatgpt-demo.git
2 克隆下载完成后,进入项目跟目录,在终端输入如下命令安装依赖:
pnpm install
3 复制 .env.example 文件,重命名为 .env,并添加你的 OpenAI API key 到 .env 文件中。
OPENAI_API_KEY=sk-xxx...
4 运行应用,本地项目运行在 http://localhost:3000/
pnpm run dev
tips:因为是本地运行,所以还是会有网络的问题,如果你有相关工具,可以进行配置,配置 .env 文件中的 HTTPS_PROXY 即可。
# Provide proxy for OpenAI API. e.g. http://127.0.0.1:7890
HTTPS_PROXY=
Vercel是一个云端部署和服务平台,它提供了一个快速、安全、可扩展的方式来部署和管理现代web应用程序和网站。
部署到Vercel相对比较简单,点击仓库的README文件的Deploy with Vercel跳转到Vercel中设置相关OPENAI_API_KEY即可。

Netlify是一个现代化的Web应用程序部署和托管平台,它提供了一个快速、简单、安全、自动化的方式来构建、部署和管理Web应用程序。
1 Fork 此项目,前往 https://app.netlify.com/start 新建站点,选择刚刚 fork 完成的项目,将其与 GitHub 帐户连接。


2 选择要部署的分支,选择 main 分支, 在项目设置中配置环境变量,环境变量配置参考下文。

3 选择默认的构建命令和输出目录,单击 Deploy Site 按钮开始部署站点。

4 部署完成后在个人的站点里面即可看到对应的访问地址,如果个人有域名也可以设置自定义域名。

部署完成后访问地址可以看到运行正常,网络顺畅。

为了防止他人使用可以为网站设置密码,修改 .env 中的 SITE_PASSWORD 配置即可,以下是有设置密码的样式。

| Name | Description | Default |
|---|---|---|
OPENAI_API_KEY | 你的 OpenAI API Key | null |
HTTPS_PROXY | 为 OpenAI API 提供代理. e.g. http://127.0.0.1:7890 | null |
OPENAI_API_BASE_URL | 请求 OpenAI API 的自定义 Base URL. | https://api.openai.com |
HEAD_SCRIPTS | 在页面 之前注入分析或其他脚本 | null |
SECRET_KEY | 项目的秘密字符串。用于生成 API 调用的签名 | null |
SITE_PASSWORD | 网站设置密码。如果未设置,则该网站将是公开的 | null |
OPENAI_API_MODEL | 使用的 OpenAI 模型列表. List models | gpt-3.5-turbo |
整个安装部署的教程就到此结束了,相对还是比较简单,从此再也不用担心网络的问题了,电脑手机随时随地都可以使用。有兴趣的朋友可以试试看,有遇到安装或部署问题的欢迎留言交流。
看完本文如果觉得有用,记得点个赞支持,收藏起来说不定哪天就用上啦~
专注前端开发,分享前端相关技术干货,公众号:南城大前端(ID: nanchengfe)
类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc
我想安装一个带有一些身份验证的私有(private)Rubygem服务器。我希望能够使用公共(public)Ubuntu服务器托管内部gem。我读到了http://docs.rubygems.org/read/chapter/18.但是那个没有身份验证-如我所见。然后我读到了https://github.com/cwninja/geminabox.但是当我使用基本身份验证(他们在他们的Wiki中有)时,它会提示从我的服务器获取源。所以。如何制作带有身份验证的私有(private)Rubygem服务器?这是不可能的吗?谢谢。编辑:Geminabox问题。我尝试“捆绑”以安装新的gem..
我是Google云的新手,我正在尝试对其进行首次部署。我的第一个部署是RubyonRails项目。我基本上是在关注thisguideinthegoogleclouddocumentation.唯一的区别是我使用的是我自己的项目,而不是他们提供的“helloworld”项目。这是我的app.yaml文件runtime:customvm:trueentrypoint:bundleexecrackup-p8080-Eproductionconfig.ruresources:cpu:0.5memory_gb:1.3disk_size_gb:10当我转到我的项目目录并运行gcloudprevie
我想在Ruby中创建一个用于开发目的的极其简单的Web服务器(不,不想使用现成的解决方案)。代码如下:#!/usr/bin/rubyrequire'socket'server=TCPServer.new('127.0.0.1',8080)whileconnection=server.acceptheaders=[]length=0whileline=connection.getsheaders想法是从命令行运行这个脚本,提供另一个脚本,它将在其标准输入上获取请求,并在其标准输出上返回完整的响应。到目前为止一切顺利,但事实证明这真的很脆弱,因为它在第二个请求上中断并出现错误:/usr/b
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
我可以在Azure网站上部署RubyonRails吗? 最佳答案 还没有。目前仅支持.NET和PHP。 关于ruby-on-rails-RubyonRails可以部署在Azure网站上吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/12964010/
网络编程套接字网络编程基础知识理解源`IP`地址和目的`IP`地址理解源MAC地址和目的MAC地址认识端口号理解端口号和进程ID理解源端口号和目的端口号认识`TCP`协议认识`UDP`协议网络字节序socket编程接口`sockaddr``UDP`网络程序服务器端代码逻辑:需要用到的接口服务器端代码`udp`客户端代码逻辑`udp`客户端代码`TCP`网络程序服务器代码逻辑多个版本服务器单进程版本多进程版本多线程版本线程池版本服务器端代码客户端代码逻辑客户端代码TCP协议通讯流程TCP协议的客户端/服务器程序流程三次握手(建立连接)数据传输四次挥手(断开连接)TCP和UDP对比网络编程基础知识
前置步骤我们都操作完了,这篇开始介绍jenkins的集成。话不多说,看操作1、登录进入jenkins后会让你选择安装插件,选择第一个默认的就行。安装完成后设置账号密码,重新登录。2、配置JDK和Git都需要执行路径,所以需要先把执行路径找到,先进入服务器的docker容器,2.1JDK的路径root@69eef9ee86cf:/usr/bin#echo$JAVA_HOME/usr/local/openjdk-82.2Git的路径root@69eef9ee86cf:/#whichgit/usr/bin/git3、先配置JDK和Git。点击:ManageJenkins>>GlobalToolCon
深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal
假设您编写了一个类Sup,我决定将其扩展为SubSup。我不仅需要了解你发布的接口(interface),还需要了解你的私有(private)字段。见证这次失败:classSupdefinitialize@privateField="fromsup"enddefgetXreturn@privateFieldendendclassSub问题是,解决这个问题的正确方法是什么?看起来子类应该能够使用它想要的任何字段而不会弄乱父类(superclass)。编辑:equivalentexampleinJava返回"fromSup",这也是它应该产生的答案。 最佳答案