from typing import Union import httpx from litellm.llms.base_llm.chat.transformation import BaseLLMException class OllamaError(BaseLLMException): def __init__( self, status_code: int, message: str, headers: Union[dict, httpx.Headers] ): super().__init__(status_code=status_code, message=message, headers=headers) def _convert_image(image): """ Convert image to base64 encoded image if not already in base64 format If image is already in base64 format AND is a jpeg/png, return it If image is not JPEG/PNG, convert it to JPEG base64 format """ import base64 import io try: from PIL import Image except Exception: raise Exception( "ollama image conversion failed please run `pip install Pillow`" ) orig = image if image.startswith("data:"): image = image.split(",")[-1] try: image_data = Image.open(io.BytesIO(base64.b64decode(image))) if image_data.format in ["JPEG", "PNG"]: return image except Exception: return orig jpeg_image = io.BytesIO() image_data.convert("RGB").save(jpeg_image, "JPEG") jpeg_image.seek(0) return base64.b64encode(jpeg_image.getvalue()).decode("utf-8")