Spaces:
Paused
Paused
| 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") | |