summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bot.go35
-rw-r--r--extra/twentyq.go11
-rw-r--r--tools.go6
3 files changed, 35 insertions, 17 deletions
diff --git a/bot.go b/bot.go
index 8aff41d..f6770e7 100644
--- a/bot.go
+++ b/bot.go
@@ -272,25 +272,13 @@ func roleToIcon(role string) string {
return "<" + role + ">: "
}
-func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
- botRespMode = true
- defer func() { botRespMode = false }()
- // check that there is a model set to use if is not local
- if cfg.CurrentAPI == cfg.DeepSeekChatAPI || cfg.CurrentAPI == cfg.DeepSeekCompletionAPI {
- if chatBody.Model != "deepseek-chat" && chatBody.Model != "deepseek-reasoner" {
- if err := notifyUser("bad request", "wrong deepseek model name"); err != nil {
- logger.Warn("failed ot notify user", "error", err)
- return
- }
- return
- }
- }
+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 && !resume {
+ if cfg.EnableCluedo && cluedoState != nil {
notifyUser("got in cluedo", "yay")
currentPlayer := playerOrder[0]
playerOrder = append(playerOrder[1:], currentPlayer) // Rotate turns
@@ -303,6 +291,25 @@ func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
})
}
}
+ return
+}
+
+func chatRound(userMsg, role string, tv *tview.TextView, regen, resume bool) {
+ botRespMode = true
+ defer func() { botRespMode = false }()
+ // check that there is a model set to use if is not local
+ if cfg.CurrentAPI == cfg.DeepSeekChatAPI || cfg.CurrentAPI == cfg.DeepSeekCompletionAPI {
+ if chatBody.Model != "deepseek-chat" && chatBody.Model != "deepseek-reasoner" {
+ if err := notifyUser("bad request", "wrong deepseek model name"); err != nil {
+ logger.Warn("failed ot notify user", "error", err)
+ return
+ }
+ return
+ }
+ }
+ if !resume {
+ checkGame(role, tv)
+ }
choseChunkParser()
reader, err := chunkParser.FormMsg(userMsg, role, resume)
if reader == nil || err != nil {
diff --git a/extra/twentyq.go b/extra/twentyq.go
new file mode 100644
index 0000000..30c08cc
--- /dev/null
+++ b/extra/twentyq.go
@@ -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))]
+}
diff --git a/tools.go b/tools.go
index 50b3d24..626aa02 100644
--- a/tools.go
+++ b/tools.go
@@ -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>