大家好,我是加勒比考斯。
今天来教大家如何使用NAS来搭建ChatGPT,干货教程必收藏!
现在IT的新潮流,当属各种的AI,不论是绘画,聊天,AI都涌现出了更强的创造力。
例如最近火爆的chatgpt,ChatGPT是人工智能技术驱动的自然语言处理工具,它能够通过理解和学习人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。
例如,我想让它整理NAS上的文件,只需一句话就能写出能用的批处理代码:
我是使用的威联通TS-464C进行的搭建ChatGP。
TS-464C是威联通的4盘位旗舰NAS,强大的性能与低廉的价格是我选择它的原因,威联通这个品牌大家应该耳熟能详,作为传统的专业级NAS厂家,它已经发展了18年,数据安全技术底蕴极其深厚,拥有业内极佳的品牌职业操守和良好的用户口碑!
我选择威联通的原因有五点:
1、独家的Qtier技术。(支持将SSD与HDD整合在一起形成一个存储池,既有SSD的速度也有HDD的容量)
2、独家的HBS3应用。(最佳3-2-1数据备份原则实施应用,所有NAS厂商里面做得最好)
3、大陆服务器带宽升级。(即使没公网IP,使用外网访问速度也是满速)
4、独家的虚拟机技术。(非常强大,支持虚拟机多开,整机备份,以及统一管理)(还支持HDMI直出)
5、独家快照技术。(实时将整个存储池进行存档)
6、我个人目前使用都是协议连接,威联通NAS支持所有的协议,稳定满速不卡顿。
ChatGPT注册简略
Chatgpt不支持中国的IP访问,而且注册,登录又需要进行网络设置,十分麻烦,想给朋友家人分享也非常困难。但是通过NAS搭建之后只要通过网址访问就可以随意访问,极其好用。
这里简单说说chatgpt账号注册。(详细步骤在B站能搜一大把)
1、网址
浏览器开启隐私窗口,切换网络访问https://chat.openai.com/
2、接码平台
注册时需要国外手机号验证,用https://sms-activate.org/类似的平台接收验证码
3、白嫖账号
实在注册不了,那就用别人的免费号,https://terobox.com/ (不保证一直能用)
可能眼尖的读者已经发现,我的chatgpt对话框居然不是官网,而是局域网IP访问。它可以部署到本地NAS?是的,本月OpenAI推出了 GPT-3.5-Turbo 的api,0.002美元/1000token(你可理解为两美元聊几十万字),所有用户都能免费申请API体验一个月。不少基于api开发的chatgpt应用涌现( ChatPDF、ChatBox 、OpenCat等 ),比通过网页破解接口更加稳定,我实测用自己的api回复速度快好几倍,而且几乎不掉线。
威联通部署ChatGPT
1、容器介绍
首先感谢 Chanzhaoyu 使用 Vue3 和 Express 开发的 ChatGPT Web 。拥有两种模式(API和网页token),支持多个会话和上下文逻辑,美化公式和高亮代码,支持数据导入导出。 项目地址: https://github.com/Chanzhaoyu/chatgpt-web
2、疾速部署
打开Container Station,选择“创建”,点击页面右方的“创建应用程序”。(这是威联通独有的网页 compose 粘贴,一步到位搭建容器,后期修改也很方便。 )
version: '3'
services:
app:
image: chenzhaoyu94/chatgpt-web
ports:
– 3002:3002
environment:
OPENAI_API_KEY: sk-kxASwyVuqjLmcN2E1eztT3BlbkFJ1bMfVDd7T3Bkuj1z****
OPENAI_API_BASE_URL: https://openapi.ssiic.com
AUTH_SECRET_KEY: car
TIMEOUT_MS: 60000
请务必以图片格式为准,部分平台会吞空格,空格少了就会部署失败。
3、注意事项:
①OPENAI_API_KEY后面请替换成你自己账号的api。
在 https://platform.openai.com/account/api-keys 这个网址登陆并创建。
②由于国内api服务器被阻塞,需要填写 OPENAI_API_BASE_URL反向代理,
如:https://api.googlevideo.dev 或 https://openapi.ssiic.com ,
③反代地址是我随便找的,算是有安全隐患,你也可尝试自己本地的socket代理,环境变量添加两条 SOCKS_PROXY_HOST:IP SOCKS_PROXY_PORT:7891 不能细说,懂的自然懂。
容器创建成功后,就可以通过(http://威联通IP:3002)访问chatgpt-web容器,访问密码取决于 AUTH_SECRET_KEY: 后面的字符串。读者朋友们可轻松分享给伙伴,不需要设置网络,也不用再注册账号。
三、效果演示
1、手机运行的效果
第一张是浏览器打开的,第二三张是添加到主屏幕,像app一样打开,可以看出chatgpt完美支持pwa模式,聊天支持代码和公式的显示。
2、电脑使用的效果
例如我想整理近期攒起的一堆混乱文件,让chatgpt给我写了一个批处理程序。复制后另存为***.bat,就能把文件归类得井井有条。
甚至让chatgpt写一个带有界面UI的Python程序都行!可以将我囤积的大量“歌手 – 歌名”这类MV,按照歌手名字批量整理。
当然,chatgpt写出来的程序不一定全都能用,可以点击它右下角转圈图标重新写一遍,下面是一段成功运行的代码(另存为***.pyw,电脑要有Python):
# 导入所需模块
import os
import shutil
import tkinter as tk
from tkinter import filedialog, IntVar
from collections import Counter
from glob import glob
# 创建一个主窗口
window = tk.Tk()
window.title("MV分类程序")
window.geometry("320×160")
# 创建一个标签和一个按钮,用于显示和选择源目录(也是目标目录)
src_label = tk.Label(window, text="请选择源目录:")
src_label.pack()
src_button = tk.Button(window, text="浏览", command=lambda: select_dir(src_entry))
src_button.pack()
src_entry = tk.Entry(window)
src_entry.pack()
# 创建一个标签和一个输入框,用于输入重复次数的阈值n(默认为3)
n_label = tk.Label(window, text="请输入重复次数的阈值:")
n_label.pack()
n_var = IntVar(value=3) # 创建一个整数变量,用于存储用户输入的n值
n_entry = tk.Entry(window, textvariable=n_var)
n_entry.pack()
# 定义一个函数,用于弹出一个对话框让用户选择一个目录,并将其路径显示在对应的输入框中
def select_dir(entry):
dir_path = filedialog.askdirectory()
entry.delete(0, "end")
entry.insert(0, dir_path)
# 创建一个按钮,用于开始分类操作
start_button = tk.Button(window, text="开始分类", command=lambda: sort_files(src_entry.get(), n_var.get()))
start_button.pack()
# 定义一个函数,用于按照文件名中“ – ”之前的文本,重复n次以上就自动归类到对应子文件夹
def sort_files(src_folder, n):
# 获取源目录中所有包含“ – ”的文件名,并按照字母顺序排序
file_list = sorted(glob(os.path.join(src_folder, "* – *")))
# 创建一个空列表,用于存储所有分类依据(即“ – ”之前的文本)
category_list = []
# 遍历所有的文件名
for file_name in file_list:
# 将文件名按照“ – ”分割成两部分,并取第一部分作为分类依据
category = os.path.basename(file_name).split(" – ")[0]
# 将当前分类依据添加到列表中
category_list.append(category)
# 使用Counter类来统计每个分类依据出现的次数,并过滤出重复n次以上的分类依据(即键值大于等于n)
category_counter = Counter(category_list)
category_counter = dict(filter(lambda x: x[1] >= n, category_counter.items()))
# 遍历每个符合条件的分类依据和对应的次数(这里不需要用到次数)
for category, count in category_counter.items():
# 创建一个以分类依据命名的新子目录(如果不存在)
new_dir_path = os.path.join(src_folder, category)
if not os.path.exists(new_dir_path):
os.mkdir(new_dir_path)
# 遍历所有的文件名
for file_name in file_list:
# 如果文件名中包含当前分类依据,就将该文件移动到新子目录中
if file_name.startswith(os.path.join(src_folder, category + " – ")):
shutil.move(file_name, new_dir_path)
# 启动主循环
window.mainloop()
原文链接:https://sspai.com/post/78826