Skip to content

Commit b80f61d

Browse files
committed
Gemini takes deterministic filepaths to support caching
1 parent 677f8f5 commit b80f61d

3 files changed

Lines changed: 13 additions & 9 deletions

File tree

llmlib/llmlib/base_llm.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Message:
1212
role: Literal["user", "assistant"]
1313
msg: str
1414
img_name: str | None = None
15-
img: Image.Image | None = None
15+
img: Path | Image.Image | None = None
1616
video: Path | BytesIO | None = None
1717

1818
@classmethod

llmlib/llmlib/gemini/gemini_code.py

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -287,14 +287,19 @@ def dump_files_return_paths(msg: Message) -> list[Path]:
287287
"""Can return 0, 1 or 2 paths"""
288288
paths: list[Path] = []
289289
if msg.has_image():
290-
temp_file = tempfile.mktemp(suffix=".jpg")
291-
msg.img.save(temp_file)
292-
paths.append(Path(temp_file))
290+
if isinstance(msg.img, Path):
291+
paths.append(msg.img)
292+
else:
293+
raise PathNeededError()
293294
if msg.has_video():
294295
if isinstance(msg.video, Path):
295296
paths.append(msg.video)
296297
else:
297-
temp_file = tempfile.mktemp(suffix=".mp4")
298-
msg.video.save(temp_file)
299-
paths.append(Path(temp_file))
298+
raise PathNeededError()
300299
return paths
300+
301+
302+
def PathNeededError():
303+
return ValueError(
304+
"To support caching based on filename, please provide a deterministic filepath."
305+
)

tests/helpers.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,7 @@ def mona_lisa_message() -> Message:
7676

7777

7878
def pyramid_message() -> Message:
79-
img_name = "pyramid.jpg"
80-
img = get_test_img(img_name)
79+
img = file_for_test("pyramid.jpg")
8180
msg = Message(role="user", msg="What is in the image?", img=img, img_name="")
8281
return msg
8382

0 commit comments

Comments
 (0)