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

XFEstudio/gpt4free

feat(g4f/Provider/Blackbox.py): enhance vision image handling

9c3190d1
kqlio67 <kqlio67@users.noreply.github.com>
提交于

代码差异

1 个文件 +49 -45
Modified g4f/Provider/Blackbox.py +49 -45
@@ -17,23 +17,23 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
17 17 supports_stream = True
18 18 supports_system_message = True
19 19 supports_message_history = True
20
20
21 21 default_model = 'blackboxai'
22 22 models = [
23 23 default_model,
24 24 'blackboxai-pro',
25
25
26 26 "llama-3.1-8b",
27 27 'llama-3.1-70b',
28 28 'llama-3.1-405b',
29
29
30 30 'gpt-4o',
31
31
32 32 'gemini-pro',
33 33 'gemini-1.5-flash',
34
34
35 35 'claude-sonnet-3.5',
36
36
37 37 'PythonAgent',
38 38 'JavaAgent',
39 39 'JavaScriptAgent',
@@ -89,7 +89,7 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
89 89
90 90 'PythonAgent': '@Python Agent',
91 91 'JavaAgent': '@Java Agent',
92 'JavaScriptAgent': '@Java Agent',
92 'JavaScriptAgent': '@JavaScript Agent',
93 93 'HTMLAgent': '@HTML Agent',
94 94 'GoogleCloudAgent': '@Google Cloud Agent',
95 95 'AndroidDeveloper': '@Android Developer',
@@ -163,46 +163,50 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
163 163 if not messages[0]['content'].startswith(prefix):
164 164 messages[0]['content'] = f"{prefix} {messages[0]['content']}"
165 165
166 async with ClientSession(headers=headers) as session:
167 if image is not None:
168 messages[-1]["data"] = {
169 "fileText": image_name,
170 "imageBase64": to_data_uri(image)
171 }
172
173 random_id = ''.join(random.choices(string.ascii_letters + string.digits, k=7))
174
175 data = {
176 "messages": messages,
177 "id": random_id,
178 "previewToken": None,
179 "userId": None,
180 "codeModelMode": True,
181 "agentMode": {},
182 "trendingAgentMode": {},
183 "isMicMode": False,
184 "userSystemPrompt": None,
185 "maxTokens": 1024,
186 "playgroundTopP": 0.9,
187 "playgroundTemperature": 0.5,
188 "isChromeExt": False,
189 "githubToken": None,
190 "clickedAnswer2": False,
191 "clickedAnswer3": False,
192 "clickedForceWebSearch": False,
193 "visitFromDelta": False,
194 "mobileClient": False,
195 "userSelectedModel": None,
196 "webSearchMode": webSearchMode,
166 random_id = ''.join(random.choices(string.ascii_letters + string.digits, k=7))
167 messages[-1]['id'] = random_id
168 messages[-1]['role'] = 'user'
169
170 if image is not None:
171 messages[-1]['data'] = {
172 'fileText': '',
173 'imageBase64': to_data_uri(image),
174 'title': image_name
197 175 }
176 messages[-1]['content'] = 'FILE:BB\n$#$\n\n$#$\n' + messages[-1]['content']
177
178 data = {
179 "messages": messages,
180 "id": random_id,
181 "previewToken": None,
182 "userId": None,
183 "codeModelMode": True,
184 "agentMode": {},
185 "trendingAgentMode": {},
186 "isMicMode": False,
187 "userSystemPrompt": None,
188 "maxTokens": 1024,
189 "playgroundTopP": 0.9,
190 "playgroundTemperature": 0.5,
191 "isChromeExt": False,
192 "githubToken": None,
193 "clickedAnswer2": False,
194 "clickedAnswer3": False,
195 "clickedForceWebSearch": False,
196 "visitFromDelta": False,
197 "mobileClient": False,
198 "userSelectedModel": None,
199 "webSearchMode": webSearchMode,
200 }
198 201
199 if model in cls.agentMode:
200 data["agentMode"] = cls.agentMode[model]
201 elif model in cls.trendingAgentMode:
202 data["trendingAgentMode"] = cls.trendingAgentMode[model]
203 elif model in cls.userSelectedModel:
204 data["userSelectedModel"] = cls.userSelectedModel[model]
205
202 if model in cls.agentMode:
203 data["agentMode"] = cls.agentMode[model]
204 elif model in cls.trendingAgentMode:
205 data["trendingAgentMode"] = cls.trendingAgentMode[model]
206 elif model in cls.userSelectedModel:
207 data["userSelectedModel"] = cls.userSelectedModel[model]
208
209 async with ClientSession(headers=headers) as session:
206 210 async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response:
207 211 response.raise_for_status()
208 212 if model == 'ImageGeneration':