Skip to content

Commit

Permalink
user_imahes_file_manager to singleton
Browse files Browse the repository at this point in the history
  • Loading branch information
KellyRousselHoomano committed Jul 4, 2024
1 parent 671f3d7 commit e2489c3
Show file tree
Hide file tree
Showing 4 changed files with 15 additions and 11 deletions.
6 changes: 2 additions & 4 deletions backend/app/models/assistant/chat_assistant.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from mojodex_core.llm_engine.providers.openai_vision_llm import VisionMessagesData
from abc import ABC, abstractmethod
from mojodex_core.llm_engine.providers.model_loader import ModelLoader

from mojodex_core.user_storage_manager.user_images_file_manager import UserImagesFileManager

class ChatAssistant(ABC):

Expand Down Expand Up @@ -66,10 +66,8 @@ def _call_llm(self, conversation_list, user_id, session_id, user_task_execution_
def __call_vision_llm(self, conversation_list, temperature, max_tokens, user_id, session_id,
user_task_execution_pk, task_name_for_system):
try:
from mojodex_core.user_storage_manager.user_images_file_manager import UserImagesFileManager
user_image_file_manager = UserImagesFileManager()
initial_system_message_data = [VisionMessagesData(role="system", text=self._mpt.prompt, images_path=[
user_image_file_manager.get_image_file_path(image, user_id, session_id)
UserImagesFileManager().get_image_file_path(image, user_id, session_id)
for image in self.input_images])]
conversation_messages_data = [
VisionMessagesData(role=message["role"], text=message["content"], images_path=[]) for message in
Expand Down
7 changes: 2 additions & 5 deletions backend/app/models/user_task_execution_inputs_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@ class UserTaskExecutionInputsManager:
image_type = "image"
multiple_images_type = "multiple_images"

def __init__(self):
self.user_image_file_manager = UserImagesFileManager()

def construct_inputs_from_request(self, user_task_execution_json_input_values, inputs, files, user_id, session_id):
try:
# ensure inputs is a list of dicts and each dict has the required fields (input_name and input_value)
Expand Down Expand Up @@ -43,13 +40,13 @@ def construct_inputs_from_request(self, user_task_execution_json_input_values, i
if input["type"] == self.image_type:
if input["input_name"] == image_input:
filename = input["value"]
self.user_image_file_manager.store_image_file(files[image_input], filename, user_id, session_id)
UserImagesFileManager().store_image_file(files[image_input], filename, user_id, session_id)
if input["type"] == self.multiple_images_type:
image_name = "_".join(image_input.split("_")[:-1])
image_index = int(image_input.split("_")[-1])
if input["input_name"] == image_name:
filename = input["value"][image_index]
self.user_image_file_manager.store_image_file(files[image_input], filename, user_id, session_id)
UserImagesFileManager().store_image_file(files[image_input], filename, user_id, session_id)

return user_task_execution_json_input_values
except Exception as e:
Expand Down
3 changes: 1 addition & 2 deletions backend/app/routes/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
class Image(Resource):
def __init__(self):
Image.method_decorators = [authenticate()]
self.user_image_file_manager = UserImagesFileManager()

def get(self, user_id):

Expand All @@ -25,7 +24,7 @@ def get(self, user_id):

# Logic
try:
images_storage = self.user_image_file_manager.get_images_storage_path(user_id, session_id)
images_storage = UserImagesFileManager().get_images_storage_path(user_id, session_id)
filepath = os.path.join(images_storage, filename)

if not os.path.isfile(filepath):
Expand Down
10 changes: 10 additions & 0 deletions mojodex_core/user_storage_manager/user_images_file_manager.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@


class UserImagesFileManager(UserStorageManager):
_instance = None
_initialized = False

def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = super(UserImagesFileManager, cls).__new__(
cls, *args, **kwargs)
cls._instance._initialized = False
return cls._instance


def get_images_storage_path(self, user_id, session_id):
try:
Expand Down

0 comments on commit e2489c3

Please sign in to comment.