Spaces:
Sleeping
Sleeping
| """OpenAI Chat Completions vision message shape for section photos.""" | |
| from __future__ import annotations | |
| from pathlib import Path | |
| from app.services.photo_vision import _openai_vision_image_part, _openai_vision_user_message | |
| def test_vision_uses_image_url_not_input_image(tmp_path: Path) -> None: | |
| img = tmp_path / "x.jpg" | |
| img.write_bytes(b"\xff\xd8\xff") | |
| part = _openai_vision_image_part(img, "image/jpeg") | |
| assert part["type"] == "image_url" | |
| assert "url" in part["image_url"] | |
| assert part["image_url"]["url"].startswith("data:image/jpeg;base64,") | |
| assert "input_image" not in str(part) | |
| def test_vision_user_message_orders_text_then_images(tmp_path: Path) -> None: | |
| img = tmp_path / "y.jpg" | |
| img.write_bytes(b"\xff\xd8\xff") | |
| parts = [_openai_vision_image_part(img, "image/jpeg")] | |
| msg = _openai_vision_user_message("describe", parts) | |
| assert msg["role"] == "user" | |
| content = msg["content"] | |
| assert content[0]["type"] == "text" | |
| assert content[1]["type"] == "image_url" | |