Guidance Needed on Reasoning Models Integration for Phoenix
Hey Phoenix team! 👋 I'm instrumenting reasoning models (OpenAI o1, DeepSeek Reasoner, gpt-oss, etc..) that return separate reasoning/thinking content alongside the final answer. Looking for guidance on the right way to represent this in traces. What I tried first: Added reasoning_content as a custom field in output messages:
output_messages = [{
"role": "assistant",
"content": "final answer here",
"reasoning_content": "internal reasoning/thinking...", #
Custom field
"tool_calls": [...]
}]Issue: Phoenix doesn't display reasoning_content in the formatted Output Messages tab (only visible in Attributes/raw JSON), which makes sense since it's not in the OpenInference semantic conventions. Current workaround im usin: Split into two separate assistant messages:
output_messages = [
{
"role": "assistant",
"name": "reasoning",
"content": "internal reasoning/thinking..."
},
{
"role": "assistant",
"content": "final answer here",
"tool_calls": [...]
}
]This displays both in the Output Messages tab, which works well for visibility. Questions: 1. Is adding message.reasoning_content to the OpenInference spec something being considered? (I see llm.token_count.completion_details.reasoning exists for token tracking) 2. Is the two-message workaround the recommended approach, or is there a better pattern? 3. Should I open an issue/PR to discuss adding reasoning content support to the spec? Thanks for the amazing tool! 🙏
