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

XFEstudio/gpt4free

Hide api_key fields from disabeld providers

68c7a92e
Heiner Lohaus <hlohaus@users.noreply.github.com>
提交于

代码差异

6 个文件 +38 -34
Modified g4f/Provider/Blackbox2.py +10 -11
@@ -6,7 +6,7 @@ import re
6 6 import json
7 7 from pathlib import Path
8 8 from aiohttp import ClientSession
9 from typing import AsyncGenerator
9 from typing import AsyncIterator
10 10
11 11 from ..typing import AsyncResult, Messages
12 12 from ..image import ImageResponse
@@ -21,12 +21,12 @@ class Blackbox2(AsyncGeneratorProvider, ProviderModelMixin):
21 21 "llama-3.1-70b": "https://www.blackbox.ai/api/improve-prompt",
22 22 "flux": "https://www.blackbox.ai/api/image-generator"
23 23 }
24
24
25 25 working = True
26 26 supports_system_message = True
27 27 supports_message_history = True
28 28 supports_stream = False
29
29
30 30 default_model = 'llama-3.1-70b'
31 31 chat_models = ['llama-3.1-70b']
32 32 image_models = ['flux']
@@ -97,15 +97,14 @@ class Blackbox2(AsyncGeneratorProvider, ProviderModelMixin):
97 97 messages: Messages,
98 98 prompt: str = None,
99 99 proxy: str = None,
100 prompt: str = None,
101 100 max_retries: int = 3,
102 101 delay: int = 1,
103 102 max_tokens: int = None,
104 103 **kwargs
105 ) -> AsyncGenerator[str, None]:
104 ) -> AsyncResult:
106 105 if not model:
107 106 model = cls.default_model
108
107
109 108 if model in cls.chat_models:
110 109 async for result in cls._generate_text(model, messages, proxy, max_retries, delay, max_tokens):
111 110 yield result
@@ -125,13 +124,13 @@ class Blackbox2(AsyncGeneratorProvider, ProviderModelMixin):
125 124 max_retries: int = 3,
126 125 delay: int = 1,
127 126 max_tokens: int = None,
128 ) -> AsyncGenerator[str, None]:
127 ) -> AsyncIterator[str]:
129 128 headers = cls._get_headers()
130 129
131 130 async with ClientSession(headers=headers) as session:
132 131 license_key = await cls._get_license_key(session)
133 132 api_endpoint = cls.api_endpoints[model]
134
133
135 134 data = {
136 135 "messages": messages,
137 136 "max_tokens": max_tokens,
@@ -162,7 +161,7 @@ class Blackbox2(AsyncGeneratorProvider, ProviderModelMixin):
162 161 model: str,
163 162 prompt: str,
164 163 proxy: str = None
165 ) -> AsyncGenerator[ImageResponse, None]:
164 ) -> AsyncIterator[ImageResponse]:
166 165 headers = cls._get_headers()
167 166 api_endpoint = cls.api_endpoints[model]
168 167
@@ -170,11 +169,11 @@ class Blackbox2(AsyncGeneratorProvider, ProviderModelMixin):
170 169 data = {
171 170 "query": prompt
172 171 }
173
172
174 173 async with session.post(api_endpoint, headers=headers, json=data, proxy=proxy) as response:
175 174 response.raise_for_status()
176 175 response_data = await response.json()
177
176
178 177 if 'markdown' in response_data:
179 178 image_url = response_data['markdown'].split('(')[1].split(')')[0]
180 179 yield ImageResponse(images=image_url, alt=prompt)
Modified g4f/Provider/needs_auth/Cerebras.py +10 -8
@@ -16,6 +16,7 @@ class Cerebras(OpenaiAPI):
16 16 models = [
17 17 "llama3.1-70b",
18 18 "llama3.1-8b",
19 "llama-3.3-70b"
19 20 ]
20 21 model_aliases = {"llama-3.1-70b": "llama3.1-70b", "llama-3.1-8b": "llama3.1-8b"}
21 22
@@ -29,14 +30,15 @@ class Cerebras(OpenaiAPI):
29 30 cookies: Cookies = None,
30 31 **kwargs
31 32 ) -> AsyncResult:
32 if api_key is None and cookies is None:
33 cookies = get_cookies(".cerebras.ai")
34 async with ClientSession(cookies=cookies) as session:
35 async with session.get("https://inference.cerebras.ai/api/auth/session") as response:
36 raise_for_status(response)
37 data = await response.json()
38 if data:
39 api_key = data.get("user", {}).get("demoApiKey")
33 if api_key is None:
34 if cookies is None:
35 cookies = get_cookies(".cerebras.ai")
36 async with ClientSession(cookies=cookies) as session:
37 async with session.get("https://inference.cerebras.ai/api/auth/session") as response:
38 await raise_for_status(response)
39 data = await response.json()
40 if data:
41 api_key = data.get("user", {}).get("demoApiKey")
40 42 async for chunk in super().create_async_generator(
41 43 model, messages,
42 44 api_base=api_base,
Modified g4f/Provider/needs_auth/OpenaiChat.py +1 -1
@@ -504,7 +504,7 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
504 504 await cls.login()
505 505 async with StreamSession(
506 506 impersonate="chrome",
507 timeout=900
507 timeout=0
508 508 ) as session:
509 509 async with session.get(
510 510 f"{cls.url}/backend-api/synthesize",
Modified g4f/gui/client/index.html +13 -13
@@ -150,47 +150,47 @@
150 150 <label for="recognition-language" class="label" title="">Speech recognition language</label>
151 151 <input type="text" id="recognition-language" value="" placeholder="navigator.language"/>
152 152 </div>
153 <div class="field box">
153 <div class="field box hidden">
154 154 <label for="BingCreateImages-api_key" class="label" title="">Microsoft Designer in Bing:</label>
155 155 <textarea id="BingCreateImages-api_key" name="BingCreateImages[api_key]" placeholder="&quot;_U&quot; cookie"></textarea>
156 156 </div>
157 <div class="field box">
157 <div class="field box hidden">
158 158 <label for="Cerebras-api_key" class="label" title="">Cerebras Inference:</label>
159 159 <textarea id="Cerebras-api_key" name="Cerebras[api_key]" placeholder="api_key"></textarea>
160 160 </div>
161 <div class="field box">
161 <div class="field box hidden">
162 162 <label for="DeepInfra-api_key" class="label" title="">DeepInfra:</label>
163 163 <textarea id="DeepInfra-api_key" name="DeepInfra[api_key]" class="DeepInfraImage-api_key" placeholder="api_key"></textarea>
164 164 </div>
165 <div class="field box">
165 <div class="field box hidden">
166 166 <label for="GeminiPro-api_key" class="label" title="">Gemini API:</label>
167 167 <textarea id="GeminiPro-api_key" name="GeminiPro[api_key]" placeholder="api_key"></textarea>
168 168 </div>
169 <div class="field box">
169 <div class="field box hidden">
170 170 <label for="Groq-api_key" class="label" title="">Groq:</label>
171 171 <textarea id="Groq-api_key" name="Groq[api_key]" placeholder="api_key"></textarea>
172 172 </div>
173 <div class="field box">
173 <div class="field box hidden">
174 174 <label for="HuggingFace-api_key" class="label" title="">HuggingFace:</label>
175 175 <textarea id="HuggingFace-api_key" name="HuggingFace[api_key]" class="HuggingFaceAPI-api_key" placeholder="api_key"></textarea>
176 176 </div>
177 <div class="field box">
178 <label for="Openai-api_key" class="label" title="">OpenAI API:</label>
179 <textarea id="Openai-api_key" name="Openai[api_key]" placeholder="api_key"></textarea>
177 <div class="field box hidden">
178 <label for="OpenaiAPI-api_key" class="label" title="">OpenAI API:</label>
179 <textarea id="OpenaiAPI-api_key" name="OpenaiAPI[api_key]" placeholder="api_key"></textarea>
180 180 </div>
181 <div class="field box">
181 <div class="field box hidden">
182 182 <label for="OpenRouter-api_key" class="label" title="">OpenRouter:</label>
183 183 <textarea id="OpenRouter-api_key" name="OpenRouter[api_key]" placeholder="api_key"></textarea>
184 184 </div>
185 <div class="field box">
185 <div class="field box hidden">
186 186 <label for="PerplexityApi-api_key" class="label" title="">Perplexity API:</label>
187 187 <textarea id="PerplexityApi-api_key" name="PerplexityApi[api_key]" placeholder="api_key"></textarea>
188 188 </div>
189 <div class="field box">
189 <div class="field box hidden">
190 190 <label for="Replicate-api_key" class="label" title="">Replicate:</label>
191 191 <textarea id="Replicate-api_key" name="Replicate[api_key]" class="ReplicateImage-api_key" placeholder="api_key"></textarea>
192 192 </div>
193 <div class="field box">
193 <div class="field box hidden">
194 194 <label for="xAI-api_key" class="label" title="">xAI:</label>
195 195 <textarea id="xAI-api_key" name="xAI[api_key]" placeholder="api_key"></textarea>
196 196 </div>
Modified g4f/gui/client/static/css/style.css +2 -1
@@ -1022,7 +1022,8 @@ ul {
1022 1022 }
1023 1023
1024 1024 .settings h3 {
1025 padding-left: 50px;
1025 padding-left: 54px;
1026 padding-top: 18px;
1026 1027 }
1027 1028
1028 1029 .buttons {
Modified g4f/gui/client/static/js/chat.v1.js +2 -0
@@ -1293,6 +1293,7 @@ const load_provider_option = (input, provider_name) => {
1293 1293 providerSelect.querySelectorAll(`option[data-parent="${provider_name}"]`).forEach(
1294 1294 (el) => el.removeAttribute("disabled")
1295 1295 );
1296 settings.querySelector(`.field:has(#${provider_name}-api_key)`)?.classList.remove("hidden");
1296 1297 } else {
1297 1298 modelSelect.querySelectorAll(`option[data-providers*="${provider_name}"]`).forEach(
1298 1299 (el) => {
@@ -1307,6 +1308,7 @@ const load_provider_option = (input, provider_name) => {
1307 1308 providerSelect.querySelectorAll(`option[data-parent="${provider_name}"]`).forEach(
1308 1309 (el) => el.setAttribute("disabled", "disabled")
1309 1310 );
1311 settings.querySelector(`.field:has(#${provider_name}-api_key)`)?.classList.add("hidden");
1310 1312 }
1311 1313 };
1312 1314