]> git.giacomolli.uk - onechat/blobdiff - prompt.go
Send stored images to WhatsApp chats
[onechat] / prompt.go
index df6f17d4a0c898d6ee2a0a448a916d85c0caf3c6..0852becedd396f6e4fab0088a611eee66d4443a9 100644 (file)
--- a/prompt.go
+++ b/prompt.go
@@ -154,7 +154,9 @@ Pass area messages from mixed chats to the right child with sender, date, and
 words. Never send a WhatsApp reply drafted by a child without the user's
 agreement.
 Propose routing a source that talks only about one area to its child.
-Set or remove a route only after the user agrees.`
+Set or remove a route only after the user agrees.
+Use image_show or whatsapp_send with an image only on the user's request.
+Pass an image to a child with an [image FILE] line in tell.`
 
 // promptSubagentText is the system prompt of a subagent, from the subagent
 // prompt of the reference design: its head, then the doc of the view, without
@@ -274,6 +276,15 @@ func promptTools() []ModelTool {
                        "message": promptStringSchema("The message."),
                }),
                Strict: true,
+       }, ModelTool{
+               Type:        "function",
+               Name:        "image_show",
+               Description: "Show a stored image to the user, only when the user asks to see it. Give its stored filename, not a path.",
+               Parameters: promptObjectSchema(map[string]any{
+                       "image":   promptStringSchema("The stored image filename from an [image FILE] line."),
+                       "caption": promptStringSchema("The caption, or an empty string."),
+               }),
+               Strict: true,
        }, ModelTool{
                Type:        "function",
                Name:        "whatsapp_find",
@@ -285,11 +296,12 @@ func promptTools() []ModelTool {
        }, ModelTool{
                Type:        "function",
                Name:        "whatsapp_send",
-               Description: "Send a text message to a WhatsApp chat. Send only a message that the user asked you to send, to the chat that the user named. Give a new id for each message: a call with an id that was used gives the answer of the first call and sends nothing.",
+               Description: "Send text or a stored image with text as its caption to a WhatsApp chat. Send only a message that the user asked you to send, to the chat that the user named. Give a new id for each message: a call with an id that was used gives the answer of the first call and sends nothing.",
                Parameters: promptObjectSchema(map[string]any{
-                       "id":   promptStringSchema("A new id for this message, such as a short random word."),
-                       "chat": promptStringSchema("The ID of the chat, from whatsapp_find or from a [WhatsApp] message."),
-                       "text": promptStringSchema("The text of the message."),
+                       "id":    promptStringSchema("A new id for this message, such as a short random word."),
+                       "chat":  promptStringSchema("The ID of the chat, from whatsapp_find or from a [WhatsApp] message."),
+                       "text":  promptStringSchema("The text, or the caption when sending an image. Can be empty with an image."),
+                       "image": promptNullableStringSchema("The stored image filename from an [image FILE] line, or null for text only."),
                }),
                Strict: true,
        }, ModelTool{