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

XFEstudio/gpt4free

Add zerogpu_uuid to demo

9994bb67
hlohaus <983577+hlohaus@users.noreply.github.com>
提交于

代码差异

7 个文件 +37 -13
Modified g4f/Provider/CablyAI.py +1 -2
@@ -26,7 +26,6 @@ class CablyAI(OpenaiTemplate):
26 26 ] + reasoning_models
27 27
28 28 model_aliases = {
29 "searchgpt": "searchgpt (free)",
30 29 "gpt-4o-mini": "searchgpt",
31 30 "llama-3.1-8b": "llama-3.1-8b-instruct",
32 31 "deepseek-r1": "deepseek-r1-uncensored",
@@ -43,6 +42,6 @@ class CablyAI(OpenaiTemplate):
43 42 model = super().get_model(model, **kwargs)
44 43 return model.split(" (free)")[0]
45 44 except ModelNotSupportedError:
46 if f"f{model} (free)" in cls.models:
45 if f"{model} (free)" in cls.models:
47 46 return model
48 47 raise
Modified g4f/Provider/hf_space/G4F.py +15 -3
@@ -34,10 +34,21 @@ class G4F(Janus_Pro_7B):
34 34 height: int = 1024,
35 35 seed: int = None,
36 36 cookies: dict = None,
37 zerogpu_token: str = None,
38 zerogpu_uuid: str = None,
37 39 **kwargs
38 40 ) -> AsyncResult:
39 41 if cls.default_model not in model:
40 async for chunk in super().create_async_generator(model, messages, prompt=prompt, seed=seed, cookies=cookies, **kwargs):
42 async for chunk in super().create_async_generator(
43 model, messages,
44 proxy=proxy,
45 prompt=prompt,
46 seed=seed,
47 cookies=cookies,
48 zerogpu_token=zerogpu_token,
49 zerogpu_uuid=zerogpu_uuid,
50 **kwargs
51 ):
41 52 yield chunk
42 53 return
43 54
@@ -64,8 +75,9 @@ class G4F(Janus_Pro_7B):
64 75 "trigger_id": 10
65 76 }
66 77 async with ClientSession() as session:
67 yield Reasoning(status="Acquiring GPU Token")
68 zerogpu_uuid, zerogpu_token = await get_zerogpu_token(cls.space, session, JsonConversation(), cookies)
78 if zerogpu_token is None:
79 yield Reasoning(status="Acquiring GPU Token")
80 zerogpu_uuid, zerogpu_token = await get_zerogpu_token(cls.space, session, JsonConversation(), cookies)
69 81 headers = {
70 82 "x-zerogpu-token": zerogpu_token,
71 83 "x-zerogpu-uuid": zerogpu_uuid,
Modified g4f/Provider/hf_space/Janus_Pro_7B.py +4 -1
@@ -70,6 +70,8 @@ class Janus_Pro_7B(AsyncGeneratorProvider, ProviderModelMixin):
70 70 prompt: str = None,
71 71 proxy: str = None,
72 72 cookies: Cookies = None,
73 zerogpu_token: str = None,
74 zerogpu_uuid: str = None,
73 75 return_conversation: bool = False,
74 76 conversation: JsonConversation = None,
75 77 seed: int = None,
@@ -90,7 +92,8 @@ class Janus_Pro_7B(AsyncGeneratorProvider, ProviderModelMixin):
90 92 session_hash = generate_session_hash() if conversation is None else getattr(conversation, "session_hash")
91 93 async with StreamSession(proxy=proxy, impersonate="chrome") as session:
92 94 session_hash = generate_session_hash() if conversation is None else getattr(conversation, "session_hash")
93 zerogpu_uuid, zerogpu_token = await get_zerogpu_token(cls.space, session, conversation, cookies)
95 if zerogpu_token is None:
96 zerogpu_uuid, zerogpu_token = await get_zerogpu_token(cls.space, session, conversation, cookies)
94 97 if conversation is None or not hasattr(conversation, "session_hash"):
95 98 conversation = JsonConversation(session_hash=session_hash, zerogpu_token=zerogpu_token, zerogpu_uuid=zerogpu_uuid)
96 99 conversation.zerogpu_token = zerogpu_token
Modified g4f/Provider/template/OpenaiTemplate.py +2 -1
@@ -85,8 +85,9 @@ class OpenaiTemplate(AsyncGeneratorProvider, ProviderModelMixin, RaiseErrorMixin
85 85
86 86 # Proxy for image generation feature
87 87 if model and model in cls.image_models:
88 prompt = format_image_prompt(messages, prompt)
88 89 data = {
89 "prompt": format_image_prompt(messages, prompt),
90 "prompt": prompt,
90 91 "model": model,
91 92 }
92 93 async with session.post(f"{api_base.rstrip('/')}/images/generations", json=data, ssl=cls.ssl) as response:
Modified g4f/gui/client/demo.html +12 -0
@@ -198,6 +198,15 @@
198 198 <a href="https://huggingface.co/settings/tokens" target="_blank">Get Access Token</a>
199 199 </p>
200 200 </form>
201 <script>
202 (async () => {
203 let chat_url = new URL(window.location.href)
204 let chat_params = new URLSearchParams(chat_url.search);
205 if (chat_params.get("__sign")) {
206 localStorage.setItem("zerogpu_token", chat_params.get("__sign"));
207 }
208 })();
209 </script>
201 210 <script type="module">
202 211 import * as hub from "@huggingface/hub";
203 212
@@ -205,6 +214,9 @@
205 214 const input = document.querySelector('form input[name="token"]');
206 215 async function check_access_token() {
207 216 const accessToken = input.value || localStorage.getItem("HuggingFace-api_key");
217 if (!accessToken) {
218 return;
219 }
208 220 let user;
209 221 try {
210 222 user = await hub.whoAmI({accessToken: accessToken});
Modified g4f/gui/client/static/js/chat.v1.js +1 -4
@@ -1056,6 +1056,7 @@ const ask_gpt = async (message_id, message_index = -1, regenerate = false, provi
1056 1056 api_key: api_key,
1057 1057 api_base: api_base,
1058 1058 ignored: ignored,
1059 zerogpu_token: localStorage.getItem("zerogpu_token")
1059 1060 }, files, message_id, scroll, finish_message);
1060 1061 } catch (e) {
1061 1062 console.error(e);
@@ -1898,10 +1899,6 @@ async function on_load() {
1898 1899 load_conversation(window.conversation_id);
1899 1900 } else {
1900 1901 chatPrompt.value = document.getElementById("systemPrompt")?.value || "";
1901 example = document.getElementById("systemPrompt")?.dataset.example || ""
1902 if (chatPrompt.value == example) {
1903 messageInput.value = "";
1904 }
1905 1902 let chat_url = new URL(window.location.href)
1906 1903 let chat_params = new URLSearchParams(chat_url.search);
1907 1904 if (chat_params.get("prompt")) {
Modified g4f/tools/files.py +2 -2
@@ -431,7 +431,7 @@ async def download_urls(
431 431 connector=get_connector(proxy=proxy),
432 432 timeout=ClientTimeout(timeout)
433 433 ) as session:
434 async def download_url(url: str) -> str:
434 async def download_url(url: str, max_depth: int) -> str:
435 435 try:
436 436 async with session.get(url) as response:
437 437 response.raise_for_status()
@@ -457,7 +457,7 @@ async def download_urls(
457 457 except (ClientError, asyncio.TimeoutError) as e:
458 458 debug.log(f"Download failed: {e.__class__.__name__}: {e}")
459 459 return None
460 for filename in await asyncio.gather(*[download_url(url) for url in urls]):
460 for filename in await asyncio.gather(*[download_url(url, max_depth) for url in urls]):
461 461 if filename:
462 462 yield filename
463 463 else: