in google/generativeai/answer.py [0:0]
def _make_grounding_passages(source: GroundingPassagesOptions) -> protos.GroundingPassages:
"""
Converts the `source` into a `protos.GroundingPassage`. A `GroundingPassages` contains a list of
`protos.GroundingPassage` objects, which each contain a `protos.Content` and a string `id`.
Args:
source: `Content` or a `GroundingPassagesOptions` that will be converted to protos.GroundingPassages.
Return:
`protos.GroundingPassages` to be passed into `protos.GenerateAnswer`.
"""
if isinstance(source, protos.GroundingPassages):
return source
if not isinstance(source, Iterable):
raise TypeError(
f"Invalid input: The 'source' argument must be an instance of 'GroundingPassagesOptions'. Received a '{type(source).__name__}' object instead."
)
passages = []
if isinstance(source, Mapping):
source = source.items()
for n, data in enumerate(source):
if isinstance(data, protos.GroundingPassage):
passages.append(data)
elif isinstance(data, tuple):
id, content = data # tuple must have exactly 2 items.
passages.append({"id": id, "content": content_types.to_content(content)})
else:
passages.append({"id": str(n), "content": content_types.to_content(data)})
return protos.GroundingPassages(passages=passages)