返回提交历史
Modified
g4f/Provider/OpenaiChat.py
+11
-8
Modified
g4f/Provider/helper.py
+5
-18
XFEstudio/gpt4free
Use custom user dir
136770e0
代码差异
2 个文件
+16
-26
@@ -1,7 +1,6 @@
1
1
from __future__ import annotations
2
2
3
import uuid
4
import json
3
import uuid, json, time
5
4
6
5
from .base_provider import AsyncGeneratorProvider
7
6
from .helper import get_browser, get_cookies, format_prompt
@@ -56,8 +55,13 @@ class OpenaiChat(AsyncGeneratorProvider):
56
55
line = line[6:]
57
56
if line == b"[DONE]":
58
57
break
59
line = json.loads(line)
60
if "message" in line and not line["message"]["end_turn"]:
58
try:
59
line = json.loads(line)
60
except:
61
continue
62
if "message" not in line or "message_type" not in line["message"]["metadata"]:
63
continue
64
if line["message"]["metadata"]["message_type"] == "next":
61
65
new_message = line["message"]["content"]["parts"][0]
62
66
yield new_message[len(last_message):]
63
67
last_message = new_message
@@ -68,11 +72,9 @@ class OpenaiChat(AsyncGeneratorProvider):
68
72
from selenium.webdriver.common.by import By
69
73
from selenium.webdriver.support.ui import WebDriverWait
70
74
from selenium.webdriver.support import expected_conditions as EC
71
except ImportError:
72
return
73
75
74
driver = get_browser()
75
if not driver:
76
driver = get_browser()
77
except ImportError:
76
78
return
77
79
78
80
driver.get(f"{cls.url}/")
@@ -83,6 +85,7 @@ class OpenaiChat(AsyncGeneratorProvider):
83
85
javascript = "return (await (await fetch('/api/auth/session')).json())['accessToken']"
84
86
return driver.execute_script(javascript)
85
87
finally:
88
time.sleep(1)
86
89
driver.quit()
87
90
88
91
@classmethod
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
3
3
import asyncio, sys
4
4
from asyncio import AbstractEventLoop
5
5
from os import path
6
6
import browser_cookie3
7
7
8
8
# Change event loop policy on windows
@@ -60,24 +60,11 @@ def format_prompt(messages: list[dict[str, str]], add_special_tokens=False):
60
60
61
61
62
62
def get_browser(user_data_dir: str = None):
63
try:
64
from undetected_chromedriver import Chrome
65
except ImportError:
66
return None
63
from undetected_chromedriver import Chrome
64
from platformdirs import user_config_dir
67
65
68
def get_user_data_dir():
69
dirs = [
70
'~/.config/google-chrome/Default',
71
'~/.var/app/com.google.Chrome/config/google-chrome/Default',
72
'%LOCALAPPDATA%\\Google\\Chrome\\User Data\\Default',
73
'~/Library/Application Support/Google/Chrome/Default',
74
]
75
from os import path
76
for dir in dirs:
77
dir = path.expandvars(dir)
78
if path.exists(dir):
79
return dir
80
66
if not user_data_dir:
81
user_data_dir = get_user_data_dir()
67
user_data_dir = user_config_dir("g4f")
68
user_data_dir = path.join(user_data_dir, "Default")
82
69
83
70
return Chrome(user_data_dir=user_data_dir)