OpenAI Responses streams that end incomplete or failed are logged without token metrics
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 77/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Activo
- Stack tecnológico
- python
- Área
- observability
Línea de trabajo
Empieza en py/src/braintrust/integrations/openai/tracing.py, en ResponseWrapper._postprocess_streaming_results, y sigue cómo response.completed proporciona el uso y la salida en ambas ramas. Comprueba cómo los eventos terminales response.incomplete y response.failed exponen su respuesta final y, después, reproduce el comportamiento con la llamada de streaming proporcionada. El trabajo estará terminado cuando estos eventos terminales registren las métricas de tokens y la salida final, y una cassette grabada cubra este comportamiento.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
ResponseWrapper._postprocess_streaming_results (py/src/braintrust/integrations/openai/tracing.py) reads the final response only from response.completed. That event's response.usage populates the metrics, and its response.output becomes the logged output.
A Responses stream can also end on response.incomplete (for example when max_output_tokens is reached) or response.failed. Both events carry the same final response, with its usage and output. For those streams:
- no token metrics are logged: the intermediate events carry no usage, and the terminal response's usage is only read for
response.completed - the logged output is the partial reconstruction from the deltas, not the final
response.output
Repro: client.responses.create(model="gpt-4.1", input="Write a long essay", max_output_tokens=16, stream=True) with the wrapped client. The stream ends on response.incomplete and the span has no prompt_tokens/completion_tokens metrics.
Suggested fix: handle response.incomplete and response.failed the same way as response.completed in both branches. I'm happy to send a PR with a recorded cassette if that works for you.
This issue was written with help from an AI coding assistant (Claude Code); the code path above was checked on main.
- Lenguaje dominante
- Python
- Estrellas
- 22
- Forks
- 27
- Merge medio
- 14 h 49 min
- PR fusionados (30 d)
- 126
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de braintrustdata/braintrust-sdk-python
-
Temporal: add `workflow.Info.original_execution_run_id` to workflow span metadataPosiblemente ocupada @Ehsan-hash la tomó hace 1 día. Abiertofeature python
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
braintrustdata/braintrust-sdk-python#868 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 5/5 Más de una semana Aptitud para principiantes 20/100
braintrustdata/braintrust-sdk-python#957 ·
Los mantenedores suelen responder en 1 día
-
python
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
braintrustdata/braintrust-sdk-python#956 ·
Los mantenedores suelen responder en 1 día
-
python
braintrustdata/braintrust-sdk-python#839 ·
Los mantenedores suelen responder en 1 día
-
new-integration
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
braintrustdata/braintrust-sdk-python#808 ·
Los mantenedores suelen responder en 1 día
Todos los issues de braintrustdata/braintrust-sdk-python
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
-
[Bug] to_ical lexicographical/default sorting moves URL property between two X-WR- propertiesAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
collective/icalendar#1968 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Deferred from #1869: Complete the companion pytest guardrail update noted in the PR description...Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 95/100
Los mantenedores suelen responder en 1 día
-
Custom provider API keys collide on one host: env slot keyed on host:port only, not URL pathAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
NousResearch/hermes-agent#140958 ·
Los mantenedores suelen responder en 1 día
-
Bug triage/confirmed
Dificultad 2/5 Medio día Aptitud para principiantes 85/100
agentscope-ai/agentscope#3355 ·
Los mantenedores suelen responder en 2 días