返回提交历史
Modified
docker/Dockerfile
+1
-1
Modified
g4f/gui/client/static/css/style.css
+6
-2
Modified
g4f/gui/client/static/js/chat.v1.js
+4
-3
Modified
requirements.txt
+3
-2
Modified
setup.py
+9
-10
XFEstudio/gpt4free
Add files requirements
13b6fdef
代码差异
5 个文件
+23
-18
@@ -78,7 +78,7 @@ RUN pip install --break-system-packages --upgrade pip \
78
78
&& pip install --break-system-packages \
79
79
undetected-chromedriver selenium-wire \
80
80
&& pip uninstall -y --break-system-packages \
81
pywebview plyer
81
pywebview
82
82
83
83
# Copy the entire package into the container.
84
84
ADD --chown=$G4F_USER:$G4F_USER g4f $G4F_DIR/g4f
@@ -1126,8 +1126,12 @@ ul {
1126
1126
display: flex;
1127
1127
}
1128
1128
1129
#systemPrompt {
1130
padding-left: 48px;
1129
#systemPrompt::placeholder {
1130
text-align: center;
1131
}
1132
1133
.settings h3 {
1134
text-align: center;
1131
1135
}
1132
1136
}
1133
1137
@@ -734,10 +734,11 @@ const ask_gpt = async (message_id, message_index = -1, regenerate = false, provi
734
734
messages = prepare_messages(conversation.items, message_index, action=="continue");
735
735
message_storage[message_id] = "";
736
736
stop_generating.classList.remove("stop_generating-hidden");
737
const scroll = true;
738
if (message_index > 0 && message_index + 1 < messages.length) {
737
let scroll = true;
738
if (message_index > 0 && parseInt(message_index, 10) + 1 < conversation.items.length) {
739
739
scroll = false;
740
740
}
741
741
742
if (scroll) {
742
743
await lazy_scroll_to_bottom();
743
744
}
@@ -1157,7 +1158,7 @@ const load_conversation = async (conversation_id, scroll=true) => {
1157
1158
highlight(message_box);
1158
1159
regenerate_button.classList.remove("regenerate-hidden");
1159
1160
1160
if (document.querySelector("#input-count input").checked) {
1161
if (scroll && document.querySelector("#input-count input").checked) {
1161
1162
message_box.scrollTo({ top: message_box.scrollHeight, behavior: "smooth" });
1162
1163
1163
1164
setTimeout(() => {
@@ -16,7 +16,8 @@ brotli
16
16
beautifulsoup4
17
17
aiohttp_socks
18
18
pywebview
19
plyer
20
19
cryptography
21
20
nodriver
22
python-multipart
21
python-multipart
22
pypdf2
23
docx
@@ -25,7 +25,7 @@ EXTRA_REQUIRE = {
25
25
"curl_cffi>=0.6.2",
26
26
"certifi",
27
27
"browser_cookie3", # get_cookies
28
"duckduckgo-search>=5.0" ,# internet.search
28
"duckduckgo-search>=5.0", # internet.search
29
29
"beautifulsoup4", # internet.search and bing.create_images
30
30
"platformdirs",
31
31
"aiohttp_socks", # proxy
@@ -36,6 +36,11 @@ EXTRA_REQUIRE = {
36
36
"uvicorn", # api
37
37
"nodriver",
38
38
"python-multipart",
39
"pypdf2", # files
40
"docx",
41
"odfpy",
42
"ebooklib",
43
"openpyxl",
39
44
],
40
45
'slim': [
41
46
"curl_cffi>=0.6.2",
@@ -49,22 +54,17 @@ EXTRA_REQUIRE = {
49
54
"fastapi", # api
50
55
"uvicorn", # api
51
56
"python-multipart",
57
"pypdf2", # files
58
"docx",
52
59
],
53
60
"image": [
54
61
"pillow",
55
62
"cairosvg",
56
63
"beautifulsoup4"
57
64
],
58
"webdriver": [
59
"platformdirs",
60
"undetected-chromedriver>=3.5.5",
61
"setuptools",
62
"selenium-wire"
63
],
64
65
"webview": [
65
"webview",
66
"pywebview",
66
67
"platformdirs",
67
"plyer",
68
68
"cryptography"
69
69
],
70
70
"api": [
@@ -87,7 +87,6 @@ EXTRA_REQUIRE = {
87
87
],
88
88
"files": [
89
89
"spacy",
90
"filesplit",
91
90
"beautifulsoup4",
92
91
"pypdf2",
93
92
"docx",