To populate columns like input, output, and tool calls in Phoenix, you need to use OpenInference semantic conventions and/or OpenInference instrumentors, not just generic OpenTelemetry tracing. Standard OTEL spans alone do not automatically capture LLM-specific attributes (inputs, outputs, tool calls, etc.) required by Phoenix’s UI. You should either use OpenInference instrumentor packages for your frameworks (e.g., OpenAI, LangChain, etc.) or manually set semantic attributes on your spans according to the OpenInference conventions <https://docs.arize.com/phoenix/tracing/how-to-tracing/manual-instrumentation/custom-spans|[Phoenix manual instrumentation guide>, <https://arize.com/docs/phoenix/sdk-api-reference#environment-variables|OpenInference docs>].
For Python, install the relevant OpenInference instrumentor (e.g., `pip install openinference-instrumentation-openai`) and use `phoenix.otel.register(auto_instrument=True)` to auto-instrument supported libraries, or use decorators/context managers like `@tracer.chain` and `span.set_input()/set_output()` for manual spans. For each span, ensure you set attributes such as `input.value`, `output.value`, and tool-specific attributes as described in the <https://docs.arize.com/phoenix/tracing/how-to-tracing/manual-instrumentation/custom-spans|manual instrumentation docs>. Without these, Phoenix cannot display the detailed columns in its UI.
Would you like a code example for your specific framework or more detail on manual attribute setting?
Sources:
- <https://arize.com/docs/phoenix/sdk-api-reference#environment-variables|Phoenix SDK/API reference>