Skip to content

Commit 2c178ea

Browse files
committed
Merge branch 'stream-tools-stop' into testing
2 parents a4c8519 + 120785d commit 2c178ea

File tree

1 file changed

+15
-19
lines changed

1 file changed

+15
-19
lines changed

openai/openai.go

Lines changed: 15 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -657,26 +657,22 @@ func (w *ChatWriter) writeResponse(data []byte) (int, error) {
657657

658658
// chat chunk
659659
if w.stream {
660-
c := toChunk(w.id, chatResponse)
661-
if w.streamUsage {
662-
c.Usage = &nullChunkUsage
663-
}
664-
if w.finished {
665-
// we've already finished the chat, usually for tool calls, so do
666-
// not continue to send empty choices.
667-
c.Choices = nil
668-
} else if len(c.Choices) > 0 && c.Choices[0].FinishReason != nil {
669-
w.finished = true
670-
}
671-
d, err := json.Marshal(c)
672-
if err != nil {
673-
return 0, err
674-
}
660+
// If we've already finished, don't send any more chunks with choices.
661+
if !w.finished {
662+
c := toChunk(w.id, chatResponse)
663+
if w.streamUsage {
664+
c.Usage = &nullChunkUsage
665+
}
666+
d, err := json.Marshal(c)
667+
if err != nil {
668+
return 0, err
669+
}
675670

676-
w.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
677-
_, err = w.ResponseWriter.Write([]byte(fmt.Sprintf("data: %s\n\n", d)))
678-
if err != nil {
679-
return 0, err
671+
w.ResponseWriter.Header().Set("Content-Type", "text/event-stream")
672+
_, err = w.ResponseWriter.Write([]byte(fmt.Sprintf("data: %s\n\n", d)))
673+
if err != nil {
674+
return 0, err
675+
}
680676
}
681677

682678
if chatResponse.Done {

0 commit comments

Comments
 (0)