LangChain/Core Concepts
Intermediate8 min

Standard Content Blocks

Provider-agnostic access to reasoning traces, citations, images, and text via the new content_blocks property on messages — no more per-provider parsing.

Quick Reference

  • content_blocks property on messages provides standardized access to structured content
  • Block types: text, image, reasoning, citation — same format regardless of provider
  • Replaces per-provider handling of reasoning/thinking blocks (OpenAI, Anthropic, etc.)
  • .text is now a property (not a method) — returns concatenated text content
  • HumanMessage(content_blocks=[...]) creates multimodal input in a standardized way
  • LC_OUTPUT_VERSION=v1 or output_version='v1' to serialize standard blocks into .content

The Problem: Provider-Specific Content

Before standard content blocks, every provider returned reasoning traces, citations, and images in different formats. OpenAI uses 'reasoning_content', Anthropic uses 'thinking' blocks, and each provider's image format is different. Your code needed provider-specific parsing for every content type.

The old way — provider-specific parsing