Anglais | Chine
Un serveur ChatGPT qui stocke et traite les données à l'aide d'une structure de données arborescente, offrant aux utilisateurs une expérience de questions-réponses de type carte mentale avec ChatGPT. L’arborescence optimise grandement la transmission du contexte (tokens) et offre une meilleure expérience lors de son utilisation au sein d’une entreprise.
L'image montre un client de démonstration ; l'interface utilisateur est uniquement à titre de référence.
Dans les scénarios de travail, le besoin de poser en profondeur la même question est relativement rare, donc dans la plupart des cas, le nombre de jetons peut être contrôlé dans les 2000. Par conséquent, la limite de jetons de GPT 3.5 (4096) est suffisante (pas besoin de considérer GPT4 pour précision).
Le temps entre les deux captures d’écran ne dépasse pas 5 minutes. En raison du nombre d'utilisateurs multiples, des journaux détaillés doivent être consultés pour distinguer la consommation de jetons des cinq questions mentionnées, mais la consommation globale de jetons peut être considérée comme contrôlable.
43.206.107.75:4000
L'environnement de démonstration est déployé sur un serveur cloud. Et NE définissez PAS le jeton OpenAI, il démarrera donc le mode simulé.
Des mises à jour seront effectuées au besoin. Plus de mises à jour seront fournies si le projet est largement utilisé, et des mises à jour seront effectuées en fonction de l'intérêt si le projet compte moins d'utilisateurs.
N'hésitez pas à développer une Web UI basée sur ce projet ! L'interface utilisateur de la démo est écrite par moi, un débutant en conception d'interface utilisateur. Les PR sont les bienvenus !
Organisez les entrées utilisateur dans une arborescence multi-branches et transmettez uniquement le contenu de la branche actuelle comme informations contextuelles à GPT. La quantité de contenu que nous transmettons à chaque fois est égale à la profondeur du nœud actuel. Optimisez la sélection et la transmission du contexte à travers l’arborescence multibranches.
Un arbre binaire à n nœuds a une profondeur de logn. La profondeur ici fait référence aux informations de contexte que nous devons transmettre à l'API GPT. Si l'on ne traite pas le contexte, celui-ci peut être considéré comme un arbre unidimensionnel, qui dégénère en segment de droite, cas naturellement le plus complexe. En organisant la séance sous forme d'arborescence, nous pouvons créer une carte mentale.
Il est recommandé de choisir un emplacement de serveur dans un pays ou une région pris en charge par OpenAI. Les centres de données et les hôtes cloud sont tous deux acceptables, et les cloud suivants ont été testés :
Si vous insistez pour tester dans un pays ou une région non pris en charge, ce projet prend entièrement en charge les proxys, mais le proxy lui-même peut affecter l'expérience et présenter des risques . Consultez le fichier de configuration Spec.GPT.TransportUrl pour les détails de configuration du proxy.
Le recours aux procurations n’est pas recommandé. Utilisez à vos propres risques.
git clone https://github.com/finishy1995/effibot.git
cd effibot
La configuration par défaut est le mode Mock, ce qui signifie qu'elle n'appellera pas réellement l'API GPT mais renverra l'entrée de l'utilisateur en réponse. Le port de l'API REST par défaut est 4001
et toutes les configurations peuvent être modifiées dans le fichier 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
Après avoir modifié le fichier, si vous avez besoin One-click deployment
ou container deployment
, veuillez exécuter la commande suivante
mkdir -p ./effibot_config
cp http/etc/http-api.yaml ./effibot_config
Veuillez vous assurer que docker
et docker-compose
sont correctement installés et activés.
docker-compose up -d
Le client de démonstration s'exécutera sur le port 4000
et l'API REST s'exécutera sur les ports 4000
et 4001
.
Si vous n'avez pas docker-compose
, vous pouvez utiliser la commande suivante :
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
Assurez-vous que Golang 1.18+ est installé et configuré.
cd http
go run http.go # go build http.go && ./http
Quitter le répertoire
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
Le client de démonstration est développé par Vue.js + Vite + TypeScript et nécessite l'environnement Node.js 14+.
cd demo
yarn && yarn dev
Le client de démonstration s'ouvrira automatiquement sur http://localhost:5173.