From 8a96aa4ef041ed25d6eddf3af1e53db369fafb6b Mon Sep 17 00:00:00 2001 From: ishaan-jaff Date: Thu, 29 Feb 2024 14:42:20 -0800 Subject: [PATCH] (feat) add support for gemini base64 images --- litellm/llms/vertex_ai.py | 11 +++++ litellm/tests/cached_logo.jpg | Bin 0 -> 15974 bytes .../tests/test_amazing_vertex_completion.py | 46 ++++++++++++++++++ 3 files changed, 57 insertions(+) create mode 100644 litellm/tests/cached_logo.jpg diff --git a/litellm/llms/vertex_ai.py b/litellm/llms/vertex_ai.py index 18c06d4d67..6752b3cb30 100644 --- a/litellm/llms/vertex_ai.py +++ b/litellm/llms/vertex_ai.py @@ -225,6 +225,17 @@ def _gemini_vision_convert_messages(messages: list): part_mime = "video/mp4" google_clooud_part = Part.from_uri(img, mime_type=part_mime) processed_images.append(google_clooud_part) + elif "base64" in img: + # Case 4: Images with base64 encoding + import base64 + + # base 64 is passed as data:image/jpeg;base64, + img_without_base_64 = img.split(",")[1] + decoded_img = base64.b64decode(img_without_base_64) + processed_image = Part.from_data( + data=decoded_img, mime_type="image/jpeg" + ) + processed_images.append(processed_image) return prompt, processed_images except Exception as e: raise e diff --git a/litellm/tests/cached_logo.jpg b/litellm/tests/cached_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ddf8b9e820e24af78a208321fc1e770b83b69446 GIT binary patch literal 15974 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 literal 0 HcmV?d00001 diff --git a/litellm/tests/test_amazing_vertex_completion.py b/litellm/tests/test_amazing_vertex_completion.py index f5df00c8d9..35d66907c3 100644 --- a/litellm/tests/test_amazing_vertex_completion.py +++ b/litellm/tests/test_amazing_vertex_completion.py @@ -336,6 +336,52 @@ def test_gemini_pro_vision(): # test_gemini_pro_vision() +def encode_image(image_path): + import base64 + + with open(image_path, "rb") as image_file: + return base64.b64encode(image_file.read()).decode("utf-8") + + +@pytest.mark.skip( + reason="we already test gemini-pro-vision, this is just another way to pass images" +) +def test_gemini_pro_vision_base64(): + try: + load_vertex_ai_credentials() + litellm.set_verbose = True + litellm.num_retries = 3 + image_path = "cached_logo.jpg" + # Getting the base64 string + base64_image = encode_image(image_path) + resp = litellm.completion( + model="vertex_ai/gemini-pro-vision", + messages=[ + { + "role": "user", + "content": [ + {"type": "text", "text": "Whats in this image?"}, + { + "type": "image_url", + "image_url": { + "url": "data:image/jpeg;base64," + base64_image + }, + }, + ], + } + ], + ) + print(resp) + + prompt_tokens = resp.usage.prompt_tokens + + except Exception as e: + if "500 Internal error encountered.'" in str(e): + pass + else: + pytest.fail(f"An exception occurred - {str(e)}") + + def test_gemini_pro_function_calling(): load_vertex_ai_credentials() tools = [