summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGrail Finder <wohilas@gmail.com>2024-11-20 13:32:32 +0300
committerGrail Finder <wohilas@gmail.com>2024-11-20 13:33:04 +0300
commitfc517c2c69d96501f1adc5a021b39b9eff22e4d7 (patch)
tree669bb1a364359bb8565b7fed7b1828593395958d
parent8ae4d075c4d043eae604af9cad0cf5e571420a61 (diff)
Chore: tools to their own file [wip]
-rw-r--r--README.md2
-rw-r--r--bot.go39
-rw-r--r--main.go1
-rw-r--r--models/db.go5
-rw-r--r--tools.go59
5 files changed, 65 insertions, 41 deletions
diff --git a/README.md b/README.md
index 5d071f5..61e0357 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@
- regen last message; +
- delete last message; +
- edit message? (including from bot); +
-- ability to copy message;
+- ability to copy message; +
- aility to copy selected text; (I can do it though vim mode of the terminal, so +)
- menu with old chats (chat files); +
- fullscreen textarea option (for long prompt);
diff --git a/bot.go b/bot.go
index 4587c08..2037e7e 100644
--- a/bot.go
+++ b/bot.go
@@ -44,47 +44,8 @@ var (
{Role: assistantRole, Content: defaultFirstMsg},
}
interruptResp = false
- systemMsg = `You're a helpful assistant.
-# Tools
-You can do functions call if needed.
-Your current tools:
-<tools>
-{
-"name":"get_id",
-"args": "username"
-}
-</tools>
-To make a function call return a json object within __tool_call__ tags;
-Example:
-__tool_call__
-{
-"name":"get_id",
-"args": "Adam"
-}
-__tool_call___
-When making function call avoid typing anything else. 'tool' user will respond with the results of the call.
-After that you are free to respond to the user.
-`
)
-// predifine funcs
-func getUserDetails(id ...string) map[string]any {
- // db query
- // return DB[id[0]]
- return map[string]any{
- "username": "fm11",
- "id": 24983,
- "reputation": 911,
- "balance": 214.73,
- }
-}
-
-type fnSig func(...string) map[string]any
-
-var fnMap = map[string]fnSig{
- "get_id": getUserDetails,
-}
-
// ====
func getUserInput(userPrompt string) string {
diff --git a/main.go b/main.go
index 8e20381..6b38330 100644
--- a/main.go
+++ b/main.go
@@ -172,7 +172,6 @@ func main() {
return nil
}
if event.Key() == tcell.KeyF3 {
- // TODO: delete last n messages
// modal window with input field
chatBody.Messages = chatBody.Messages[:len(chatBody.Messages)-1]
textView.SetText(chatToText(showSystemMsgs))
diff --git a/models/db.go b/models/db.go
index afd4b46..e798cdc 100644
--- a/models/db.go
+++ b/models/db.go
@@ -20,3 +20,8 @@ func (c Chat) ToHistory() ([]MessagesStory, error) {
}
return resp, nil
}
+
+type Memory struct {
+ Topic string `db:"topic" json:"topic"`
+ Data string `db:"data" json:"data"`
+}
diff --git a/tools.go b/tools.go
new file mode 100644
index 0000000..82f07b3
--- /dev/null
+++ b/tools.go
@@ -0,0 +1,59 @@
+package main
+
+var (
+ // TODO: form that message based on existing funcs
+ systemMsg = `You're a helpful assistant.
+# Tools
+You can do functions call if needed.
+Your current tools:
+<tools>
+{
+"name":"get_id",
+"args": "username"
+}
+</tools>
+To make a function call return a json object within __tool_call__ tags;
+Example:
+__tool_call__
+{
+"name":"get_id",
+"args": "Adam"
+}
+__tool_call__
+When making function call avoid typing anything else. 'tool' user will respond with the results of the call.
+After that you are free to respond to the user.
+`
+)
+
+func memorize(topic, info string) {
+ //
+}
+
+func recall(topic string) string {
+ //
+ return ""
+}
+
+func recallTopics() []string {
+ return []string{}
+}
+
+func fullMemoryLoad() {}
+
+// predifine funcs
+func getUserDetails(id ...string) map[string]any {
+ // db query
+ // return DB[id[0]]
+ return map[string]any{
+ "username": "fm11",
+ "id": 24983,
+ "reputation": 911,
+ "balance": 214.73,
+ }
+}
+
+type fnSig func(...string) map[string]any
+
+var fnMap = map[string]fnSig{
+ "get_id": getUserDetails,
+}