Englisch | 中文
Ein ChatGPT-Server, der Daten mithilfe einer baumbasierten Datenstruktur speichert und verarbeitet und Benutzern mit ChatGPT ein Mindmap-ähnliches Q&A-Erlebnis bietet. Die Baumstruktur optimiert die Übertragung von Kontext (Tokens) erheblich und sorgt für ein besseres Erlebnis bei der Verwendung innerhalb eines Unternehmens.
Das Bild zeigt einen Demo-Client; Die Benutzeroberfläche dient nur als Referenz.
In Arbeitsszenarien besteht relativ selten die Notwendigkeit, dieselbe Frage eingehend zu stellen, sodass in den meisten Fällen die Tokenanzahl innerhalb von 2000 kontrolliert werden kann. Daher ist das Tokenlimit von GPT 3.5 (4096) ausreichend (GPT4 muss nicht berücksichtigt werden). Genauigkeit).
Die Zeit zwischen den beiden Screenshots darf 5 Minuten nicht überschreiten. Aufgrund der Vielzahl an Benutzern müssen detaillierte Protokolle eingesehen werden, um den Token-Verbrauch der fünf genannten Fragen zu unterscheiden. Der gesamte Token-Verbrauch kann jedoch als kontrollierbar angesehen werden.
43.206.107.75:4000
Die Demoumgebung wird auf einem Cloud-Server bereitgestellt. Und legen Sie NICHT das OpenAI-Token fest, damit der Mock-Modus gestartet wird.
Bei Bedarf werden Aktualisierungen vorgenommen. Wenn das Projekt weit verbreitet ist, werden weitere Updates bereitgestellt, und wenn das Projekt weniger Benutzer hat, werden Aktualisierungen je nach Interesse vorgenommen.
Entwickeln Sie gerne eine Web-Benutzeroberfläche basierend auf diesem Projekt! Die Benutzeroberfläche in der Demo wurde von mir geschrieben, einem Anfänger im UI-Design. PRs sind willkommen!
Organisieren Sie Benutzereingaben in einem Baum mit mehreren Zweigen und übergeben Sie nur den Inhalt des aktuellen Zweigs als Kontextinformationen an GPT. Die Menge an Inhalten, die wir jedes Mal übertragen, entspricht der Tiefe des aktuellen Knotens. Optimieren Sie die Auswahl und Übertragung von Kontext durch den Multizweigbaum.
Ein Binärbaum mit n Knoten hat eine Tiefe von logn. Die Tiefe bezieht sich hier auf die Kontextinformationen, die wir an die GPT-API übergeben müssen. Wenn wir den Kontext nicht verarbeiten, kann er als eindimensionaler Baum betrachtet werden, der zu einem Liniensegment degeneriert, was natürlich der komplexeste Fall ist. Indem wir die Sitzung in einer Baumstruktur organisieren, können wir eine Mindmap erstellen.
Es wird empfohlen, einen Serverstandort in einem von OpenAI unterstützten Land oder einer Region zu wählen. Sowohl Rechenzentren als auch Cloud-Hosts sind akzeptabel und die folgenden Clouds wurden getestet:
Wenn Sie darauf bestehen, in einem nicht unterstützten Land oder einer nicht unterstützten Region zu testen, unterstützt dieses Projekt Proxys vollständig, aber der Proxy selbst kann das Erlebnis beeinträchtigen und Risiken bergen . Einzelheiten zur Proxy-Konfiguration finden Sie in der Konfigurationsdatei Spec.GPT.TransportUrl.
Der Einsatz von Proxys wird nicht empfohlen. Die Nutzung erfolgt auf eigene Gefahr.
git clone https://github.com/finishy1995/effibot.git
cd effibot
Die Standardkonfiguration ist der Mock-Modus, was bedeutet, dass die GPT-API nicht tatsächlich aufgerufen wird, sondern die Eingaben des Benutzers als Antwort zurückgegeben werden. Der Standard-REST-API-Port ist 4001
und alle Konfigurationen können in der Datei http/etc/http-api.yaml
geändert werden.
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
Wenn Sie nach dem Ändern der Datei One-click deployment
oder container deployment
benötigen, führen Sie bitte den folgenden Befehl aus
mkdir -p ./effibot_config
cp http/etc/http-api.yaml ./effibot_config
Bitte stellen Sie sicher, dass docker
und docker-compose
korrekt installiert und aktiviert sind.
docker-compose up -d
Der Demo-Client wird auf Port 4000
ausgeführt, und die REST-API wird auf den beiden Ports 4000
und 4001
ausgeführt.
Wenn Sie nicht über docker-compose
verfügen, können Sie den folgenden Befehl verwenden:
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
Stellen Sie sicher, dass Golang 1.18+ installiert und konfiguriert ist.
cd http
go run http.go # go build http.go && ./http
Verzeichnis verlassen
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
Der Demo-Client wurde von Vue.js + Vite + TypeScript entwickelt und erfordert die Node.js 14+-Umgebung.
cd demo
yarn && yarn dev
Der Demo-Client wird automatisch unter http://localhost:5173 geöffnet.