feat: make slack process images
This commit is contained in:
committed by
Ettore Di Giacinto
parent
bc60dde94f
commit
0b71d8dc10
@@ -119,6 +119,20 @@ func (m Messages) Exist(content string) bool {
|
||||
return false
|
||||
}
|
||||
|
||||
func (m Messages) RemoveLastUserMessage() Messages {
|
||||
if len(m) == 0 {
|
||||
return m
|
||||
}
|
||||
|
||||
for i := len(m) - 1; i >= 0; i-- {
|
||||
if m[i].Role == UserRole {
|
||||
return append(m[:i], m[i+1:]...)
|
||||
}
|
||||
}
|
||||
|
||||
return m
|
||||
}
|
||||
|
||||
func (m Messages) Save(path string) error {
|
||||
content, err := json.MarshalIndent(m, "", " ")
|
||||
if err != nil {
|
||||
|
||||
@@ -358,14 +358,18 @@ func (a *Agent) processUserInputs(job *Job, role string) {
|
||||
} else {
|
||||
// We replace the user message with the image description
|
||||
// and add the user text to the conversation
|
||||
lastUserMessage.Content = fmt.Sprintf("The user shared an image which can be described as: %s", imageDescription)
|
||||
lastUserMessage.MultiContent = nil
|
||||
lastUserMessage.Role = "system"
|
||||
explainerMessage := openai.ChatCompletionMessage{
|
||||
Role: "system",
|
||||
Content: fmt.Sprintf("The user shared an image which can be described as: %s", imageDescription),
|
||||
}
|
||||
|
||||
// remove lastUserMessage from the conversation
|
||||
a.currentConversation = a.currentConversation.RemoveLastUserMessage()
|
||||
a.currentConversation = append(a.currentConversation, explainerMessage)
|
||||
a.currentConversation = append(a.currentConversation, openai.ChatCompletionMessage{
|
||||
Role: role,
|
||||
Content: text,
|
||||
})
|
||||
xlog.Debug("Conversation after image description", "conversation", a.currentConversation)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,14 +20,9 @@ func (a *Agent) knowledgeBaseLookup() {
|
||||
// Walk conversation from bottom to top, and find the first message of the user
|
||||
// to use it as a query to the KB
|
||||
var userMessage string
|
||||
for i := len(a.currentConversation) - 1; i >= 0; i-- {
|
||||
xlog.Info("[Knowledge Base Lookup] Conversation", "role", a.currentConversation[i].Role, "Content", a.currentConversation[i].Content)
|
||||
if a.currentConversation[i].Role == "user" {
|
||||
userMessage = a.currentConversation[i].Content
|
||||
break
|
||||
}
|
||||
}
|
||||
xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage)
|
||||
userMessage = a.currentConversation.GetLatestUserMessage().Content
|
||||
|
||||
xlog.Info("[Knowledge Base Lookup] Last user message", "agent", a.Character.Name, "message", userMessage, "lastMessage", a.currentConversation.GetLatestUserMessage())
|
||||
|
||||
if userMessage == "" {
|
||||
xlog.Info("[Knowledge Base Lookup] No user message found in conversation", "agent", a.Character.Name)
|
||||
|
||||
Reference in New Issue
Block a user