Skip to content

Commit

Permalink
#153: Changed the interface of streaming chat request to pass ChatPar…
Browse files Browse the repository at this point in the history
…ams instead of the original Glide Chat Request
  • Loading branch information
roma-glushko committed May 28, 2024
1 parent e5109be commit 9a0e46e
Showing 1 changed file with 8 additions and 22 deletions.
30 changes: 8 additions & 22 deletions pkg/providers/openai/chat_stream.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,9 +141,9 @@ func (c *Client) SupportChatStream() bool {
return true
}

func (c *Client) ChatStream(ctx context.Context, req *schemas.ChatStreamRequest) (clients.ChatStream, error) {
func (c *Client) ChatStream(ctx context.Context, params *schemas.ChatParams) (clients.ChatStream, error) {
// Create a new chat request
httpRequest, err := c.makeStreamReq(ctx, req)
httpRequest, err := c.makeStreamReq(ctx, params)
if err != nil {
return nil, err
}
Expand All @@ -157,28 +157,14 @@ func (c *Client) ChatStream(ctx context.Context, req *schemas.ChatStreamRequest)
), nil
}

func (c *Client) createRequestFromStream(request *schemas.ChatStreamRequest) *ChatRequest {
func (c *Client) makeStreamReq(ctx context.Context, params *schemas.ChatParams) (*http.Request, error) {
// TODO: consider using objectpool to optimize memory allocation
chatRequest := *c.chatRequestTemplate // hoping to get a copy of the template
chatReq := *c.chatRequestTemplate // hoping to get a copy of the template
chatReq.ApplyParams(params)

chatRequest.Messages = make([]ChatMessage, 0, len(request.MessageHistory)+1)
chatReq.Stream = true

// Add items from messageHistory first and the new chat message last
for _, message := range request.MessageHistory {
chatRequest.Messages = append(chatRequest.Messages, ChatMessage{Role: message.Role, Content: message.Content})
}

chatRequest.Messages = append(chatRequest.Messages, ChatMessage{Role: request.Message.Role, Content: request.Message.Content})

return &chatRequest
}

func (c *Client) makeStreamReq(ctx context.Context, req *schemas.ChatStreamRequest) (*http.Request, error) {
chatRequest := c.createRequestFromStream(req)

chatRequest.Stream = true

rawPayload, err := json.Marshal(chatRequest)
rawPayload, err := json.Marshal(chatReq)
if err != nil {
return nil, fmt.Errorf("unable to marshal openAI chat stream request payload: %w", err)
}
Expand All @@ -198,7 +184,7 @@ func (c *Client) makeStreamReq(ctx context.Context, req *schemas.ChatStreamReque
c.logger.Debug(
"Stream chat request",
zap.String("chatURL", c.chatURL),
zap.Any("payload", chatRequest),
zap.Any("payload", chatReq),
)

return request, nil
Expand Down

0 comments on commit 9a0e46e

Please sign in to comment.