diff --git a/packages/ssestream/ssestream.go b/packages/ssestream/ssestream.go index d5fd544d..3534aed8 100644 --- a/packages/ssestream/ssestream.go +++ b/packages/ssestream/ssestream.go @@ -136,13 +136,6 @@ func NewStream[T any](decoder Decoder, err error) *Stream[T] { } } -var eventPrefixesToBeParsed = []string{ - "response.", - "image_generation.", - "image_generation.", - "transcript.", -} - // Next returns false if the stream has ended or an error occurred. // Call Stream.Current() to get the current value. // Call Stream.Err() to get the error. @@ -172,15 +165,7 @@ func (s *Stream[T]) Next() bool { var nxt T - hasPrefixToParse := false - for _, prefix := range eventPrefixesToBeParsed { - if strings.HasPrefix(s.decoder.Event().Type, prefix) { - hasPrefixToParse = true - break - } - } - - if s.decoder.Event().Type == "" || hasPrefixToParse { + if s.decoder.Event().Type == "" || !strings.HasPrefix(s.decoder.Event().Type, "thread.") { ep := gjson.GetBytes(s.decoder.Event().Data, "error") if ep.Exists() { s.err = fmt.Errorf("received error while streaming: %s", ep.String()) diff --git a/streamaccumulator.go b/streamaccumulator.go index 53b7069f..347809c1 100644 --- a/streamaccumulator.go +++ b/streamaccumulator.go @@ -169,7 +169,9 @@ func (prev *chatCompletionResponseState) update(chunk ChatCompletionChunk) (just new.state = refusalResponseState case delta.JSON.ToolCalls.Valid(): new.state = toolResponseState - new.index = int(delta.ToolCalls[0].Index) + if len(delta.ToolCalls) > 0 { + new.index = int(delta.ToolCalls[0].Index) + } default: new.state = finishedResponseState }