当前位置:首页|资讯|ChatGPT|GitHub|Hugging Face

极空间新z4利用Docker实现本地ChatGPT对话

作者:出道题发布时间:2023-05-23

【摘要:本教程用于实现在本地ChatGPT对话,同时可借用本app的本地索引功能,对PDF、TXT、DOCX等文件实现文件回答功能。】

一、 界面以及功能

 

使用对话功能提高工作效率
使用和文件对话功能(画圈部分是上传文件位置)



二、 实现上述功能步骤

【说明:实现上述功能的教程来至于https://github.com/GaiZhenbiao/ChuanhuChatGPT/wiki/使用教程,教程内实现Hugging Face 上在线部署、本地部署、docker部署三种方式,考虑到稳定和方便本教程采用docker部署。使用这个方案需要你有以下东西:

  1.  一个国内可访问的域名(没有请自己购买)

  2.  一个 Cloudflare 账号(免费注册)

  3.  一个chagpt的key,里面要有额度(网上大把教程,此处略)】

  • 1、 拉取镜像并获取配置文件

在镜像仓库搜索拉取镜像tuchuanhuhuhu/chuanhuchatgpt

并在https://github.com/GaiZhenbiao/ChuanhuChatGPT下载文件config_example.json文件,并重新命名config.json。

2.根据需求修改配置文件

根据需求修改配置文件。配置文件的详细说明请参考github的wiki文档。

其中需要注意几点:

"language": " zh_CN",(实现界面中文)

"openai_api_key": "sk-xxxxxxxxxxxxxxxxxxxxxxxxx",(chatgpt的key)

"api_host":"api.openai.com",(chatgpt的api host网址,由于网络隔绝原因,这个需要自己做一个,才能使用,否则容易被封号,下面步骤在Cloudflare生成一个属于自己专有host)

其他的根据配置文件中的注释修改

3.创建文件夹

创建存放 ChuanhuChatGPT 配置和聊天记录的文件夹,创建一个配置文件映射以及一个目录映射:/app/config.json和/app/history,然后运行。


三、 利用cloudflare反代实现国内直接使用openai的api接口

【按照前面的说法,chatgpt的api_host如果使用官方,容易被封,如果要达到本地化使用的,自己搭建一个api域名地址就成了有些人的刚需。该方案的主要思路是使用 Cloudflare 的 Workers 来代理 OpenAI 的 API 地址,配合自己的域名即可在境内实现访问。因为 Cloudflare Workers 有每天免费 10 万次的请求额度,也有可以免费注册的域名,所以几乎可以说是零经济成本。技术成本请自己学习。这部分使用知乎“烟斗汪game”的相关教程,就稍微改改】

步骤大纲以及具体步骤

  • 1.新建一个 Cloudflare Worker

  • 2.将反代代码粘贴到 Worker 中并部署

  • 3.给 Worker 绑定一个国内可访问的域名

  • 4.使用自己的域名代替 api.openai.com

  • 5.使用自己的域名在各种chatgpt项目中填上去,即可实现国内直接访问

  1. 将域名 NS 转到 Cloudflare

目的:如果有一个域名,域名没有托管在

Cloudflare,下述内容为将自己域名托管在Cloudflare。没有 Cloudflare 账号的话可以注册一个,具体注册细节就不多说了。

注册或登录到 Cloudflare 的管理界面后,点击侧边栏的 “Websites” ,然后点击 “Add a Site” 按钮准备将域名转到 Cloudflare:


 在 “Enter your site (http://example.com)” 处输入要转入的域名后,点击 “Add Site”:

 

根据 Cloudflare 的提示,在域名注册商处将 NS 修改到 Cloudflare 指定的地址,等待域名解析成功后,即可进行后续操作。

2、创建一个 Cloudflare Worker

登录到 Cloudflare 的管理界面后,点击侧边栏的 “Workers” 选项,然后点击 “Create a Service” 创建一个 Worker。

 然后在创建界面中输入 “Service name” 后点击 “Create Service” 按钮新建 Worker。“Select a starter” 项先不用管。

 至此 Cloudflare 的 Worker 便创建好了,下面开始修改 Worker 的代码,使其能代理 OpenAI 的 API。

3、修改 Cloudflare Worker 的代码

在 Worker 的管理界面,点击右上角的 “Quick Edit” 按钮编辑代码 Worker 的代码。

 

在左侧的代码编辑器中,删除现有的所有代码,然后复制粘贴以下内容到代码编辑器:

  • const TELEGRAPH_URL = 'https://api.openai.com';


  • addEventListener('fetch', event => {

  •   event.respondWith(handleRequest(event.request))

  • })


  • async function handleRequest(request) {

  •   const url = new URL(request.url);

  •   url.host = TELEGRAPH_URL.replace(/^https?:///, '');


  •   const modifiedRequest = new Request(url.toString(), {

  •     headers: request.headers,

  •     method: request.method,

  •     body: request.body,

  •     redirect: 'follow'

  •   });


  •   const response = await fetch(modifiedRequest);

  •   const modifiedResponse = new Response(response.body, response);


  •   // 添加允许跨域访问的响应头

  •   modifiedResponse.headers.set('Access-Control-Allow-Origin', '*');


  •   return modifiedResponse;

  • }

最后点击编辑器右下角的 “Save and deploy” 按钮部署该代码,在弹出的对话框中继续选择 “Save and deploy” 确认部署。 

至此,便可以使用该 worker 的地址来代替 OpenAI 的 API 地址了。比如想要请求 ChatGPT 的 API 时,把官方文档中的 https://api.openai.com/v1/chat/completions 替换成 https://你自己的地址.workers.dev 即可

但是你可能会发现,这样做了依然还是没有解决问题,因为 Cloudflare Workers 的 workers.dev 域名是无法在国内直接访问的。所以我们需要给 Worker 绑定一个自己的域名。

4、绑定域名

在 Cloudflare Workers 的管理界面中,点击 “Triggers” 选项卡,然后点击 “Custom Domians” 中的 “Add Custom Domain” 按钮以绑定域名。

 输入域名后点击 “Add Custom Domain”, 添加你之前绑定在cloudflare上的域名。

随后,就可以通过你自己的域名来代替 OpenAI 的 API 地址了,你就可以在国内直接使用了。

比如在本文的例子中,想要请求 ChatGPT 的 API ,即是把官方 API 地址 https://api.openai.com 换为你自己的域名 https://openai.nooc.ink 即可。由于 Cloudflare 有每天免费 10 万次的请求额度,所以个人使用基本是零成本的,如果要商用,这点额度是不够的。



Copyright © 2024 aigcdaily.cn  北京智识时代科技有限公司  版权所有  京ICP备2023006237号-1