google.internal._lower_block
One content block -> one `Part`. Gemini takes every media kind at every position, so the table is all Accept and no position is passed:
Reference version
Signature
function google.internal._lower_block(
block: ai.content.Block,
fetch_url: bool,
preview: bool = …
) -> google.internal.GmPart throws baml.errors.InvalidArgument | baml.errors.Io | baml.errors.Timeout | ai.errors.NetworkFailure | ai.errors.PreviewUnsupported
One content block -> one Part. Gemini takes every media kind at every
position, so the table is all Accept and no position is passed:
position | text | image | pdf | audio | video system | Accept | Accept | Accept | Accept | Accept user | Accept | Accept | Accept | Accept | Accept assistant | Accept | Accept | Accept | Accept | Accept tool_result | Accept | Accept | Accept | Accept | Accept
A tool result's text goes in functionResponse.response; its media parts
go in functionResponse.parts (lower_journal).
Source:<builtin>/google/ns_internal/gemini.bamlbytes 16131–16419