import typing_extensions as typing from PIL import Image import io from google.genai import types class Score(typing.TypedDict): score: float explanation: str class Grading(typing.TypedDict): accuracy_to_prompt: Score creativity_and_originality: Score visual_quality_and_realism: Score consistency_and_cohesion: Score emotional_or_thematic_resonance: Score overall_score: Score def convert_to_bytes(image: Image.Image) -> bytes: image_bytes_io = io.BytesIO() image.save(image_bytes_io, format="PNG") return image_bytes_io.getvalue() def prepare_inputs(prompt: str, image: Image.Image): """Prepare inputs for the API from a given prompt and image.""" inputs = [ types.Part.from_text(text=prompt), types.Part.from_bytes(data=convert_to_bytes(image), mime_type="image/png"), ] return inputs def load_verifier_prompt(): """Loads the system prompt for Gemini when it acts as a verifier to grade images.""" with open("verifier_prompt.txt", "r") as f: verifier_prompt = f.read().replace('"""', "") return verifier_prompt