mirror of https://github.com/velour/catbase.git
Compare commits
2 Commits
d9342f184e
...
2697e6a259
Author | SHA1 | Date |
---|---|---|
Chris Sexton | 2697e6a259 | |
Chris Sexton | aec464c1bf |
|
@ -6,7 +6,7 @@ import (
|
||||||
"regexp"
|
"regexp"
|
||||||
)
|
)
|
||||||
|
|
||||||
const defaultMessage = "I don't know how to respond to that. If you'd like to ask GPT, use the `gpt` command."
|
const defaultMessage = "I don't know how to respond to that. If you'd like to ask an LLM, use the `llm` command."
|
||||||
|
|
||||||
type DeadEndPlugin struct {
|
type DeadEndPlugin struct {
|
||||||
b bot.Bot
|
b bot.Bot
|
||||||
|
|
|
@ -7,7 +7,6 @@ import (
|
||||||
"github.com/velour/catbase/bot"
|
"github.com/velour/catbase/bot"
|
||||||
"github.com/velour/catbase/config"
|
"github.com/velour/catbase/config"
|
||||||
"regexp"
|
"regexp"
|
||||||
"slices"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const gpt3URL = "https://api.openai.com/v1/engines/%s/completions"
|
const gpt3URL = "https://api.openai.com/v1/engines/%s/completions"
|
||||||
|
@ -47,20 +46,20 @@ func (p *LLMPlugin) register() {
|
||||||
{
|
{
|
||||||
Kind: bot.Message, IsCmd: true,
|
Kind: bot.Message, IsCmd: true,
|
||||||
Regex: regexp.MustCompile(`(?is)^llm (?P<text>.*)`),
|
Regex: regexp.MustCompile(`(?is)^llm (?P<text>.*)`),
|
||||||
HelpText: "chat completion",
|
HelpText: "chat completion using first-available AI",
|
||||||
Handler: p.chatMessageForce,
|
Handler: p.chatMessage,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Kind: bot.Message, IsCmd: true,
|
Kind: bot.Message, IsCmd: true,
|
||||||
Regex: regexp.MustCompile(`(?is)^gpt (?P<text>.*)`),
|
Regex: regexp.MustCompile(`(?is)^gpt4 (?P<text>.*)`),
|
||||||
HelpText: "chat completion",
|
HelpText: "chat completion using OpenAI",
|
||||||
Handler: p.chatMessageForce,
|
Handler: p.gptMessage,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Kind: bot.Message, IsCmd: true,
|
Kind: bot.Message, IsCmd: true,
|
||||||
Regex: regexp.MustCompile(`(?is)^got (?P<text>.*)`),
|
Regex: regexp.MustCompile(`(?is)^llm-puke$`),
|
||||||
HelpText: "chat completion",
|
HelpText: "clear chat history",
|
||||||
Handler: p.chatMessageForce,
|
Handler: p.puke,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
p.b.RegisterTable(p, p.h)
|
p.b.RegisterTable(p, p.h)
|
||||||
|
@ -77,14 +76,6 @@ func (p *LLMPlugin) setPromptMessage(r bot.Request) bool {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *LLMPlugin) chatMessage(r bot.Request) bool {
|
func (p *LLMPlugin) chatMessage(r bot.Request) bool {
|
||||||
if slices.Contains(p.c.GetArray("gpt.silence", []string{}), r.Msg.Channel) {
|
|
||||||
log.Debug().Msgf("%s silenced", r.Msg.Channel)
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
return p.chatMessageForce(r)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (p *LLMPlugin) chatMessageForce(r bot.Request) bool {
|
|
||||||
p.chatHistory = append(p.chatHistory, chatEntry{
|
p.chatHistory = append(p.chatHistory, chatEntry{
|
||||||
Role: "user",
|
Role: "user",
|
||||||
Content: r.Values["text"],
|
Content: r.Values["text"],
|
||||||
|
@ -103,6 +94,10 @@ func (p *LLMPlugin) chatMessageForce(r bot.Request) bool {
|
||||||
} else {
|
} else {
|
||||||
log.Info().Msgf("Llama is currently down")
|
log.Info().Msgf("Llama is currently down")
|
||||||
}
|
}
|
||||||
|
return p.gptMessage(r)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (p *LLMPlugin) gptMessage(r bot.Request) bool {
|
||||||
resp, err := p.chatGPT(r.Values["text"])
|
resp, err := p.chatGPT(r.Values["text"])
|
||||||
if err != nil {
|
if err != nil {
|
||||||
resp = fmt.Sprintf("Error: %s", err)
|
resp = fmt.Sprintf("Error: %s", err)
|
||||||
|
@ -114,3 +109,10 @@ func (p *LLMPlugin) chatMessageForce(r bot.Request) bool {
|
||||||
p.b.Send(r.Conn, bot.Message, r.Msg.Channel, resp)
|
p.b.Send(r.Conn, bot.Message, r.Msg.Channel, resp)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (p *LLMPlugin) puke(r bot.Request) bool {
|
||||||
|
resp := fmt.Sprintf("I just forgot %d lines of chat history.", len(p.chatHistory))
|
||||||
|
p.chatHistory = []chatEntry{}
|
||||||
|
p.b.Send(r.Conn, bot.Message, r.Msg.Channel, resp)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue