Spaces:
Sleeping
Sleeping
import gradio as gr | |
import logging | |
# Set up logging | |
logger = logging.getLogger('gradio_app.processors.classifier') | |
def process_classifier_analysis(analysis_results, prompt, analyses): | |
""" | |
Process Classifier analysis and return UI updates | |
Args: | |
analysis_results (dict): Complete analysis results | |
prompt (str): The prompt being analyzed | |
analyses (dict): Analysis data for the prompt | |
Returns: | |
tuple: UI component updates | |
""" | |
visualization_area_visible = True | |
classifier_results = analyses["classifier"] | |
models = classifier_results.get("models", []) | |
if len(models) < 2: | |
from analysis_runner import default_no_visualization | |
return default_no_visualization(analysis_results) | |
prompt_title_visible = True | |
prompt_title_value = f"## Analysis of Prompt: \"{prompt[:100]}...\"" | |
models_compared_visible = True | |
models_compared_value = f"### Classifier Analysis for {models[0]} and {models[1]}" | |
# Extract and format classifier information | |
model1_name = models[0] | |
model2_name = models[1] | |
# Display classifications for each model | |
classifications = classifier_results.get("classifications", {}) | |
model1_title_visible = False | |
model1_title_value = "" | |
model1_words_visible = False | |
model1_words_value = "" | |
if classifications: | |
model1_title_visible = True | |
model1_title_value = f"#### Classification Results" | |
model1_words_visible = True | |
model1_results = classifications.get(model1_name, {}) | |
model2_results = classifications.get(model2_name, {}) | |
model1_words_value = f""" | |
**{model1_name}**: | |
- Formality: {model1_results.get('formality', 'N/A')} | |
- Sentiment: {model1_results.get('sentiment', 'N/A')} | |
- Complexity: {model1_results.get('complexity', 'N/A')} | |
**{model2_name}**: | |
- Formality: {model2_results.get('formality', 'N/A')} | |
- Sentiment: {model2_results.get('sentiment', 'N/A')} | |
- Complexity: {model2_results.get('complexity', 'N/A')} | |
""" | |
# Show comparison | |
model2_title_visible = False | |
model2_title_value = "" | |
model2_words_visible = False | |
model2_words_value = "" | |
differences = classifier_results.get("differences", {}) | |
if differences: | |
model2_title_visible = True | |
model2_title_value = f"#### Classification Comparison" | |
model2_words_visible = True | |
model2_words_value = "\n".join([ | |
f"- **{category}**: {diff}" | |
for category, diff in differences.items() | |
]) | |
return ( | |
analysis_results, # analysis_results_state | |
False, # analysis_output visibility | |
True, # visualization_area_visible | |
gr.update(visible=True), # analysis_title | |
gr.update(visible=prompt_title_visible, value=prompt_title_value), # prompt_title | |
gr.update(visible=models_compared_visible, value=models_compared_value), # models_compared | |
gr.update(visible=model1_title_visible, value=model1_title_value), # model1_title | |
gr.update(visible=model1_words_visible, value=model1_words_value), # model1_words | |
gr.update(visible=model2_title_visible, value=model2_title_value), # model2_title | |
gr.update(visible=model2_words_visible, value=model2_words_value), # model2_words | |
gr.update(visible=False), # similarity_metrics_title | |
gr.update(visible=False), # similarity_metrics | |
False, # status_message_visible | |
gr.update(visible=False), # status_message | |
gr.update(visible=False) # bias_visualizations - Not visible for Classifier analysis | |
) |