Skip to content

Commit e5109be

Browse files
committed
#153: Changed the interface of chat request to pass ChatParams instead of the original Glide Chat Request
1 parent 44a550a commit e5109be

File tree

4 files changed

+25
-37
lines changed

4 files changed

+25
-37
lines changed

pkg/api/schemas/chat.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,8 @@ type ChatParams struct {
3535
// TODO(185): set other params
3636
}
3737

38-
// ChatParams returns a specific chat request params account for model-specific overrides.
39-
func (r *ChatRequest) ChatParams(modelID string, modelName string) *ChatParams {
38+
// Params returns a specific chat request params account for model-specific overrides.
39+
func (r *ChatRequest) Params(modelID string, modelName string) *ChatParams {
4040
params := &ChatParams{
4141
Messages: make([]ChatMessage, 0, len(r.MessageHistory)+1),
4242
}

pkg/providers/openai/chat.go

Lines changed: 15 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -34,41 +34,23 @@ func NewChatRequestFromConfig(cfg *Config) *ChatRequest {
3434
}
3535

3636
// Chat sends a chat request to the specified OpenAI model.
37-
func (c *Client) Chat(ctx context.Context, request *schemas.ChatRequest) (*schemas.ChatResponse, error) {
37+
func (c *Client) Chat(ctx context.Context, params *schemas.ChatParams) (*schemas.ChatResponse, error) {
3838
// Create a new chat request
39-
chatRequest := c.createRequestSchema(request)
40-
chatRequest.Stream = false
39+
// TODO: consider using objectpool to optimize memory allocation
40+
chatReq := *c.chatRequestTemplate // hoping to get a copy of the template
41+
chatReq.ApplyParams(params)
42+
43+
chatReq.Stream = false
4144

42-
chatResponse, err := c.doChatRequest(ctx, chatRequest)
45+
chatResponse, err := c.doChatRequest(ctx, &chatReq)
4346

4447
if err != nil {
4548
return nil, err
4649
}
4750

48-
if len(chatResponse.ModelResponse.Message.Content) == 0 {
49-
return nil, ErrEmptyResponse
50-
}
51-
5251
return chatResponse, nil
5352
}
5453

55-
// createRequestSchema creates a new ChatRequest object based on the given request.
56-
func (c *Client) createRequestSchema(request *schemas.ChatRequest) *ChatRequest {
57-
// TODO: consider using objectpool to optimize memory allocation
58-
chatRequest := *c.chatRequestTemplate // hoping to get a copy of the template
59-
60-
chatRequest.Messages = make([]ChatMessage, 0, len(request.MessageHistory)+1)
61-
62-
// Add items from messageHistory first and the new chat message last
63-
for _, message := range request.MessageHistory {
64-
chatRequest.Messages = append(chatRequest.Messages, ChatMessage{Role: message.Role, Content: message.Content})
65-
}
66-
67-
chatRequest.Messages = append(chatRequest.Messages, ChatMessage{Role: request.Message.Role, Content: request.Message.Content})
68-
69-
return &chatRequest
70-
}
71-
7254
func (c *Client) doChatRequest(ctx context.Context, payload *ChatRequest) (*schemas.ChatResponse, error) {
7355
// Build request payload
7456
rawPayload, err := json.Marshal(payload)
@@ -133,6 +115,12 @@ func (c *Client) doChatRequest(ctx context.Context, payload *ChatRequest) (*sche
133115
return nil, err
134116
}
135117

118+
modelChoice := chatCompletion.Choices[0]
119+
120+
if len(modelChoice.Message.Content) == 0 {
121+
return nil, ErrEmptyResponse
122+
}
123+
136124
// Map response to ChatResponse schema
137125
response := schemas.ChatResponse{
138126
ID: chatCompletion.ID,
@@ -145,8 +133,8 @@ func (c *Client) doChatRequest(ctx context.Context, payload *ChatRequest) (*sche
145133
"system_fingerprint": chatCompletion.SystemFingerprint,
146134
},
147135
Message: schemas.ChatMessage{
148-
Role: chatCompletion.Choices[0].Message.Role,
149-
Content: chatCompletion.Choices[0].Message.Content,
136+
Role: modelChoice.Message.Role,
137+
Content: modelChoice.Message.Content,
150138
},
151139
TokenUsage: schemas.TokenUsage{
152140
PromptTokens: chatCompletion.Usage.PromptTokens,

pkg/providers/openai/schemas.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ type ChatRequest struct {
2222
ResponseFormat interface{} `json:"response_format,omitempty"`
2323
}
2424

25+
func (r *ChatRequest) ApplyParams(params *schemas.ChatParams) {
26+
r.Messages = params.Messages
27+
// TODO(185): set other params
28+
}
29+
2530
// ChatCompletion
2631
// Ref: https://platform.openai.com/docs/api-reference/chat/object
2732
type ChatCompletion struct {

pkg/routers/router.go

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -82,15 +82,10 @@ func (r *LangRouter) Chat(ctx context.Context, req *schemas.ChatRequest) (*schem
8282

8383
langModel := model.(providers.LangModel)
8484

85-
// Check if there is an override in the request
86-
if req.OverrideParams != nil {
87-
// Override the message if the language model ID matches the override model ID
88-
if langModel.ID() == req.OverrideParams.ModelID {
89-
req.Message = req.OverrideParams.Message
90-
}
91-
}
85+
chatParams := req.Params(langModel.ID())
86+
87+
resp, err := langModel.Chat(ctx, chatParams)
9288

93-
resp, err := langModel.Chat(ctx, req)
9489
if err != nil {
9590
r.logger.Warn(
9691
"Lang model failed processing chat request",

0 commit comments

Comments
 (0)