**Update 2:** Dealing with the issue raised by @Kuba in the comments:

Using the function `LineScaledCoordinates` from the `GraphUtilities` package to place the text labels:

    Needs["GraphUtilities`"]

    labels ={"A", "B", "C", "D", "E", "F"};
    i = 1; 
    Graph[{a -> b, a -> b, a -> b, a -> b, a -> e, e -> b},  
    EdgeShapeFunction -> ({Text[labels[[i++]], LineScaledCoordinate[#, 0.5]], Arrow@#} &),
    VertexLabels->"Name"] 

![enter image description here][1]


**Update:** Using `EdgeShapeFunction`:

    labels=Reverse@{"A","B","C","D"};
    i=1;
    Graph[{a->b,a->b,a->b, a->b},
     EdgeShapeFunction->({Text[labels[[i++]],Mean@#],Arrow@#}&)]
![enter image description here][2]

------------

Simplest method to convert a `Graph` `g` to `Graphics` is to use `Show[g]` (see [this answer by @becko](https://mathematica.stackexchange.com/a/25024/125)). 

We can post-process `Show[g]` to modify the `Text` primitives:

    Show[Graph[{Labeled[a->b,"A"],Labeled[a->b,"B"]}]]/. 
       Text["A",{x_,y_/; (y<0.)},z___]:>Text["B",{x,y},z]

![enter image description here][3]

Or, we can construct a `Graph` with modified edge directions (and correct labels) and post-process it to change the edge directions:

    Show[Graph[{Labeled[a->b,"A"], Labeled[b->a,"B"]}]]/. 
      BezierCurve[{{-1.,0.},m__,y_}]:>BezierCurve[{{1.,0.},m,{-1.,0.}}]
    (* same picture *)


  [1]: https://i.sstatic.net/RmOn4.png
  [2]: https://i.sstatic.net/ddntg.png
  [3]: https://i.sstatic.net/K9nTv.png