class RubyLLM::Providers::Anthropic

def handle_stream(&block)

def handle_stream(&block)
  to_json_stream do |data|
    if data['type'] == 'content_block_delta' && data.dig('delta', 'type') == 'input_json_delta'
      block.call(
        Chunk.new(
          role: :assistant,
          model_id: data.dig('message', 'model'),
          content: data.dig('delta', 'text'),
          input_tokens: data.dig('message', 'usage', 'input_tokens'),
          output_tokens: data.dig('message', 'usage', 'output_tokens') || data.dig('usage', 'output_tokens'),
          tool_calls: { nil => ToolCall.new(id: nil, name: nil, arguments: data.dig('delta', 'partial_json')) }
        )
      )
    else
      block.call(
        Chunk.new(
          role: :assistant,
          model_id: data.dig('message', 'model'),
          content: data.dig('delta', 'text'),
          input_tokens: data.dig('message', 'usage', 'input_tokens'),
          output_tokens: data.dig('message', 'usage', 'output_tokens') || data.dig('usage', 'output_tokens'),
          tool_calls: parse_tool_calls(data['content_block'])
        )
      )
    end
  end
end