Compare commits

...

3 Commits

Author SHA1 Message Date
3c4c2b5660 fix error response code 2023-11-01 17:53:57 +08:00
a3fff93f2e hasResponse on error 2023-11-01 17:34:11 +08:00
c90a18d380 record model name 2023-11-01 17:02:30 +08:00
3 changed files with 11 additions and 5 deletions

View File

@@ -147,8 +147,8 @@ func main() {
if db.Create(&record).Error != nil {
log.Println("Error to save record:", record)
}
if record.Status != 200 && record.Response != "context canceled" {
errMessage := fmt.Sprintf("IP: %s request all upstreams error %d with %s", record.IP, record.Status, record.Response)
if record.Status != 200 {
errMessage := fmt.Sprintf("IP: %s request %s error %d with %s", record.IP, record.Model, record.Status, record.Response)
go sendFeishuMessage(errMessage)
go sendMatrixMessage(errMessage)
}

View File

@@ -55,6 +55,10 @@ func processRequest(c *gin.Context, upstream *OPENAI_UPSTREAM, record *Record, s
// record chat message from user
record.Body = string(inBody)
requestBody, requestBodyOK := ParseRequestBody(inBody)
// record if parse success
if requestBodyOK == nil {
record.Model = requestBody.Model
}
// set timeout, default is 5 second
timeout := 5 * time.Second
@@ -72,6 +76,9 @@ func processRequest(c *gin.Context, upstream *OPENAI_UPSTREAM, record *Record, s
if !haveResponse {
log.Println("Timeout upstream", upstream.Endpoint)
errCtx = errors.New("timeout")
if shouldResponse {
c.AbortWithError(502, errCtx)
}
cancel()
}
}()
@@ -95,7 +102,6 @@ func processRequest(c *gin.Context, upstream *OPENAI_UPSTREAM, record *Record, s
var contentType string
proxy.ModifyResponse = func(r *http.Response) error {
haveResponse = true
log.Println("haveResponse set to true")
record.Status = r.StatusCode
if !shouldResponse && r.StatusCode != 200 {
log.Println("upstream return not 200 and should not response", r.StatusCode)
@@ -124,10 +130,9 @@ func processRequest(c *gin.Context, upstream *OPENAI_UPSTREAM, record *Record, s
return nil
}
proxy.ErrorHandler = func(w http.ResponseWriter, r *http.Request, err error) {
haveResponse = true
log.Println("Error", err, upstream.SK, upstream.Endpoint)
log.Println("debug", r)
errCtx = err
// abort to error handle

View File

@@ -15,6 +15,7 @@ type Record struct {
CreatedAt time.Time
IP string
Body string `gorm:"serializer:json"`
Model string
Response string
ElapsedTime time.Duration
Status int