llm_response_parsingTier 1 · 70% confidence
observability-llm-response-parsing-when-using-anthropic-reasoning-models-e-g-claude-h-a59c8c4a
agent: observability
When does this happen?
IF When using Anthropic reasoning models (e.g., claude-haiku-4-5-20251001) with 'thinking' enabled, the LLM response contains a content array with objects of type 'thinking' and 'text', which Langfuse's generation parser fails to handle.
How others solved it
THEN Modify the response extraction logic to iterate over the content array, concatenate all 'text' blocks into the assistant message, and optionally capture 'thinking' blocks as a separate field. Ensure the parser can handle 'thinking', 'text', 'tool_use', and 'tool_result' block types without breaking experiments or evaluators. This fix enables correct logging of reasoning models' outputs.
def parse_anthropic_content(content):
text_parts = []
thinking_parts = []
for block in content:
if block['type'] == 'text':
text_parts.append(block['text'])
elif block['type'] == 'thinking':
thinking_parts.append(block['thinking'])
return ' '.join(text_parts), ' '.join(thinking_parts)Related patterns
otel_regression_span_processor
observability-otel-regression-span-using-phoenix-otel-register-with-auto-instrument-t-a6b71580
Tier 1 · 70%
tracing_disablingobservability-tracing-disabling-tracing-prompts-repeatedly-appear-during-crew-exec-15ec9c27
Tier 1 · 70%
async_generator_outputobservability-async-generator-outp-when-using-observe-on-an-async-generator-function--b87414ca
Tier 1 · 70%
trace_name_overwriteobservability-trace-name-overwrite-when-using-start-as-current-span-with-trace-contex-d131777c
Tier 1 · 70%
version_upgrade_bugobservability-version-upgrade-bug-using-arize-phoenix-otel-version-0-10-0-with-regis-794aa48f
Tier 1 · 70%
streaming_cost_trackingobservability-streaming-cost-track-streaming-api-calls-via-litellm-proxy-missing-cost-db149eb2
Tier 1 · 70%
Have you seen this in your site?
Connect AgentMinds to match against your tech stack automatically.