[BOT ISSUE] OpenAI Responses API stream_raw() not instrumented
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 58/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Pouca atividade
- Stack de tecnologia
- ruby
- Domínio
- observability
Direção de pesquisa
Comece por lib/braintrust/contrib/openai/instrumentation/responses.rb e compare seus wrappers create e stream com lib/braintrust/contrib/openai/instrumentation/chat.rb:60-72. Em seguida, inspecione ResponsesPatcher e o tratamento de Internal::Stream em lib/braintrust/contrib/openai/patcher.rb; está concluído quando Responses stream_raw produzir tracing com a entrada especificada, a saída agregada, os metadados e as métricas.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
The official OpenAI Ruby gem provides client.responses.stream_raw() which returns an OpenAI::Internal::Stream of raw server-sent events. This method is not instrumented, meaning users who call stream_raw instead of stream on the Responses API get zero tracing.
This is inconsistent with the Chat Completions integration in this same SDK, which already instruments stream_raw alongside create and stream.
What is missing
OpenAI::Resources::Responses#stream_raw— not wrapped, no context is set on the returned stream object- Although
OpenAI::Internal::Streamis patched by theChatPatcher, theInternalStreammodule only traces whenctx[:stream_type] == :raw— a context value that only the Chatstream_rawwrapper sets. Responsesstream_rawcalls pass through completely untraced.
How the Chat integration handles this (for reference)
The Chat integration wraps stream_raw at lib/braintrust/contrib/openai/instrumentation/chat.rb:60-72, storing context on the stream object with stream_type: :raw. The ChatPatcher then patches OpenAI::Internal::Stream at lib/braintrust/contrib/openai/patcher.rb:58-63 to create spans on consumption.
A similar pattern would be needed for Responses:
- Wrap
Responses#stream_rawto store context (with a distinctstream_type) on the returned stream - Either extend the existing
InternalStreammodule to handle the responses stream type, or create a dedicated stream handler
What a span should capture
- Input: the response input (text, conversation items, etc.)
- Output: aggregated output items from
response.completedevent (same asResponseStream) - Metadata: model, instructions, tools, provider, endpoint, stream flag
- Metrics: input_tokens, output_tokens, time_to_first_token
Braintrust docs status
not_found — Braintrust tracing docs at https://www.braintrust.dev/docs/guides/traces and OpenAI integration docs do not specifically mention stream_raw for any provider.
Upstream sources
- Official OpenAI Ruby SDK: https://github.com/openai/openai-ruby —
OpenAI::Resources::Responsesdefinescreate,stream,stream_raw,retrieve,retrieve_streaming,delete,cancel, andcompact stream_rawreturnsOpenAI::Internal::Stream(yielding raw SSE events), distinct fromstreamwhich returnsOpenAI::Helpers::Streaming::ResponseStream
Local repo files inspected
lib/braintrust/contrib/openai/instrumentation/responses.rb— wraps onlycreate(line 35) andstream(line 59); nostream_rawmethodlib/braintrust/contrib/openai/patcher.rb—ResponsesPatcher(line 76) patchesResponseStreambut does not patchInternal::Streamfor responseslib/braintrust/contrib/openai/instrumentation/chat.rb:60-72— shows how Chat'sstream_rawis wrapped (the pattern to follow)lib/braintrust/contrib/openai/patcher.rb:58-63— showsInternal::Streampatching for Chat (withstream_type: :rawguard atchat.rb:242)
- Linguagem predominante
- Ruby
- Estrelas
- 9
- Forks
- 11
- Merge médio
- 1d 3h
- PRs com merge (30d)
- 4
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Sem modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de braintrustdata/braintrust-sdk-ruby
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
-
[BOT ISSUE] OpenAI Chat Completions missing reasoning model and web search metadata parametersAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
-
ruby
Dificuldade 3/5 Meio dia Facilidade para iniciantes 62/100
-
ruby
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 45/100
Todas as issues de braintrustdata/braintrust-sdk-ruby
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
hashicorp/homebrew-tap#433 ·
-
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 62/100
TheOdinProject/curriculum#31509 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
GPX export ignores set datesAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
dependencies Difficulty: Easy Good First Issue
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 82/100
rubyforgood/casa#7325 ·
Mantenedores costumam responder em até 1 dia