import base64 import time from io import BytesIO def image_to_base64(image): buffered = BytesIO() image.save(buffered, format="PNG") img_data = base64.b64encode(buffered.getvalue()).decode() return img_data def get_examples_by_category(evaluation_data, category): return [ex["id"] for ex in evaluation_data if ex["category"] == category] def display_model_responses_html(evaluation_data, responses, model, start_index=0, batch_size=5): start_time = time.time() html = "" for ex in evaluation_data[start_index:start_index + batch_size]: image_thumbnail = ex["image_thumbnail"] image_full_url = ex["image_full_url"] img_id = ex["id"] prompt = ex["prompt"] response = responses[model].get(ex["id"], "(No response)") category = ex["category"] html += f"""
Example Image

Category: {category}

Prompt: {prompt}

Response: {response}


""" elapsed_time = time.time() - start_time print(f"[TRACE] display_model_responses_html took {elapsed_time:.3f} seconds for {batch_size} items") return html def display_example_responses_html(evaluation_data, responses, models, example_id): ex = next(e for e in evaluation_data if e["id"] == example_id) image_thumbnail = ex["image_thumbnail"] image_full_url = ex["image_full_url"] category = ex["category"] prompt = ex["prompt"] responses_html = "" for model in models: response = responses[model].get(example_id, "(No response)") responses_html += f'

{model}: {response}

' html = f"""
Example Image

Category: {category}

Prompt: {prompt}

Responses: {responses_html}

""" return html