diff options
Diffstat (limited to 'agent/webagent.go')
| -rw-r--r-- | agent/webagent.go | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/agent/webagent.go b/agent/webagent.go new file mode 100644 index 0000000..0087e8e --- /dev/null +++ b/agent/webagent.go @@ -0,0 +1,34 @@ +package agent + +import ( + "fmt" + "log/slog" +) + +// WebAgentB is a simple agent that applies formatting functions +type WebAgentB struct { + *AgentClient + sysprompt string + log slog.Logger +} + +// NewWebAgentB creates a WebAgentB that uses the given formatting function +func NewWebAgentB(sysprompt string) *WebAgentB { + return &WebAgentB{sysprompt: sysprompt} +} + +// Process applies the formatting function to raw output +func (a *WebAgentB) Process(args map[string]string, rawOutput []byte) []byte { + msg, err := a.FormMsg(a.sysprompt, + fmt.Sprintf("request:\n%+v\ntool response:\n%v", args, string(rawOutput))) + if err != nil { + a.log.Error("failed to process the request", "error", err) + return []byte("failed to process the request; err: " + err.Error()) + } + resp, err := a.LLMRequest(msg) + if err != nil { + a.log.Error("failed to process the request", "error", err) + return []byte("failed to process the request; err: " + err.Error()) + } + return resp +} |
