Skip to content

symfonic.core.content_blocks

content_blocks

Extract visible text from provider content-block responses.

flatten_content_blocks

flatten_content_blocks(content: Any) -> str

Join text blocks while omitting provider-internal blocks.

Source code in src/symfonic/core/content_blocks.py
def flatten_content_blocks(content: Any) -> str:
    """Join text blocks while omitting provider-internal blocks."""
    if isinstance(content, str):
        return content
    if not isinstance(content, list):
        return ""
    texts: list[str] = []
    for block in content:
        if isinstance(block, dict):
            kind = block.get("type")
            value = block.get("text", "")
        else:
            kind = getattr(block, "type", None)
            value = getattr(block, "text", "")
        if kind == "text" and value:
            texts.append(str(value))
    return "\n".join(texts)