-
Notifications
You must be signed in to change notification settings - Fork 59
/
moderation.go
60 lines (49 loc) · 1.28 KB
/
moderation.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
package proxy
import (
"encoding/json"
goopenai "github.com/sashabaranov/go-openai"
"go.uber.org/zap"
"go.uber.org/zap/zapcore"
)
type ModerationRequest struct {
Input any `json:"input"`
Model string `json:"model"`
}
func logCreateModerationRequest(log *zap.Logger, data []byte, prod, private bool) {
mr := &ModerationRequest{}
err := json.Unmarshal(data, mr)
if err != nil {
logError(log, "error when unmarshalling create moderation request", prod, err)
return
}
if prod {
fields := []zapcore.Field{}
if !private {
strInput, ok := mr.Input.(string)
if ok {
fields = append(fields, zap.String("input", strInput))
}
arrInput, ok := mr.Input.([]interface{})
if ok {
fields = append(fields, zap.Any("input", arrInput))
}
}
log.Info("openai create moderation request", fields...)
}
}
func logCreateModerationResponse(log *zap.Logger, data []byte, prod bool) {
mr := &goopenai.ModerationResponse{}
err := json.Unmarshal(data, mr)
if err != nil {
logError(log, "error when unmarshalling create moderation response", prod, err)
return
}
if prod {
fields := []zapcore.Field{
zap.String("id", mr.ID),
zap.String("model", mr.Model),
zap.Any("results", mr.Results),
}
log.Info("openai create moderation response", fields...)
}
}