From fc517c2c69d96501f1adc5a021b39b9eff22e4d7 Mon Sep 17 00:00:00 2001 From: Grail Finder Date: Wed, 20 Nov 2024 13:32:32 +0300 Subject: Chore: tools to their own file [wip] --- README.md | 2 +- bot.go | 39 --------------------------------------- main.go | 1 - models/db.go | 5 +++++ tools.go | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 65 insertions(+), 41 deletions(-) create mode 100644 tools.go 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: - -{ -"name":"get_id", -"args": "username" -} - -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: + +{ +"name":"get_id", +"args": "username" +} + +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, +} -- cgit v1.2.3