From c667f1cec521534781de51e316d5edeed89bdb89 Mon Sep 17 00:00:00 2001 From: Heiner Lohaus Date: Wed, 6 Dec 2023 11:54:50 +0100 Subject: Improve docker image --- docker-compose.yml | 4 +-- docker/Dockerfile | 3 +- docker/start-selenium-node.sh | 17 ---------- docker/supervisor.conf | 76 +++++++++++++++++++++++++++++++++++++++++++ g4f/gui/client/js/chat.v1.js | 2 +- g4f/gui/server/backend.py | 5 ++- g4f/models.py | 2 ++ 7 files changed, 86 insertions(+), 23 deletions(-) delete mode 100755 docker/start-selenium-node.sh create mode 100755 docker/supervisor.conf diff --git a/docker-compose.yml b/docker-compose.yml index 89b11f06..8dfe1f35 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -2,13 +2,11 @@ version: '3' services: gpt4free: - image: gpt4free:latest + image: ghcr.io/xtekky/gpt4free:latest shm_size: 2gb build: context: . dockerfile: docker/Dockerfile - cache_from: - - gpt4free:latest volumes: - .:/app ports: diff --git a/docker/Dockerfile b/docker/Dockerfile index 354f66d1..0c52940d 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -2,6 +2,7 @@ FROM selenium/node-chrome ENV SE_SCREEN_WIDTH 1920 ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret +ENV PYTHONUNBUFFERED 1 USER root @@ -18,7 +19,7 @@ RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/* \ && apt-get -qyy clean # Update entrypoint -COPY docker/start-selenium-node.sh /opt/bin/ +COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.conf # Change background image COPY g4f.png /usr/share/images/fluxbox/ubuntu-light.png diff --git a/docker/start-selenium-node.sh b/docker/start-selenium-node.sh deleted file mode 100755 index a02d0e82..00000000 --- a/docker/start-selenium-node.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash - -# Start the pulseaudio server -pulseaudio -D --exit-idle-time=-1 - -# Load the virtual sink and set it as default -pacmd load-module module-virtual-sink sink_name=v1 -pacmd set-default-sink v1 - -# Set the monitor of v1 sink to be the default source -pacmd set-default-source v1.monitor - -rm -f /tmp/.X*lock - -# Start app servers -python -m g4f.cli api & -python -m g4f.cli gui \ No newline at end of file diff --git a/docker/supervisor.conf b/docker/supervisor.conf new file mode 100755 index 00000000..6d82f6c9 --- /dev/null +++ b/docker/supervisor.conf @@ -0,0 +1,76 @@ +[program:xvfb] +priority=0 +command=/opt/bin/start-xvfb.sh +autostart=true +autorestart=true + +;Logs +redirect_stderr=false +stdout_logfile=/var/log/supervisor/xvfb-stdout.log +stderr_logfile=/var/log/supervisor/xvfb-stderr.log +stdout_logfile_maxbytes=50MB +stderr_logfile_maxbytes=50MB +stdout_logfile_backups=5 +stderr_logfile_backups=5 +stdout_capture_maxbytes=50MB +stderr_capture_maxbytes=50MB + +[program:vnc] +priority=5 +command=/opt/bin/start-vnc.sh +autostart=true +autorestart=true + +;Logs +redirect_stderr=false +stdout_logfile=/var/log/supervisor/vnc-stdout.log +stderr_logfile=/var/log/supervisor/vnc-stderr.log +stdout_logfile_maxbytes=50MB +stderr_logfile_maxbytes=50MB +stdout_logfile_backups=5 +stderr_logfile_backups=5 +stdout_capture_maxbytes=50MB +stderr_capture_maxbytes=50MB + +[program:novnc] +priority=10 +command=/opt/bin/start-novnc.sh +autostart=true +autorestart=true + +;Logs +redirect_stderr=false +stdout_logfile=/var/log/supervisor/novnc-stdout.log +stderr_logfile=/var/log/supervisor/novnc-stderr.log +stdout_logfile_maxbytes=50MB +stderr_logfile_maxbytes=50MB +stdout_logfile_backups=5 +stderr_logfile_backups=5 +stdout_capture_maxbytes=50MB +stderr_capture_maxbytes=50MB + +[program:g4f-cli] +priority=15 +command=python -m g4f.cli api +directory=/app +stopasgroup=true +autostart=true +autorestart=true + +;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs" +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 + +[program:g4f-gui] +priority=15 +command=python -m g4f.cli gui +directory=/app +stopasgroup=true +autostart=true +autorestart=true + +;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs" +redirect_stderr=true +stdout_logfile=/dev/stdout +stdout_logfile_maxbytes=0 \ No newline at end of file diff --git a/g4f/gui/client/js/chat.v1.js b/g4f/gui/client/js/chat.v1.js index 2b1fdcb0..2844b73e 100644 --- a/g4f/gui/client/js/chat.v1.js +++ b/g4f/gui/client/js/chat.v1.js @@ -601,7 +601,7 @@ observer.observe(message_input, { attributes: true }); let auto = document.createElement('option'); auto.value = ''; - auto.text = 'Default Model'; + auto.text = 'Model: Default'; select.appendChild(auto); for (model of models) { diff --git a/g4f/gui/server/backend.py b/g4f/gui/server/backend.py index 03363201..e1abb764 100644 --- a/g4f/gui/server/backend.py +++ b/g4f/gui/server/backend.py @@ -41,7 +41,10 @@ class Backend_Api: return g4f._all_models def providers(self): - return [provider.__name__ for provider in g4f.Provider.__providers__ if provider.working] + return [ + provider.__name__ for provider in g4f.Provider.__providers__ + if provider.working and provider is not g4f.Provider.RetryProvider + ] def _gen_title(self): return { diff --git a/g4f/models.py b/g4f/models.py index a6cd724b..cf24ff52 100644 --- a/g4f/models.py +++ b/g4f/models.py @@ -275,6 +275,8 @@ class ModelUtils: 'gpt-3.5-turbo-16k' : gpt_35_turbo_16k, 'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613, + 'gpt-3.5-long': gpt_35_long, + # gpt-4 'gpt-4' : gpt_4, 'gpt-4-0613' : gpt_4_0613, -- cgit v1.2.3