From 9c3190d11c1e146df90bfe621188b269b7470814 Mon Sep 17 00:00:00 2001 From: kqlio67 Date: Sat, 12 Oct 2024 22:56:06 +0300 Subject: [PATCH] feat(g4f/Provider/Blackbox.py): enhance vision image handling --- g4f/Provider/Blackbox.py | 92 +++++++++++++++++++++------------------- 1 file changed, 48 insertions(+), 44 deletions(-) diff --git a/g4f/Provider/Blackbox.py b/g4f/Provider/Blackbox.py index 5989145b..3054bcd6 100644 --- a/g4f/Provider/Blackbox.py +++ b/g4f/Provider/Blackbox.py @@ -17,23 +17,23 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin): supports_stream = True supports_system_message = True supports_message_history = True - + default_model = 'blackboxai' models = [ default_model, 'blackboxai-pro', - + "llama-3.1-8b", 'llama-3.1-70b', 'llama-3.1-405b', - + 'gpt-4o', - + 'gemini-pro', 'gemini-1.5-flash', - + 'claude-sonnet-3.5', - + 'PythonAgent', 'JavaAgent', 'JavaScriptAgent', @@ -89,7 +89,7 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin): 'PythonAgent': '@Python Agent', 'JavaAgent': '@Java Agent', - 'JavaScriptAgent': '@Java Agent', + 'JavaScriptAgent': '@JavaScript Agent', 'HTMLAgent': '@HTML Agent', 'GoogleCloudAgent': '@Google Cloud Agent', 'AndroidDeveloper': '@Android Developer', @@ -163,46 +163,50 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin): if not messages[0]['content'].startswith(prefix): messages[0]['content'] = f"{prefix} {messages[0]['content']}" - async with ClientSession(headers=headers) as session: - if image is not None: - messages[-1]["data"] = { - "fileText": image_name, - "imageBase64": to_data_uri(image) - } - - random_id = ''.join(random.choices(string.ascii_letters + string.digits, k=7)) + random_id = ''.join(random.choices(string.ascii_letters + string.digits, k=7)) + messages[-1]['id'] = random_id + messages[-1]['role'] = 'user' - data = { - "messages": messages, - "id": random_id, - "previewToken": None, - "userId": None, - "codeModelMode": True, - "agentMode": {}, - "trendingAgentMode": {}, - "isMicMode": False, - "userSystemPrompt": None, - "maxTokens": 1024, - "playgroundTopP": 0.9, - "playgroundTemperature": 0.5, - "isChromeExt": False, - "githubToken": None, - "clickedAnswer2": False, - "clickedAnswer3": False, - "clickedForceWebSearch": False, - "visitFromDelta": False, - "mobileClient": False, - "userSelectedModel": None, - "webSearchMode": webSearchMode, + if image is not None: + messages[-1]['data'] = { + 'fileText': '', + 'imageBase64': to_data_uri(image), + 'title': image_name } + messages[-1]['content'] = 'FILE:BB\n$#$\n\n$#$\n' + messages[-1]['content'] + + data = { + "messages": messages, + "id": random_id, + "previewToken": None, + "userId": None, + "codeModelMode": True, + "agentMode": {}, + "trendingAgentMode": {}, + "isMicMode": False, + "userSystemPrompt": None, + "maxTokens": 1024, + "playgroundTopP": 0.9, + "playgroundTemperature": 0.5, + "isChromeExt": False, + "githubToken": None, + "clickedAnswer2": False, + "clickedAnswer3": False, + "clickedForceWebSearch": False, + "visitFromDelta": False, + "mobileClient": False, + "userSelectedModel": None, + "webSearchMode": webSearchMode, + } - if model in cls.agentMode: - data["agentMode"] = cls.agentMode[model] - elif model in cls.trendingAgentMode: - data["trendingAgentMode"] = cls.trendingAgentMode[model] - elif model in cls.userSelectedModel: - data["userSelectedModel"] = cls.userSelectedModel[model] - + if model in cls.agentMode: + data["agentMode"] = cls.agentMode[model] + elif model in cls.trendingAgentMode: + data["trendingAgentMode"] = cls.trendingAgentMode[model] + elif model in cls.userSelectedModel: + data["userSelectedModel"] = cls.userSelectedModel[model] + + async with ClientSession(headers=headers) as session: async with session.post(cls.api_endpoint, json=data, proxy=proxy) as response: response.raise_for_status() if model == 'ImageGeneration':