matrix-gptzoo/bot/conversation.go

70 lines
1.2 KiB
Go
Raw Normal View History

2023-05-17 19:51:45 +02:00
package bot
import "github.com/sashabaranov/go-openai"
const systemPrompt = "You are a chatbot that helps people by responding to their questions with short messages."
type Message struct {
EventID string
Role string
Content string
ReplyToID string
}
type Conversation struct {
Messages []Message
}
func NewConversation(question string) *Conversation {
return &Conversation{
Messages: []Message{
{
Role: openai.ChatMessageRoleSystem,
Content: systemPrompt,
},
{
Role: openai.ChatMessageRoleUser,
Content: question,
},
},
}
}
func (c *Conversation) Contains(EventID string) bool {
for _, m := range c.Messages {
if m.EventID == EventID {
return true
}
}
return false
}
func (c *Conversation) Add(msg Message) {
c.Messages = append(c.Messages, msg)
}
type Conversations []*Conversation
func (cs Conversations) Contains(EventID string) bool {
for _, c := range cs {
if c.Contains(EventID) {
return true
}
}
return false
}
func (cs Conversations) Add(msg Message) {
for _, c := range cs {
if c.Contains(msg.EventID) {
c.Add(msg)
return
}
}
c := NewConversation(msg.Content)
cs = append(cs, c)
}