Module: Braintrust::Contrib::Anthropic::Instrumentation::MessageStream::InstanceMethods

Defined in:
lib/braintrust/contrib/anthropic/instrumentation/messages.rb

Instance Method Summary collapse

Instance Method Details

#closeObject



189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
# File 'lib/braintrust/contrib/anthropic/instrumentation/messages.rb', line 189

def close
  ctx = Braintrust::Contrib::Context.from(self)
  if ctx&.[](:tracer) && !ctx[:consumed]
    # Stream closed without consumption - create minimal span
    ctx[:consumed] = true
    tracer = ctx[:tracer]
    params = ctx[:params]
     = ctx[:metadata]
    messages_instance = ctx[:messages_instance]

    tracer.in_span("anthropic.messages.create") do |span|
      messages_instance.send(:set_input, span, params)
      Support::OTel.set_json_attr(span, "braintrust.metadata", )
    end
  end
  super
end

#each(&block) ⇒ Object



162
163
164
165
166
167
168
169
170
171
172
# File 'lib/braintrust/contrib/anthropic/instrumentation/messages.rb', line 162

def each(&block)
  ctx = Braintrust::Contrib::Context.from(self)
  return super unless ctx&.[](:tracer) && !ctx[:consumed]

  trace_consumption(ctx) do
    super do |*args|
      ctx[:time_to_first_token] ||= Braintrust::Internal::Time.measure(ctx[:start_time])
      block.call(*args)
    end
  end
end

#textObject



174
175
176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/braintrust/contrib/anthropic/instrumentation/messages.rb', line 174

def text
  ctx = Braintrust::Contrib::Context.from(self)
  return super unless ctx&.[](:tracer) && !ctx[:consumed]

  original_text_enum = super
  Enumerator.new do |output|
    trace_consumption(ctx) do
      original_text_enum.each do |text_chunk|
        ctx[:time_to_first_token] ||= Braintrust::Internal::Time.measure(ctx[:start_time])
        output << text_chunk
      end
    end
  end
end