Shrink collection summary to fit OpenAI token limit

Deduplicate records by musicbrainz_id (merging formats)
and cap genres to 3 per record, reducing the summary from
~32K to ~24K estimated tokens.
This commit is contained in:
Claudio Ortolina
2026-04-13 12:33:15 +01:00
parent ac1954f9c8
commit 8108645718
4 changed files with 86 additions and 28 deletions
@@ -31,7 +31,7 @@ defmodule MusicLibrary.Chats.CollectionChatTest do
summary =
"Radiohead - OK Computer (1997-06-16, cd, album) [alternative rock, art rock]\nPink Floyd - The Wall (1979-11-30, vinyl, album) [progressive rock]"
assert :ok = CollectionChat.stream_response([], summary, fn _chunk -> :ok end)
assert :ok = CollectionChat.stream_response([], {summary, 2}, fn _chunk -> :ok end)
assert_receive {:captured_instructions, instructions}
assert instructions =~ summary
@@ -43,7 +43,7 @@ defmodule MusicLibrary.Chats.CollectionChatTest do
test "stream_response handles empty collection" do
stub_and_capture_instructions(self())
assert :ok = CollectionChat.stream_response([], "", fn _chunk -> :ok end)
assert :ok = CollectionChat.stream_response([], {"", 0}, fn _chunk -> :ok end)
assert_receive {:captured_instructions, instructions}
assert instructions =~ "0 records"