@@ -141,9 +141,9 @@ func (c *Client) SupportChatStream() bool {
141
141
return true
142
142
}
143
143
144
- func (c * Client ) ChatStream (ctx context.Context , req * schemas.ChatStreamRequest ) (clients.ChatStream , error ) {
144
+ func (c * Client ) ChatStream (ctx context.Context , params * schemas.ChatParams ) (clients.ChatStream , error ) {
145
145
// Create a new chat request
146
- httpRequest , err := c .makeStreamReq (ctx , req )
146
+ httpRequest , err := c .makeStreamReq (ctx , params )
147
147
if err != nil {
148
148
return nil , err
149
149
}
@@ -157,28 +157,14 @@ func (c *Client) ChatStream(ctx context.Context, req *schemas.ChatStreamRequest)
157
157
), nil
158
158
}
159
159
160
- func (c * Client ) createRequestFromStream ( request * schemas.ChatStreamRequest ) * ChatRequest {
160
+ func (c * Client ) makeStreamReq ( ctx context. Context , params * schemas.ChatParams ) ( * http. Request , error ) {
161
161
// TODO: consider using objectpool to optimize memory allocation
162
- chatRequest := * c .chatRequestTemplate // hoping to get a copy of the template
162
+ chatReq := * c .chatRequestTemplate // hoping to get a copy of the template
163
+ chatReq .ApplyParams (params )
163
164
164
- chatRequest . Messages = make ([] ChatMessage , 0 , len ( request . MessageHistory ) + 1 )
165
+ chatReq . Stream = true
165
166
166
- // Add items from messageHistory first and the new chat message last
167
- for _ , message := range request .MessageHistory {
168
- chatRequest .Messages = append (chatRequest .Messages , ChatMessage {Role : message .Role , Content : message .Content })
169
- }
170
-
171
- chatRequest .Messages = append (chatRequest .Messages , ChatMessage {Role : request .Message .Role , Content : request .Message .Content })
172
-
173
- return & chatRequest
174
- }
175
-
176
- func (c * Client ) makeStreamReq (ctx context.Context , req * schemas.ChatStreamRequest ) (* http.Request , error ) {
177
- chatRequest := c .createRequestFromStream (req )
178
-
179
- chatRequest .Stream = true
180
-
181
- rawPayload , err := json .Marshal (chatRequest )
167
+ rawPayload , err := json .Marshal (chatReq )
182
168
if err != nil {
183
169
return nil , fmt .Errorf ("unable to marshal openAI chat stream request payload: %w" , err )
184
170
}
@@ -198,7 +184,7 @@ func (c *Client) makeStreamReq(ctx context.Context, req *schemas.ChatStreamReque
198
184
c .logger .Debug (
199
185
"Stream chat request" ,
200
186
zap .String ("chatURL" , c .chatURL ),
201
- zap .Any ("payload" , chatRequest ),
187
+ zap .Any ("payload" , chatReq ),
202
188
)
203
189
204
190
return request , nil
0 commit comments