英语 | 中文
ChatGPT 服务器使用基于树的数据结构存储和处理数据,为用户提供类似于思维导图的 ChatGPT 问答体验。树形结构极大地优化了上下文(令牌)的传输,在公司内部使用时提供了更好的体验。
图为演示客户端;用户界面仅供参考。
在工作场景中,需要深入询问同一问题的情况比较少,所以大多数情况下,token数量可以控制在2000以内。因此,GPT 3.5的token限制(4096)就足够了(不需要考虑GPT4)准确性)。
两次截图之间的时间间隔不超过5分钟。由于用户较多,需要查看详细日志来区分上述五个问题的代币消耗情况,但总体来看代币消耗情况是可控的。
43.206.107.75:4000
演示环境部署在云服务器上。并且不设置 OpenAI 令牌,因此它将启动模拟模式。
将根据需要进行更新。如果项目被广泛使用,将提供更多更新;如果项目用户较少,将根据兴趣进行更新。
请随意基于此项目开发 Web UI! Demo中的UI是我这个UI设计初学者写的。欢迎 PR!
将用户输入组织成多分支树,仅将当前分支的内容作为上下文信息传递给 GPT。我们每次传输的内容量等于当前节点的深度。通过多分支树优化上下文的选择和传输。
具有 n 个节点的二叉树的深度为 logn。这里的深度是指我们需要传递给GPT API的上下文信息。如果我们不对上下文进行处理,可以将其视为一维树,退化为线段,自然是最复杂的情况。通过将会话组织成树结构,我们可以创建思维导图。
建议选择OpenAI支持的国家或地区的服务器位置。数据中心和云主机都可以,已经测试过以下云:
如果你坚持在不支持的国家或地区进行测试,本项目完全支持代理,但代理本身可能会影响体验并带来风险。有关代理配置详细信息,请参阅配置文件 Spec.GPT.TransportUrl。
不建议使用代理。使用风险自负。
git clone https://github.com/finishy1995/effibot.git
cd effibot
默认配置是 Mock 模式,这意味着它不会实际调用 GPT API,而是返回用户的输入作为响应。默认的 REST API 端口是4001
,所有配置都可以在http/etc/http-api.yaml
文件中修改。
vi http/etc/http-api.yaml
Name : http-api
Host : 0.0.0.0
Port : 4001 # Port of http server, default 4001
Timeout : 30000 # Timeout of http request, default 30000(ms)
Log :
Level : debug
Mode : file # Log mode, default console 日志模式,可选 console(命令行输出) 或 file
Path : ../logs # Log file path, default ../logs
Spec :
GPT :
# Token: "sk-" # Token of OpenAI, will start mock mode if not set. OpenAI 密钥,如果不设置则启用 mock 模式
# TransportUrl: "http://localhost:4002" # Transport url of OpenAI, default "http://localhost:4002 代理地址,如果不设置则不启用代理
Timeout : 20s # Timeout of OpenAI request, default 20s
MaxToken : 1000 # Max token of OpenAI response, default 1000
修改文件后,如果需要One-click deployment
或者container deployment
,请执行以下命令
mkdir -p ./effibot_config
cp http/etc/http-api.yaml ./effibot_config
请确保docker
和docker-compose
已正确安装并启用。
docker-compose up -d
演示客户端将在端口4000
上运行,REST API 将在端口4000
和4001
上运行。
如果您没有docker-compose
,可以使用以下命令:
docker network create effibot
docker run -p 4001:4001 -v ./effibot_config:/app/etc --network effibot --name effibot -d finishy/effibot:latest
docker run -p 4000:4000 --network effibot --name effibot-demo -d finishy/effibot-demo:latest
确保安装并配置了 golang 1.18+。
cd http
go run http.go # go build http.go && ./http
退出目录
cd ..
docker build -t effibot:latest -f http/Dockerfile .
docker network create effibot
# Modify the configuration file as needed, such as adding the OpenAI token and change the log mode to console
docker run -p 4001:4001 -v ./effibot_config:/app/etc --network effibot --name effibot -d effibot:latest
docker build -t effibot-demo:latest -f demo/Dockerfile .
docker run -p 4000:4000 --network effibot --name effibot-demo -d effibot-demo:latest
Demo客户端采用Vue.js + Vite + TypeScript开发,需要Node.js 14+环境。
cd demo
yarn && yarn dev
演示客户端将自动在 http://localhost:5173 打开。