Inglés | 中文
Un servidor ChatGPT que almacena y procesa datos utilizando una estructura de datos basada en árbol, brindando a los usuarios una experiencia de preguntas y respuestas similar a un mapa mental con ChatGPT. La estructura de árbol optimiza en gran medida la transmisión de contexto (tokens) y proporciona una mejor experiencia cuando se utiliza dentro de una empresa.
La imagen muestra un cliente de demostración; la interfaz de usuario es solo como referencia.
En escenarios de trabajo, la necesidad de hacer la misma pregunta en profundidad es relativamente rara, por lo que en la mayoría de los casos, el recuento de tokens se puede controlar dentro de 2000. Por lo tanto, el límite de tokens de GPT 3.5 (4096) es suficiente (no es necesario considerar GPT4 para exactitud).
El tiempo entre las dos capturas de pantalla no supera los 5 minutos. Debido a que hay múltiples usuarios, es necesario ver registros detallados para distinguir el consumo de tokens de las cinco preguntas mencionadas, pero el consumo general de tokens puede considerarse controlable.
43.206.107.75:4000
El entorno de demostración se implementa en un servidor en la nube. Y NO configure el token OpenAI, por lo que iniciará el modo simulado.
Se realizarán actualizaciones según sea necesario. Se proporcionarán más actualizaciones si el proyecto se utiliza ampliamente y se realizarán actualizaciones según el interés si el proyecto tiene menos usuarios.
¡Siéntete libre de desarrollar una interfaz de usuario web basada en este proyecto! La interfaz de usuario de la demostración la escribí yo, un principiante en diseño de interfaz de usuario. ¡Los relaciones públicas son bienvenidos!
Organice la entrada del usuario en un árbol de múltiples ramas y pase solo el contenido de la rama actual como información de contexto a GPT. La cantidad de contenido que transmitimos cada vez es igual a la profundidad del nodo actual. Optimice la selección y transmisión de contexto a través del árbol multirama.
Un árbol binario con n nodos tiene una profundidad de logn. La profundidad aquí se refiere a la información de contexto que necesitamos pasar a la API de GPT. Si no procesamos el contexto, podemos considerarlo como un árbol unidimensional que degenera en un segmento de línea, que naturalmente es el caso más complejo. Al organizar la sesión en una estructura de árbol, podemos crear un mapa mental.
Se recomienda elegir una ubicación del servidor en un país o región compatible con OpenAI. Tanto los centros de datos como los hosts de nube son aceptables y se han probado las siguientes nubes:
Si insiste en realizar pruebas en un país o región no compatible, este proyecto admite totalmente los servidores proxy, pero el proxy en sí puede afectar la experiencia y plantear riesgos . Consulte el archivo de configuración Spec.GPT.TransportUrl para obtener detalles de la configuración del proxy.
No se recomienda el uso de proxies. Úselo bajo su propio riesgo.
git clone https://github.com/finishy1995/effibot.git
cd effibot
La configuración predeterminada es el modo simulado, lo que significa que en realidad no llamará a la API de GPT, sino que devolverá la entrada del usuario como respuesta. El puerto API REST predeterminado es 4001
y todas las configuraciones se pueden modificar en el archivo 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
Después de modificar el archivo, si necesita One-click deployment
o container deployment
, ejecute el siguiente comando
mkdir -p ./effibot_config
cp http/etc/http-api.yaml ./effibot_config
Asegúrese de que docker
y docker-compose
estén instalados y habilitados correctamente.
docker-compose up -d
El cliente de demostración se ejecutará en el puerto 4000
y la API REST se ejecutará en los puertos 4000
y 4001
.
Si no tiene docker-compose
, puede usar el siguiente comando:
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
Asegúrese de que golang 1.18+ esté instalado y configurado.
cd http
go run http.go # go build http.go && ./http
Salir del directorio
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
El cliente de demostración está desarrollado por Vue.js + Vite + TypeScript y requiere el entorno Node.js 14+.
cd demo
yarn && yarn dev
El cliente de demostración se abrirá automáticamente en http://localhost:5173.