summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g4f/Provider/Blackbox.py21
1 files changed, 17 insertions, 4 deletions
diff --git a/g4f/Provider/Blackbox.py b/g4f/Provider/Blackbox.py
index 317df1d4..6d8a467d 100644
--- a/g4f/Provider/Blackbox.py
+++ b/g4f/Provider/Blackbox.py
@@ -11,9 +11,9 @@ from typing import Optional, AsyncGenerator, Union
from aiohttp import ClientSession, ClientResponseError
-from ..typing import AsyncResult, Messages
+from ..typing import AsyncResult, Messages, ImageType
from .base_provider import AsyncGeneratorProvider, ProviderModelMixin
-from ..image import ImageResponse
+from ..image import ImageResponse, to_data_uri
class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
@@ -21,7 +21,6 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
url = "https://www.blackbox.ai"
api_endpoint = "https://www.blackbox.ai/api/chat"
working = True
- supports_gpt_4 = True
supports_stream = True
supports_system_message = True
supports_message_history = True
@@ -171,6 +170,8 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
model: str,
messages: Messages,
proxy: Optional[str] = None,
+ image: ImageType = None,
+ image_name: str = None,
websearch: bool = False,
**kwargs
) -> AsyncGenerator[Union[str, ImageResponse], None]:
@@ -181,12 +182,23 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
model (str): Model to use for generating responses.
messages (Messages): Message history.
proxy (Optional[str]): Proxy URL, if needed.
+ image (ImageType): Image data to be processed, if any.
+ image_name (str): Name of the image file, if an image is provided.
websearch (bool): Enables or disables web search mode.
**kwargs: Additional keyword arguments.
Yields:
Union[str, ImageResponse]: Segments of the generated response or ImageResponse objects.
"""
+
+ 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']
+
model = cls.get_model(model)
chat_id = cls.generate_random_string()
@@ -240,7 +252,8 @@ class Blackbox(AsyncGeneratorProvider, ProviderModelMixin):
{
"id": chat_id,
"content": formatted_prompt,
- "role": "user"
+ "role": "user",
+ "data": messages[-1].get('data')
}
],
"id": chat_id,