[bugfix] sometimes bedrock EventStream chunk is not complete (#3010)

This commit is contained in:
rinfx
2025-10-16 09:52:51 +08:00
committed by GitHub
parent 1f301be851
commit 6b2d06a330

View File

@@ -284,11 +284,10 @@ func extractAmazonEventStreamEvents(ctx wrapper.HttpContext, chunk []byte) []Con
r := bytes.NewReader(body) r := bytes.NewReader(body)
var events []ConverseStreamEvent var events []ConverseStreamEvent
var lastRead int64 = -1 var lastRead int64 = 0
messageBuffer := make([]byte, 1024) messageBuffer := make([]byte, 1024)
defer func() { defer func() {
log.Infof("extractAmazonEventStreamEvents: lastRead=%d, r.Size=%d", lastRead, r.Size()) log.Infof("extractAmazonEventStreamEvents: lastRead=%d, r.Size=%d", lastRead, r.Size())
ctx.SetContext(ctxKeyStreamingBody, nil)
}() }()
for { for {
@@ -306,6 +305,11 @@ func extractAmazonEventStreamEvents(ctx wrapper.HttpContext, chunk []byte) []Con
} }
lastRead = r.Size() - int64(r.Len()) lastRead = r.Size() - int64(r.Len())
} }
if lastRead < int64(len(body)) {
ctx.SetContext(ctxKeyStreamingBody, body[lastRead:])
} else {
ctx.SetContext(ctxKeyStreamingBody, nil)
}
return events return events
} }
@@ -766,7 +770,7 @@ func (b *bedrockProvider) buildBedrockTextGenerationRequest(origRequest *chatCom
System: systemMessages, System: systemMessages,
Messages: messages, Messages: messages,
InferenceConfig: bedrockInferenceConfig{ InferenceConfig: bedrockInferenceConfig{
MaxTokens: origRequest.MaxTokens, MaxTokens: origRequest.getMaxTokens(),
Temperature: origRequest.Temperature, Temperature: origRequest.Temperature,
TopP: origRequest.TopP, TopP: origRequest.TopP,
}, },