61 lines
1.9 KiB
Python
61 lines
1.9 KiB
Python
import numpy as np
|
|
from dash import callback, Input, Output, State
|
|
from ...data.processor import DataProcessor
|
|
|
|
|
|
class DataProcessingCallbacks:
|
|
|
|
def __init__(self):
|
|
self.processor = DataProcessor()
|
|
self._register_callbacks()
|
|
|
|
def _register_callbacks(self):
|
|
|
|
@callback(
|
|
Output('processed-data', 'data'),
|
|
Input('upload-data', 'contents'),
|
|
State('upload-data', 'filename')
|
|
)
|
|
def process_uploaded_file(contents, filename):
|
|
if contents is None:
|
|
return None
|
|
|
|
processed_data = self.processor.process_upload(contents, filename)
|
|
|
|
if processed_data.error:
|
|
return {'error': processed_data.error}
|
|
|
|
return {
|
|
'documents': [self._document_to_dict(doc) for doc in processed_data.documents],
|
|
'embeddings': processed_data.embeddings.tolist()
|
|
}
|
|
|
|
@callback(
|
|
Output('processed-prompts', 'data'),
|
|
Input('upload-prompts', 'contents'),
|
|
State('upload-prompts', 'filename')
|
|
)
|
|
def process_uploaded_prompts(contents, filename):
|
|
if contents is None:
|
|
return None
|
|
|
|
processed_data = self.processor.process_upload(contents, filename)
|
|
|
|
if processed_data.error:
|
|
return {'error': processed_data.error}
|
|
|
|
return {
|
|
'prompts': [self._document_to_dict(doc) for doc in processed_data.documents],
|
|
'embeddings': processed_data.embeddings.tolist()
|
|
}
|
|
|
|
@staticmethod
|
|
def _document_to_dict(doc):
|
|
return {
|
|
'id': doc.id,
|
|
'text': doc.text,
|
|
'embedding': doc.embedding,
|
|
'category': doc.category,
|
|
'subcategory': doc.subcategory,
|
|
'tags': doc.tags
|
|
} |