Enha: consolidate assistant messages only
This commit is contained in:
4
bot.go
4
bot.go
@@ -195,8 +195,8 @@ func consolidateAssistantMessages(messages []models.RoleMsg) []models.RoleMsg {
|
|||||||
isBuildingAssistantMsg := false
|
isBuildingAssistantMsg := false
|
||||||
for i := 0; i < len(messages); i++ {
|
for i := 0; i < len(messages); i++ {
|
||||||
msg := messages[i]
|
msg := messages[i]
|
||||||
// what about the case with multiplpe assistant roles?
|
// assistant role only
|
||||||
if msg.Role == cfg.AssistantRole || msg.Role == cfg.WriteNextMsgAsCompletionAgent {
|
if msg.Role == cfg.AssistantRole {
|
||||||
// If this is an assistant message, start or continue building
|
// If this is an assistant message, start or continue building
|
||||||
if !isBuildingAssistantMsg {
|
if !isBuildingAssistantMsg {
|
||||||
// Start accumulating assistant message
|
// Start accumulating assistant message
|
||||||
|
|||||||
31
llm.go
31
llm.go
@@ -19,18 +19,19 @@ func addPersonaSuffixToLastUserMessage(messages []models.RoleMsg, persona string
|
|||||||
if len(messages) == 0 {
|
if len(messages) == 0 {
|
||||||
return messages
|
return messages
|
||||||
}
|
}
|
||||||
|
// // Find the last user message to modify
|
||||||
// Find the last user message to modify
|
// for i := len(messages) - 1; i >= 0; i-- {
|
||||||
for i := len(messages) - 1; i >= 0; i-- {
|
// if messages[i].Role == cfg.UserRole || messages[i].Role == "user" {
|
||||||
if messages[i].Role == cfg.UserRole || messages[i].Role == "user" {
|
// // Create a copy of the message to avoid modifying the original
|
||||||
// Create a copy of the message to avoid modifying the original
|
// modifiedMsg := messages[i]
|
||||||
modifiedMsg := messages[i]
|
// modifiedMsg.Content = modifiedMsg.Content + "\n" + persona + ":"
|
||||||
modifiedMsg.Content = modifiedMsg.Content + "\n" + persona + ":"
|
// messages[i] = modifiedMsg
|
||||||
messages[i] = modifiedMsg
|
// break
|
||||||
break
|
// }
|
||||||
}
|
// }
|
||||||
}
|
modifiedMsg := messages[len(messages)-1]
|
||||||
|
modifiedMsg.Content = modifiedMsg.Content + "\n" + persona + ":\n"
|
||||||
|
messages[len(messages)-1] = modifiedMsg
|
||||||
return messages
|
return messages
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -329,14 +330,10 @@ func (op LCPChat) FormMsg(msg, role string, resume bool) (io.Reader, error) {
|
|||||||
}
|
}
|
||||||
// openai /v1/chat does not support custom roles; needs to be user, assistant, system
|
// openai /v1/chat does not support custom roles; needs to be user, assistant, system
|
||||||
filteredMessages, botPersona := filterMessagesForCurrentCharacter(chatBody.Messages)
|
filteredMessages, botPersona := filterMessagesForCurrentCharacter(chatBody.Messages)
|
||||||
|
|
||||||
// Add persona suffix to the last user message to indicate who the assistant should reply as
|
// Add persona suffix to the last user message to indicate who the assistant should reply as
|
||||||
if !resume && cfg.WriteNextMsgAsCompletionAgent != "" {
|
if !resume {
|
||||||
filteredMessages = addPersonaSuffixToLastUserMessage(filteredMessages, cfg.WriteNextMsgAsCompletionAgent)
|
|
||||||
} else if !resume {
|
|
||||||
filteredMessages = addPersonaSuffixToLastUserMessage(filteredMessages, botPersona)
|
filteredMessages = addPersonaSuffixToLastUserMessage(filteredMessages, botPersona)
|
||||||
}
|
}
|
||||||
|
|
||||||
bodyCopy := &models.ChatBody{
|
bodyCopy := &models.ChatBody{
|
||||||
Messages: make([]models.RoleMsg, len(filteredMessages)),
|
Messages: make([]models.RoleMsg, len(filteredMessages)),
|
||||||
Model: chatBody.Model,
|
Model: chatBody.Model,
|
||||||
|
|||||||
Reference in New Issue
Block a user