From a15a9d1653d0a41a7436b5482b5c987c65d13073 Mon Sep 17 00:00:00 2001 From: gabrielluizsf Date: Fri, 24 May 2024 16:04:17 -0300 Subject: [PATCH] adding chat moderator example --- example/chat.go | 46 ++++++++++++++++++++++++++++++++++++++++++++-- example/main.go | 4 ++++ 2 files changed, 48 insertions(+), 2 deletions(-) diff --git a/example/chat.go b/example/chat.go index 538257d..3e61b30 100644 --- a/example/chat.go +++ b/example/chat.go @@ -2,7 +2,9 @@ package main import ( "encoding/json" + "fmt" "log" + "strings" "github.com/Simplou/openai" ) @@ -73,7 +75,7 @@ func chatByEmbedding(largeText string, query string) { Model: "text-embedding-ada-002", Input: chunks, }) - if err != nil{ + if err != nil { return &openai.EmbeddingResponse[[]float64]{}, nil } return emb, nil @@ -103,8 +105,48 @@ func chatByEmbedding(largeText string, query string) { relevantChunks = append(relevantChunks, chunks[i]) } summary, err := openai.ChunksSummary(client, httpClient, relevantChunks, query) - if err != nil{ + if err != nil { log.Println(err) } log.Println(summary) } + +func chatModerator(customerMessage string) { + moderation, err := openai.Moderator(client, httpClient, &openai.ModerationRequest[string]{ + Input: customerMessage, + }) + if err != nil { + log.Println(err) + } + categories := make([]string, 0) + for _, v := range moderation.Results { + if v.Flagged { + for category, value := range v.Categories { + if value { + categories = append(categories, category) + } + } + } + } + if len(categories) == 0 { + res, err := openai.ChatCompletion[openai.DefaultMessages]( + client, + httpClient, + &openai.CompletionRequest[openai.DefaultMessages]{ + Model: "gpt-3.5-turbo", + Messages: openai.DefaultMessages{ + {Role: "user", Content: customerMessage}, + }, + }, + ) + if err != nil { + log.Println(err) + } + log.Println(res.Choices[0].Message.Content) + } else { + s := strings.Join(categories, ", ") + moderatorMessage := fmt.Sprintf("Your statement contains several disrespectful things: (%s)", s) + log.Println(moderatorMessage) + } + +} diff --git a/example/main.go b/example/main.go index 620b467..c848f02 100644 --- a/example/main.go +++ b/example/main.go @@ -24,6 +24,10 @@ func main() { `, "oi, o que é o actor paradigm?", ) + badSentence := "I want to kill them." + query := "Hi, could you please explain what the actor paradigm is?" + chatModerator(badSentence) + chatModerator(query) //functionCall() //tts() //whisper()