-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Open
Description
Description
When using the SDK tracing API, traces show up in the OpenAI Platform Traces UI but opening a trace shows "No spans found". Verbose logging shows 4 items exported (1 trace + 3 spans), and the ingest API returns 204, so export appears to succeed.
Expected behavior
- Trace and spans appear in the UI
- Spans are nested under the trace (AgentSpan, CustomSpan, ResponseSpan, etc.)
Actual behavior
- Trace appears with correct metadata
- UI shows "No spans found"
- Logs show
Exported 4 itemsand the request returns 204
Verbose debug output
With enable_verbose_stdout_logging(), we see spans created and exported:
Setting current trace: trace_xxx
Creating span <CustomSpanData> with id None
Creating span <AgentSpanData> with id None
Running agent Greeter (turn 1)
Creating span <ResponseSpanData> with id None
...
Resetting current trace
Shutting down trace provider
Shutting down trace processor
Exported 4 items
So 4 items (1 trace + 3 spans) are sent and the export succeeds, but the UI still shows no spans.
Minimal reproduction
import asyncio
import os
from dotenv import load_dotenv
load_dotenv(override=True)
from agents import Agent, Runner, custom_span, gen_trace_id, trace
from agents import set_tracing_export_api_key, set_trace_processors
from agents.tracing import default_exporter
from agents.tracing.processors import BatchTraceProcessor
if os.environ.get("OPENAI_API_KEY"):
set_tracing_export_api_key(os.environ["OPENAI_API_KEY"])
# Long schedule_delay so trace + spans export together on shutdown
# (avoids 5s timer exporting trace before spans finish)
processor = BatchTraceProcessor(default_exporter(), schedule_delay=3600.0)
set_trace_processors([processor])
async def main():
trace_id = gen_trace_id()
workflow_trace = trace("trace_test", trace_id=trace_id)
print(f"View trace: https://platform.openai.com/traces/trace?trace_id={trace_id}")
workflow_trace.start(mark_as_current=True)
agent = Agent(
name="Greeter",
instructions="You are helpful. Reply briefly.",
model="gpt-4o-mini",
)
with custom_span(name="agent_run", data={"query": "hello"}):
result = await Runner.run(agent, "Say hello in one word.")
print(f"Result: {result.final_output}")
workflow_trace.finish(reset_current=True)
processor.force_flush()
print(f"Done. Check trace: https://platform.openai.com/traces/trace?trace_id={trace_id}")
if __name__ == "__main__":
asyncio.run(main())What we tried
force_flush()before exit – still no spans in UIset_trace_processorswithschedule_delay=3600– to keep trace and spans in the same export batch (default 5s timer can export trace before spans finish) – still no spansset_tracing_export_api_key()– API key is set and ingest returns 204- New vs old API key – same behavior
Environment
- openai-agents-0.8.4
- Python 3.12
- macOS
Questions
- Is there a known gap or bug in the Platform Traces UI for ingested spans?
- Does the ingest API accept spans but not surface them in the UI?
- Is there a required payload or ordering for spans in the ingest request?
Related: #31 (trace visibility issues), #1845 (RealtimeAgent traces without spans)
Reactions are currently unavailable