| import base64 | |
| import io | |
| from PIL import Image | |
| from langchain_google_genai import ChatGoogleGenerativeAI | |
| from langchain_core.messages import HumanMessage | |
| llm = ChatGoogleGenerativeAI(model="gemini-2.5-flash", temperature=0.1) | |
| def image_to_base64(image: Image.Image) -> str: | |
| buffered = io.BytesIO() | |
| image.save(buffered, format="JPEG") | |
| return base64.b64encode(buffered.getvalue()).decode("utf-8") | |
| def chat_with_image(user_prompt: str, image: Image.Image) -> str: | |
| img_base64 = image_to_base64(image) | |
| message = [ | |
| HumanMessage(content=[ | |
| {"type": "text", "text": user_prompt}, | |
| { | |
| "type": "media", | |
| "mime_type": "image/jpeg", | |
| "data": img_base64 | |
| } | |
| ]) | |
| ] | |
| response = llm.invoke(message) | |
| return response.content |