Consolidated a bunch of reused code to agents
This commit is contained in:
97
pkg/agents/console-new/execution.go
Normal file
97
pkg/agents/console-new/execution.go
Normal file
@@ -0,0 +1,97 @@
|
||||
package console_new
|
||||
|
||||
import (
|
||||
"strings"
|
||||
|
||||
gollm "gitea.stevedudenhoeffer.com/steve/go-llm"
|
||||
)
|
||||
|
||||
type execution struct {
|
||||
Command string
|
||||
Output string
|
||||
WhatILearned []string
|
||||
WhatIStillNeedToLearn []string
|
||||
}
|
||||
|
||||
const kMaxLenCommandSummary = 200
|
||||
const kMaxLenCommandOutputSummary = 200
|
||||
|
||||
func (e execution) ToGeneralMessageHistory() gollm.Message {
|
||||
if len(e.Command) > kMaxLenCommandSummary {
|
||||
e.Command = e.Command[:kMaxLenCommandSummary] + "... (truncated)"
|
||||
}
|
||||
|
||||
if len(e.Output) > kMaxLenCommandOutputSummary {
|
||||
e.Output = e.Output[:kMaxLenCommandOutputSummary] + "... (truncated)"
|
||||
}
|
||||
|
||||
text := "# " + e.Command + "\n" + e.Output
|
||||
|
||||
return gollm.Message{
|
||||
Role: gollm.RoleUser,
|
||||
Text: text,
|
||||
}
|
||||
}
|
||||
|
||||
func (e execution) ToDetailedMessageHistory() gollm.Message {
|
||||
prompt := "$ "
|
||||
if strings.HasPrefix(e.Command, "sudo ") {
|
||||
prompt = "# "
|
||||
e.Command = e.Command[5:]
|
||||
}
|
||||
|
||||
text := prompt + strings.TrimSpace(e.Command) + "\n" + e.Output
|
||||
|
||||
if len(e.WhatILearned) > 0 {
|
||||
text += "\n\nWhat I learned:\n" + strings.Join(e.WhatILearned, "\n")
|
||||
} else {
|
||||
text += "\n\nI didn't learn anything new."
|
||||
}
|
||||
|
||||
if len(e.WhatIStillNeedToLearn) > 0 {
|
||||
text += "\n\nWhat I still need to learn:\n" + strings.Join(e.WhatIStillNeedToLearn, "\n")
|
||||
} else {
|
||||
text += "\n\nI don't need to learn anything else."
|
||||
}
|
||||
|
||||
return gollm.Message{
|
||||
Role: gollm.RoleUser,
|
||||
Text: text,
|
||||
}
|
||||
}
|
||||
|
||||
type executions []execution
|
||||
|
||||
func (e executions) ToGeneralMessageHistory() []gollm.Message {
|
||||
var messages []gollm.Message
|
||||
|
||||
for _, v := range e {
|
||||
messages = append(messages, v.ToGeneralMessageHistory())
|
||||
}
|
||||
|
||||
return messages
|
||||
}
|
||||
|
||||
func (e executions) ToGeneralButLastMessageHistory() []gollm.Message {
|
||||
var messages []gollm.Message
|
||||
|
||||
for i, v := range e {
|
||||
if i == len(e)-1 {
|
||||
messages = append(messages, v.ToDetailedMessageHistory())
|
||||
break
|
||||
}
|
||||
|
||||
messages = append(messages, v.ToGeneralMessageHistory())
|
||||
}
|
||||
|
||||
return messages
|
||||
}
|
||||
func (e executions) ToDetailedMessageHistory() []gollm.Message {
|
||||
var messages []gollm.Message
|
||||
|
||||
for _, v := range e {
|
||||
messages = append(messages, v.ToDetailedMessageHistory())
|
||||
}
|
||||
|
||||
return messages
|
||||
}
|
Reference in New Issue
Block a user