XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet
公开
关注 0 Fork 0 Star 1
返回提交历史

XFEstudio/gpt4free

gpt-4o (beta)

1399758a
abc <98614666+xtekky@users.noreply.github.com>
提交于

代码差异

4 个文件 +51 -14
Modified README.md +1 -1
@@ -301,7 +301,7 @@ set G4F_PROXY=http://host:port
301 301 While we wait for gpt-5, here is a list of new models that are at least better than gpt-3.5-turbo. **Some are better than gpt-4**. Expect this list to grow.
302 302
303 303 | Website | Provider | parameters | better than |
304 | ------ | ------- | ------ | ------ |
304 | ------ | ------- | ------ | ------ |
305 305 | [claude-3-opus](https://anthropic.com/) | `g4f.Provider.You` | ?B | gpt-4-0125-preview |
306 306 | [command-r+](https://txt.cohere.com/command-r-plus-microsoft-azure/) | `g4f.Provider.HuggingChat` | 104B | gpt-4-0314 |
307 307 | [llama-3-70b](https://meta.ai/) | `g4f.Provider.Llama` or `DeepInfra` | 70B | gpt-4-0314 |
Modified g4f/Provider/You.py +15 -5
@@ -1,5 +1,3 @@
1 from __future__ import annotations
2
3 1 import re
4 2 import json
5 3 import base64
@@ -24,6 +22,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
24 22 image_models = ["dall-e"]
25 23 models = [
26 24 default_model,
25 "gpt-4o",
27 26 "gpt-4",
28 27 "gpt-4-turbo",
29 28 "claude-instant",
@@ -42,7 +41,8 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
42 41 *image_models
43 42 ]
44 43 model_aliases = {
45 "claude-v2": "claude-2"
44 "claude-v2": "claude-2",
45 "gpt-4o": "gpt-4o",
46 46 }
47 47 _cookies = None
48 48 _cookies_used = 0
@@ -99,7 +99,9 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
99 99 "selectedChatMode": chat_mode,
100 100 }
101 101 if chat_mode == "custom":
102 # print(f"You model: {model}")
102 103 params["selectedAIModel"] = model.replace("-", "_")
104
103 105 async with (session.post if chat_mode == "default" else session.get)(
104 106 f"{cls.url}/api/streamingSearch",
105 107 data=data,
@@ -183,7 +185,15 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
183 185 @classmethod
184 186 async def create_cookies(cls, client: StreamSession) -> Cookies:
185 187 if not cls._telemetry_ids:
186 cls._telemetry_ids = await get_telemetry_ids()
188 try:
189 cls._telemetry_ids = await get_telemetry_ids()
190 except RuntimeError as e:
191 if str(e) == "Event loop is closed":
192 if debug.logging:
193 print("Event loop is closed error occurred in create_cookies.")
194 else:
195 raise
196
187 197 user_uuid = str(uuid.uuid4())
188 198 telemetry_id = cls._telemetry_ids.pop()
189 199 if debug.logging:
@@ -212,4 +222,4 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
212 222 'stytch_session_jwt': session["session_jwt"],
213 223 'ydc_stytch_session': session["session_token"],
214 224 'ydc_stytch_session_jwt': session["session_jwt"],
215 }
225 }
Modified g4f/Provider/you/har_file.py +26 -8
@@ -4,11 +4,14 @@ import json
4 4 import os
5 5 import os.path
6 6 import random
7 import logging
7 8
8 9 from ...requests import StreamSession, raise_for_status
9 10 from ...errors import MissingRequirementsError
10 11 from ... import debug
11 12
13 logging.basicConfig(level=logging.ERROR)
14
12 15 class NoValidHarFileError(Exception):
13 16 ...
14 17
@@ -62,10 +65,16 @@ def parseHAREntry(entry) -> arkReq:
62 65 return tmpArk
63 66
64 67 async def sendRequest(tmpArk: arkReq, proxy: str = None):
65 async with StreamSession(headers=tmpArk.arkHeaders, cookies=tmpArk.arkCookies, proxy=proxy) as session:
66 async with session.post(tmpArk.arkURL, data=tmpArk.arkBody) as response:
67 await raise_for_status(response)
68 return await response.text()
68 try:
69 async with StreamSession(headers=tmpArk.arkHeaders, cookies=tmpArk.arkCookies, proxy=proxy) as session:
70 async with session.post(tmpArk.arkURL, data=tmpArk.arkBody) as response:
71 await raise_for_status(response)
72 return await response.text()
73 except RuntimeError as e:
74 if str(e) == "Event loop is closed":
75 print("Event loop is closed error occurred in sendRequest.")
76 else:
77 raise
69 78
70 79 async def create_telemetry_id(proxy: str = None):
71 80 global chatArks
@@ -78,9 +87,9 @@ async def get_telemetry_ids(proxy: str = None) -> list:
78 87 return [await create_telemetry_id(proxy)]
79 88 except NoValidHarFileError as e:
80 89 if debug.logging:
81 print(e)
90 logging.error(e)
82 91 if debug.logging:
83 print('Getting telemetry_id for you.com with nodriver')
92 logging.error('Getting telemetry_id for you.com with nodriver')
84 93 try:
85 94 from nodriver import start
86 95 except ImportError:
@@ -100,6 +109,15 @@ async def get_telemetry_ids(proxy: str = None) -> list:
100 109 )
101 110
102 111 return [await get_telemetry_id()]
112
103 113 finally:
104 if page is not None:
105 await page.close()
114 try:
115 if page is not None:
116 await page.close()
117
118 if browser is not None:
119 await browser.close()
120
121 except Exception as e:
122 if debug.logging:
123 logging.error(e)
Modified g4f/models.py +9 -0
@@ -100,6 +100,14 @@ gpt_4 = Model(
100 100 ])
101 101 )
102 102
103 gpt_4o = Model(
104 name = 'gpt-4o',
105 base_provider = 'openai',
106 best_provider = RetryProvider([
107 You
108 ])
109 )
110
103 111 gpt_4_turbo = Model(
104 112 name = 'gpt-4-turbo',
105 113 base_provider = 'openai',
@@ -330,6 +338,7 @@ class ModelUtils:
330 338 'gpt-3.5-long': gpt_35_long,
331 339
332 340 # gpt-4
341 'gpt-4o' : gpt_4o,
333 342 'gpt-4' : gpt_4,
334 343 'gpt-4-0613' : gpt_4_0613,
335 344 'gpt-4-32k' : gpt_4_32k,