返回提交历史
Modified
g4f/Provider/Blackbox.py
+49
-45
XFEstudio/gpt4free
feat(g4f/Provider/Blackbox.py): enhance vision image handling
9c3190d1
代码差异
1 个文件
+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':