record full request body
This commit is contained in:
44
record.go
44
record.go
@@ -1,51 +1,19 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
type UserMessage struct {
|
||||
type RequestRecord struct {
|
||||
gorm.Model
|
||||
ModelName string
|
||||
Content string
|
||||
}
|
||||
|
||||
// sturcture to parse request
|
||||
type ChatRequest struct {
|
||||
Model string `json:"model"`
|
||||
Messages []Message `json:"messages"`
|
||||
}
|
||||
type Message struct {
|
||||
Content string `json:"content"`
|
||||
Body string
|
||||
}
|
||||
|
||||
func recordUserMessage(c *gin.Context, db *gorm.DB, body []byte) {
|
||||
bodyJson := ChatRequest{}
|
||||
err := json.Unmarshal(body, &bodyJson)
|
||||
if err != nil {
|
||||
c.AbortWithError(502, err)
|
||||
return
|
||||
bodyStr := string(body)
|
||||
requestRecord := RequestRecord{
|
||||
Body: bodyStr,
|
||||
}
|
||||
model := bodyJson.Model
|
||||
if !strings.HasPrefix(model, "gpt-") {
|
||||
return
|
||||
}
|
||||
// get message content
|
||||
if len(bodyJson.Messages) == 0 {
|
||||
return
|
||||
}
|
||||
content := bodyJson.Messages[len(bodyJson.Messages)-1].Content
|
||||
|
||||
log.Println("Record user message", model, content)
|
||||
|
||||
userMessage := UserMessage{
|
||||
ModelName: model,
|
||||
Content: content,
|
||||
}
|
||||
db.Create(&userMessage)
|
||||
db.Create(&requestRecord)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user