multimodal-vibe-check / tests /test_openai.py
tomasruiz's picture
Include code of llmapp from Github
41d24d2
raw
history blame
1.43 kB
from llmlib.base_llm import LLM, Message
from PIL import Image
from llmlib.rest_api.restapi_client import encode_as_png_in_base64
import pytest
from llmlib.openai.openai_completion import (
OpenAIModel,
extract_msgs,
)
from deepdiff import DeepDiff
from .helpers import (
assert_model_knows_capital_of_france,
assert_model_recognizes_pyramid_in_image,
is_ci,
)
def test_extract_msgs():
img = Image.new(mode="RGB", size=(1, 1))
msgs = [
Message(role="user", msg="Hi"),
Message(role="assistant", msg="Hi!"),
Message(role="user", msg="Describe:", img=img, img_name="img1"),
]
messages = extract_msgs(msgs)
expected_msgs = [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hi!"},
{
"role": "user",
"content": [
{"type": "text", "text": "Describe:"},
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{encode_as_png_in_base64(img)}",
},
},
],
},
]
assert DeepDiff(messages, expected_msgs) == {}
@pytest.mark.skipif(condition=is_ci(), reason="Avoid costs")
def test_openai_vision():
model: LLM = OpenAIModel()
assert_model_knows_capital_of_france(model)
assert_model_recognizes_pyramid_in_image(model)