diff options
| author | Xe Iaso <me@xeiaso.net> | 2024-09-07 12:13:43 -0400 |
|---|---|---|
| committer | Xe Iaso <me@xeiaso.net> | 2024-09-07 12:13:43 -0400 |
| commit | 6bc04732eceabc5c208394da99e3c0cd10ea53c7 (patch) | |
| tree | cdae8188a4f712eddd311faaf2a68e5adabfd30f /cmd/mimi/modules/discord/jufra/tools | |
| parent | 104aff4eb1aac99fae718728c1ddfec06d3993b2 (diff) | |
| download | x-6bc04732eceabc5c208394da99e3c0cd10ea53c7.tar.xz x-6bc04732eceabc5c208394da99e3c0cd10ea53c7.zip | |
cmd/mimi: update tool logic, prepare for generic tool interface
Signed-off-by: Xe Iaso <me@xeiaso.net>
Diffstat (limited to 'cmd/mimi/modules/discord/jufra/tools')
| -rw-r--r-- | cmd/mimi/modules/discord/jufra/tools/reply.go | 64 | ||||
| -rw-r--r-- | cmd/mimi/modules/discord/jufra/tools/tools.go | 13 |
2 files changed, 77 insertions, 0 deletions
diff --git a/cmd/mimi/modules/discord/jufra/tools/reply.go b/cmd/mimi/modules/discord/jufra/tools/reply.go new file mode 100644 index 0000000..f8dcde0 --- /dev/null +++ b/cmd/mimi/modules/discord/jufra/tools/reply.go @@ -0,0 +1,64 @@ +package tools + +import ( + "context" + "encoding/json" + "errors" + "fmt" + + "github.com/bwmarrin/discordgo" + "within.website/x/web/ollama" +) + +type replyArgs struct { + Message string `json:"message"` +} + +func (ra replyArgs) Valid() error { + if ra.Message == "" { + return errors.New("tools: replyArgs is invalid: missing message") + } + + return nil +} + +type Reply struct{} + +func (Reply) Execute(ctx context.Context, sess *discordgo.Session, mc *discordgo.MessageCreate, conv []ollama.Message, tc ollama.ToolCall) error { + var args replyArgs + + if err := json.Unmarshal(tc.Arguments, &args); err != nil { + return fmt.Errorf("error parsing reply args: %w", err) + } + + if err := args.Valid(); err != nil { + return err + } + + if _, err := sess.ChannelMessageSend(mc.ChannelID, args.Message, discordgo.WithContext(ctx)); err != nil { + return err + } + + return nil +} + +func (Reply) Describe() ollama.Function { + return ollama.Function{ + Name: "reply", + Description: "Reply to the message", + Parameters: ollama.Param{ + Type: "object", + Properties: ollama.Properties{ + "message": { + Type: "string", + Description: "The message to send", + }, + }, + Required: []string{"message"}, + }, + } +} + +var ( + _ Impl = Reply{} +) diff --git a/cmd/mimi/modules/discord/jufra/tools/tools.go b/cmd/mimi/modules/discord/jufra/tools/tools.go new file mode 100644 index 0000000..87a4cc1 --- /dev/null +++ b/cmd/mimi/modules/discord/jufra/tools/tools.go @@ -0,0 +1,13 @@ +package tools + +import ( + "context" + + "github.com/bwmarrin/discordgo" + "within.website/x/web/ollama" +) + +type Impl interface { + Execute(ctx context.Context, sess *discordgo.Session, mc *discordgo.MessageCreate, conv []ollama.Message, tc ollama.ToolCall) error + Describe() ollama.Function +} |
