Add reasoning streaming
This commit is contained in:
@@ -177,18 +177,21 @@ func (c *Client) completions(
|
||||
|
||||
// StreamEvent wraps a message or delta produced during streaming.
|
||||
type StreamEvent struct {
|
||||
// Type identifies the event kind: delta, done, or message.
|
||||
// Type identifies the event kind: delta, reasoning_delta, done, or message.
|
||||
Type string
|
||||
// Delta is a text fragment from the assistant response.
|
||||
Delta string
|
||||
// ReasoningDelta is a reasoning text fragment from the assistant response.
|
||||
ReasoningDelta string
|
||||
// Message is the complete chat completion message.
|
||||
Message Message
|
||||
}
|
||||
|
||||
const (
|
||||
streamEventDelta = "delta"
|
||||
streamEventDone = "done"
|
||||
streamEventMessage = "message"
|
||||
streamEventDelta = "delta"
|
||||
streamEventReasoningDelta = "reasoning_delta"
|
||||
streamEventDone = "done"
|
||||
streamEventMessage = "message"
|
||||
)
|
||||
|
||||
// CompletionsStream sends messages to the LLM using the specified model and
|
||||
@@ -403,6 +406,10 @@ func (c *Client) completionsStream(ctx context.Context, messages []Message, mode
|
||||
acc.reasoning.WriteString(
|
||||
delta.ReasoningContent,
|
||||
)
|
||||
events <- StreamEvent{
|
||||
Type: streamEventReasoningDelta,
|
||||
ReasoningDelta: delta.ReasoningContent,
|
||||
}
|
||||
}
|
||||
// Accumulate tool call deltas by index.
|
||||
for _, tc := range delta.ToolCalls {
|
||||
|
||||
Reference in New Issue
Block a user