matrix-gptzoo/bot/gpt.go

40 lines
724 B
Go
Raw Normal View History

2023-05-17 19:51:45 +02:00
package bot
import (
"context"
"github.com/sashabaranov/go-openai"
)
type GPT struct {
client *openai.Client
}
func NewGPT(apiKey string) *GPT {
return &GPT{
client: openai.NewClient(apiKey),
}
}
func (g GPT) Complete(conv *Conversation) (string, error) {
ctx := context.Background()
msg := []openai.ChatCompletionMessage{}
for _, m := range conv.Messages {
msg = append(msg, openai.ChatCompletionMessage{
Role: m.Role,
Content: m.Content,
})
}
req := openai.ChatCompletionRequest{
2023-05-18 09:29:23 +02:00
Model: openai.GPT3Dot5Turbo,
2023-05-17 19:51:45 +02:00
Messages: msg,
}
resp, err := g.client.CreateChatCompletion(ctx, req)
if err != nil {
return "", err
}
return resp.Choices[len(resp.Choices)-1].Message.Content, nil
}