Niansuh commited on
Commit
fcb5830
·
verified ·
1 Parent(s): dde279d

Update api/utils.py

Browse files
Files changed (1) hide show
  1. api/utils.py +25 -9
api/utils.py CHANGED
@@ -3,7 +3,6 @@ import json
3
  import uuid
4
  import asyncio
5
  import random
6
- import string
7
  from typing import Any, Dict, Optional
8
 
9
  import httpx
@@ -16,9 +15,8 @@ from api.config import (
16
  AGENT_MODE,
17
  TRENDING_AGENT_MODE,
18
  MODEL_PREFIXES,
19
- MODEL_REFERERS
20
  )
21
- from api.models import ChatRequest
22
  from api.logger import setup_logger
23
  from api.validate import getHid # Import the asynchronous getHid function
24
 
@@ -27,7 +25,7 @@ logger = setup_logger(__name__)
27
  # Define the blocked message
28
  BLOCKED_MESSAGE = "Generated by BLACKBOX.AI, try unlimited chat https://www.blackbox.ai"
29
 
30
- # Helper function to create chat completion data
31
  def create_chat_completion_data(
32
  content: str, model: str, timestamp: int, finish_reason: Optional[str] = None
33
  ) -> Dict[str, Any]:
@@ -48,12 +46,30 @@ def create_chat_completion_data(
48
 
49
  # Function to convert message to dictionary format, ensuring base64 data and optional model prefix
50
  def message_to_dict(message, model_prefix: Optional[str] = None):
51
- content = message.content if isinstance(message.content, str) else message.content[0]["text"]
52
  if model_prefix:
53
  content = f"{model_prefix} {content}"
54
  message_dict = {"role": message.role, "content": content}
55
- if hasattr(message, 'data') and message.data:
56
- message_dict['data'] = message.data
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
57
  return message_dict
58
 
59
  # Function to strip model prefix from content if present
@@ -64,7 +80,7 @@ def strip_model_prefix(content: str, model_prefix: Optional[str] = None) -> str:
64
  return content[len(model_prefix):].strip()
65
  return content
66
 
67
- # Process streaming response with headers from config.py
68
  async def process_streaming_response(request: ChatRequest):
69
  # Generate a unique ID for this request
70
  request_id = f"chatcmpl-{uuid.uuid4()}"
@@ -148,7 +164,7 @@ async def process_streaming_response(request: ChatRequest):
148
  logger.error(f"Error occurred during request for Request ID {request_id}: {e}")
149
  raise HTTPException(status_code=500, detail=str(e))
150
 
151
- # Process non-streaming response with headers from config.py
152
  async def process_non_streaming_response(request: ChatRequest):
153
  # Generate a unique ID for this request
154
  request_id = f"chatcmpl-{uuid.uuid4()}"
 
3
  import uuid
4
  import asyncio
5
  import random
 
6
  from typing import Any, Dict, Optional
7
 
8
  import httpx
 
15
  AGENT_MODE,
16
  TRENDING_AGENT_MODE,
17
  MODEL_PREFIXES,
 
18
  )
19
+ from api.models import ChatRequest, Message # Ensure Message is imported
20
  from api.logger import setup_logger
21
  from api.validate import getHid # Import the asynchronous getHid function
22
 
 
25
  # Define the blocked message
26
  BLOCKED_MESSAGE = "Generated by BLACKBOX.AI, try unlimited chat https://www.blackbox.ai"
27
 
28
+ # Function to create chat completion data
29
  def create_chat_completion_data(
30
  content: str, model: str, timestamp: int, finish_reason: Optional[str] = None
31
  ) -> Dict[str, Any]:
 
46
 
47
  # Function to convert message to dictionary format, ensuring base64 data and optional model prefix
48
  def message_to_dict(message, model_prefix: Optional[str] = None):
49
+ content = message.content
50
  if model_prefix:
51
  content = f"{model_prefix} {content}"
52
  message_dict = {"role": message.role, "content": content}
53
+
54
+ # Check if the message includes an image in base64 format
55
+ if hasattr(message, 'image_base64') and message.image_base64:
56
+ # Ensure the base64 image data has the correct data URI prefix
57
+ image_base64 = message.image_base64
58
+ if not image_base64.startswith('data:image/'):
59
+ # Assuming JPEG format; adjust if necessary
60
+ image_base64 = f"data:image/jpeg;base64,{image_base64}"
61
+ # Generate a unique file path or name
62
+ file_name = f"image_{uuid.uuid4()}.jpg"
63
+ message_dict['data'] = {
64
+ 'imagesData': [
65
+ {
66
+ 'filePath': file_name,
67
+ 'contents': image_base64
68
+ }
69
+ ],
70
+ 'fileText': '',
71
+ 'title': ''
72
+ }
73
  return message_dict
74
 
75
  # Function to strip model prefix from content if present
 
80
  return content[len(model_prefix):].strip()
81
  return content
82
 
83
+ # Process streaming response
84
  async def process_streaming_response(request: ChatRequest):
85
  # Generate a unique ID for this request
86
  request_id = f"chatcmpl-{uuid.uuid4()}"
 
164
  logger.error(f"Error occurred during request for Request ID {request_id}: {e}")
165
  raise HTTPException(status_code=500, detail=str(e))
166
 
167
+ # Process non-streaming response
168
  async def process_non_streaming_response(request: ChatRequest):
169
  # Generate a unique ID for this request
170
  request_id = f"chatcmpl-{uuid.uuid4()}"