upstreams.yaml

This commit is contained in:
2023-11-27 17:19:08 +08:00
parent 4125c78f33
commit fb19d8a353
5 changed files with 41 additions and 19 deletions

1
.gitignore vendored
View File

@@ -1,2 +1,3 @@
openai-api-route
db.sqlite
/upstreams.yaml

View File

@@ -15,6 +15,7 @@ import (
func main() {
dbAddr := flag.String("database", "./db.sqlite", "Database address")
upstreamsFile := flag.String("upstreams", "./upstreams.yaml", "Upstreams file")
listenAddr := flag.String("addr", ":8888", "Listening address")
addMode := flag.Bool("add", false, "Add an OpenAI upstream")
listMode := flag.Bool("list", false, "List all upstream")
@@ -35,8 +36,7 @@ func main() {
}
// load all upstreams
upstreams := make([]OPENAI_UPSTREAM, 0)
db.Find(&upstreams)
upstreams := readUpstreams(*upstreamsFile)
log.Println("Load upstreams number:", len(upstreams))
err = initconfig(db)

View File

@@ -20,7 +20,7 @@ import (
func processRequest(c *gin.Context, upstream *OPENAI_UPSTREAM, record *Record, shouldResponse bool) error {
var errCtx error
record.UpstreamID = upstream.ID
record.UpstreamEndpoint = upstream.Endpoint
record.Response = ""
// [TODO] record request body

View File

@@ -11,17 +11,18 @@ import (
)
type Record struct {
ID int64 `gorm:"primaryKey,autoIncrement"`
CreatedAt time.Time
IP string
Body string `gorm:"serializer:json"`
Model string
Response string
ResponseTime time.Duration
ElapsedTime time.Duration
Status int
UpstreamID uint
Authorization string
ID int64 `gorm:"primaryKey,autoIncrement"`
UpstreamEndpoint string
CreatedAt time.Time
IP string
Body string `gorm:"serializer:json"`
Model string
Response string
ResponseTime time.Duration
ElapsedTime time.Duration
Status int
UpstreamID uint
Authorization string
}
type StreamModeChunk struct {

View File

@@ -1,13 +1,33 @@
package main
import (
"gorm.io/gorm"
"log"
"os"
"gopkg.in/yaml.v3"
)
// one openai upstream contain a pair of key and endpoint
type OPENAI_UPSTREAM struct {
gorm.Model
SK string `gorm:"index:idx_sk_endpoint,unique"` // key
Endpoint string `gorm:"index:idx_sk_endpoint,unique"` // endpoint
Timeout int64 // timeout in seconds
SK string `yaml:"sk"`
Endpoint string `yaml:"endpoint"`
Timeout int64 `yaml:"timeout"`
}
func readUpstreams(filepath string) []OPENAI_UPSTREAM {
var upstreams []OPENAI_UPSTREAM
// read yaml file
data, err := os.ReadFile(filepath)
if err != nil {
log.Fatalf("Error reading YAML file: %s", err)
}
// Unmarshal the YAML into the upstreams slice
err = yaml.Unmarshal(data, &upstreams)
if err != nil {
log.Fatalf("Error unmarshaling YAML: %s", err)
}
return upstreams
}