55 "errors"
66 "fmt"
77 "net/http"
8- "strconv"
98 "strings"
109
1110 "github.com/anthropics/anthropic-sdk-go"
@@ -20,17 +19,15 @@ import (
2019type streamAdapter struct {
2120 retryableStream [anthropic.MessageStreamEventUnion ]
2221
23- trackUsage bool
24- toolCall bool
25- toolID string
26- getResponseTrailer func () http.Header
22+ trackUsage bool
23+ toolCall bool
24+ toolID string
2725}
2826
2927func (c * Client ) newStreamAdapter (stream * ssestream.Stream [anthropic.MessageStreamEventUnion ], trackUsage bool ) * streamAdapter {
3028 return & streamAdapter {
31- retryableStream : retryableStream [anthropic.MessageStreamEventUnion ]{stream : stream },
32- trackUsage : trackUsage ,
33- getResponseTrailer : c .getResponseTrailer ,
29+ retryableStream : retryableStream [anthropic.MessageStreamEventUnion ]{stream : stream },
30+ trackUsage : trackUsage ,
3431 }
3532}
3633
@@ -151,30 +148,11 @@ func (a *streamAdapter) Recv() (chat.MessageStreamResponse, error) {
151148 } else {
152149 response .Choices [0 ].FinishReason = chat .FinishReasonStop
153150 }
154-
155- // MessageStopEvent is the last event. Let's drain the response to get the trailing headers.
156- trailers := a .getResponseTrailer ()
157- if trailers .Get ("X-RateLimit-Limit" ) != "" {
158- response .RateLimit = & chat.RateLimit {
159- Limit : parseHeaderInt64 (trailers .Get ("X-RateLimit-Limit" )),
160- Remaining : parseHeaderInt64 (trailers .Get ("X-RateLimit-Remaining" )),
161- Reset : parseHeaderInt64 (trailers .Get ("X-RateLimit-Reset" )),
162- RetryAfter : parseHeaderInt64 (trailers .Get ("Retry-After" )),
163- }
164- }
165151 }
166152
167153 return response , nil
168154}
169155
170- func parseHeaderInt64 (headerValue string ) int64 {
171- value , err := strconv .ParseInt (headerValue , 10 , 64 )
172- if err != nil {
173- return 0
174- }
175- return value
176- }
177-
178156// Close closes the stream
179157func (a * streamAdapter ) Close () {
180158 a .stream .Close ()
0 commit comments