返回提交历史
Modified
docker-compose.yml
+1
-3
Modified
docker/Dockerfile
+2
-1
Deleted
docker/start-selenium-node.sh
+0
-17
Added
docker/supervisor.conf
+76
-0
Modified
g4f/gui/client/js/chat.v1.js
+1
-1
Modified
g4f/gui/server/backend.py
+4
-1
Modified
g4f/models.py
+2
-0
XFEstudio/gpt4free
Improve docker image
c667f1ce
代码差异
7 个文件
+86
-23
@@ -2,13 +2,11 @@ version: '3'
2
2
3
3
services:
4
4
gpt4free:
5
image: gpt4free:latest
5
image: ghcr.io/xtekky/gpt4free:latest
6
6
shm_size: 2gb
7
7
build:
8
8
context: .
9
9
dockerfile: docker/Dockerfile
10
cache_from:
11
- gpt4free:latest
12
10
volumes:
13
11
- .:/app
14
12
ports:
@@ -2,6 +2,7 @@ FROM selenium/node-chrome
2
2
3
3
ENV SE_SCREEN_WIDTH 1920
4
4
ENV G4F_LOGIN_URL http://localhost:7900/?autoconnect=1&resize=scale&password=secret
5
ENV PYTHONUNBUFFERED 1
5
6
6
7
USER root
7
8
@@ -18,7 +19,7 @@ RUN rm -rf /var/lib/apt/lists/* /var/cache/apt/* \
18
19
&& apt-get -qyy clean
19
20
20
21
# Update entrypoint
21
COPY docker/start-selenium-node.sh /opt/bin/
22
COPY docker/supervisor.conf /etc/supervisor/conf.d/selenium.conf
22
23
23
24
# Change background image
24
25
COPY g4f.png /usr/share/images/fluxbox/ubuntu-light.png
@@ -1,17 +0,0 @@
1
#!/bin/bash
2
3
# Start the pulseaudio server
4
pulseaudio -D --exit-idle-time=-1
5
6
# Load the virtual sink and set it as default
7
pacmd load-module module-virtual-sink sink_name=v1
8
pacmd set-default-sink v1
9
10
# Set the monitor of v1 sink to be the default source
11
pacmd set-default-source v1.monitor
12
13
rm -f /tmp/.X*lock
14
15
# Start app servers
16
python -m g4f.cli api &
17
python -m g4f.cli gui
@@ -0,0 +1,76 @@
1
[program:xvfb]
2
priority=0
3
command=/opt/bin/start-xvfb.sh
4
autostart=true
5
autorestart=true
6
7
;Logs
8
redirect_stderr=false
9
stdout_logfile=/var/log/supervisor/xvfb-stdout.log
10
stderr_logfile=/var/log/supervisor/xvfb-stderr.log
11
stdout_logfile_maxbytes=50MB
12
stderr_logfile_maxbytes=50MB
13
stdout_logfile_backups=5
14
stderr_logfile_backups=5
15
stdout_capture_maxbytes=50MB
16
stderr_capture_maxbytes=50MB
17
18
[program:vnc]
19
priority=5
20
command=/opt/bin/start-vnc.sh
21
autostart=true
22
autorestart=true
23
24
;Logs
25
redirect_stderr=false
26
stdout_logfile=/var/log/supervisor/vnc-stdout.log
27
stderr_logfile=/var/log/supervisor/vnc-stderr.log
28
stdout_logfile_maxbytes=50MB
29
stderr_logfile_maxbytes=50MB
30
stdout_logfile_backups=5
31
stderr_logfile_backups=5
32
stdout_capture_maxbytes=50MB
33
stderr_capture_maxbytes=50MB
34
35
[program:novnc]
36
priority=10
37
command=/opt/bin/start-novnc.sh
38
autostart=true
39
autorestart=true
40
41
;Logs
42
redirect_stderr=false
43
stdout_logfile=/var/log/supervisor/novnc-stdout.log
44
stderr_logfile=/var/log/supervisor/novnc-stderr.log
45
stdout_logfile_maxbytes=50MB
46
stderr_logfile_maxbytes=50MB
47
stdout_logfile_backups=5
48
stderr_logfile_backups=5
49
stdout_capture_maxbytes=50MB
50
stderr_capture_maxbytes=50MB
51
52
[program:g4f-cli]
53
priority=15
54
command=python -m g4f.cli api
55
directory=/app
56
stopasgroup=true
57
autostart=true
58
autorestart=true
59
60
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
61
redirect_stderr=true
62
stdout_logfile=/dev/stdout
63
stdout_logfile_maxbytes=0
64
65
[program:g4f-gui]
66
priority=15
67
command=python -m g4f.cli gui
68
directory=/app
69
stopasgroup=true
70
autostart=true
71
autorestart=true
72
73
;Logs (all Hub activity redirected to stdout so it can be seen through "docker logs"
74
redirect_stderr=true
75
stdout_logfile=/dev/stdout
76
stdout_logfile_maxbytes=0
@@ -601,7 +601,7 @@ observer.observe(message_input, { attributes: true });
601
601
602
602
let auto = document.createElement('option');
603
603
auto.value = '';
604
auto.text = 'Default Model';
604
auto.text = 'Model: Default';
605
605
select.appendChild(auto);
606
606
607
607
for (model of models) {
@@ -41,7 +41,10 @@ class Backend_Api:
41
41
return g4f._all_models
42
42
43
43
def providers(self):
44
return [provider.__name__ for provider in g4f.Provider.__providers__ if provider.working]
44
return [
45
provider.__name__ for provider in g4f.Provider.__providers__
46
if provider.working and provider is not g4f.Provider.RetryProvider
47
]
45
48
46
49
def _gen_title(self):
47
50
return {
@@ -275,6 +275,8 @@ class ModelUtils:
275
275
'gpt-3.5-turbo-16k' : gpt_35_turbo_16k,
276
276
'gpt-3.5-turbo-16k-0613' : gpt_35_turbo_16k_0613,
277
277
278
'gpt-3.5-long': gpt_35_long,
279
278
280
# gpt-4
279
281
'gpt-4' : gpt_4,
280
282
'gpt-4-0613' : gpt_4_0613,