Fix: tool description

This commit is contained in:
Grail Finder
2025-05-01 07:08:03 +03:00
parent d2e4846835
commit 10cca9037f
3 changed files with 38 additions and 20 deletions

41
bot.go
View File

@@ -272,6 +272,28 @@ func roleToIcon(role string) string {
return "<" + role + ">: "
}
func checkGame(role string, tv *tview.TextView) {
// Handle Cluedo game flow
// should go before form msg, since formmsg takes chatBody and makes ioreader out of it
// role is almost always user, unless it's regen or resume
// cannot get in this block, since cluedoState is nil;
// check if cfg.EnableCluedo is true and init the cluedo state; ai!
if cfg.EnableCluedo && cluedoState != nil {
notifyUser("got in cluedo", "yay")
currentPlayer := playerOrder[0]
playerOrder = append(playerOrder[1:], currentPlayer) // Rotate turns
if role == cfg.UserRole {
fmt.Fprintf(tv, "Your (%s) cards: %s\n", currentPlayer, cluedoState.GetPlayerCards(currentPlayer))
} else {
chatBody.Messages = append(chatBody.Messages, models.RoleMsg{
Role: cfg.ToolRole,
Content: cluedoState.GetPlayerCards(currentPlayer),
})
}
}
return
}
func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
botRespMode = true
defer func() { botRespMode = false }()
@@ -285,23 +307,8 @@ func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
return
}
}
// Handle Cluedo game flow
// should go before form msg, since formmsg takes chatBody and makes ioreader out of it
// role is almost always user, unless it's regen or resume
// cannot get in this block, since cluedoState is nil;
// check if cfg.EnableCluedo is true and init the cluedo state; ai!
if cfg.EnableCluedo && cluedoState != nil && !resume {
notifyUser("got in cluedo", "yay")
currentPlayer := playerOrder[0]
playerOrder = append(playerOrder[1:], currentPlayer) // Rotate turns
if role == cfg.UserRole {
fmt.Fprintf(tv, "Your (%s) cards: %s\n", currentPlayer, cluedoState.GetPlayerCards(currentPlayer))
} else {
chatBody.Messages = append(chatBody.Messages, models.RoleMsg{
Role: cfg.ToolRole,
Content: cluedoState.GetPlayerCards(currentPlayer),
})
}
if !resume {
checkGame(role, tv)
}
choseChunkParser()
reader, err := chunkParser.FormMsg(userMsg, role, resume)

11
extra/twentyq.go Normal file
View File

@@ -0,0 +1,11 @@
package extra
import "math/rand"
var (
chars = []string{"Shrek", "Garfield", "Jack the Ripper"}
)
func GetRandomChar() string {
return chars[rand.Intn(len(chars))]
}

View File

@@ -26,7 +26,7 @@ Your current tools:
[
{
"name":"recall",
"args": "topic",
"args": ["topic"],
"when_to_use": "when asked about topic that user previously asked to memorise"
},
{
@@ -36,7 +36,7 @@ Your current tools:
},
{
"name":"recall_topics",
"args": null,
"args": [],
"when_to_use": "to see what topics are saved in memory"
}
]
@@ -46,7 +46,7 @@ To make a function call return a json object within __tool_call__ tags;
__tool_call__
{
"name":"recall",
"args": "Adam's number"
"args": ["Adam's number"]
}
__tool_call__
</example_request>