Propagate model through streamed responses

StreamAccumulator never set its model field, so
Response().Model was always empty for streamed
completions. Add a Model field to stream events
and populate it in all three providers (OpenAI,
Anthropic, Bedrock).

Signed-off-by: Bryan Frimin <bryan@getprobo.com>
This commit is contained in:
Bryan Frimin
2026-03-13 19:17:17 +01:00
parent 9e842b8ef3
commit 2df9a3fe59
5 changed files with 35 additions and 15 deletions

View File

@@ -83,7 +83,7 @@ func (p *Provider) ChatCompletionStream(ctx context.Context, req *llm.ChatComple
return nil, mapError(err)
}
return newBedrockStream(output.GetStream()), nil
return newBedrockStream(output.GetStream(), req.Model), nil
}
func buildInput(req *llm.ChatCompletionRequest) *bedrockruntime.ConverseInput {
@@ -346,14 +346,17 @@ type bedrockStream struct {
events <-chan types.ConverseStreamOutput
current llm.ChatCompletionStreamEvent
err error
model string
modelSent bool
toolIndex int
inToolUse bool
}
func newBedrockStream(eventStream *bedrockruntime.ConverseStreamEventStream) *bedrockStream {
func newBedrockStream(eventStream *bedrockruntime.ConverseStreamEventStream, model string) *bedrockStream {
return &bedrockStream{
eventStream: eventStream,
events: eventStream.Events(),
model: model,
}
}
@@ -361,6 +364,10 @@ func (s *bedrockStream) Next() bool {
for event := range s.events {
mapped, ok := s.mapEvent(event)
if ok {
if !s.modelSent {
mapped.Model = s.model
s.modelSent = true
}
s.current = mapped
return true
}