update readme.md
This commit is contained in:
32
README.md
32
README.md
@@ -8,7 +8,7 @@
|
||||
- 支持所有类型的接口 (`/v1/*`)
|
||||
- 提供 Prometheus Metrics 统计接口 (`/v1/metrics`)
|
||||
- 按照定义顺序请求 OpenAI 上游
|
||||
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。对于其他请求使用60秒超时。
|
||||
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。对于其他请求使用 60 秒超时。
|
||||
- 记录完整的请求内容、使用的上游、IP 地址、响应时间以及 GPT 回复文本
|
||||
- 请求出错时发送 飞书 或 Matrix 消息通知
|
||||
|
||||
@@ -68,30 +68,28 @@
|
||||
|
||||
```
|
||||
Usage of ./openai-api-route:
|
||||
-add
|
||||
添加一个 OpenAI 上游
|
||||
-addr string
|
||||
监听地址(默认为 ":8888")
|
||||
-upstreams string
|
||||
上游配置文件(默认为 "./upstreams.yaml")
|
||||
-database string
|
||||
数据库地址(默认为 "./db.sqlite")
|
||||
-endpoint string
|
||||
OpenAI API 基地址(默认为 "https://api.openai.com/v1")
|
||||
-list
|
||||
列出所有上游
|
||||
-noauth
|
||||
不检查传入的授权头
|
||||
-sk string
|
||||
OpenAI API 密钥(sk-xxxxx)
|
||||
```
|
||||
|
||||
以下是一个 `./upstreams.yaml` 文件配置示例
|
||||
|
||||
```yaml
|
||||
- sk: "secret_key_1"
|
||||
endpoint: "https://api.openai.com/v2"
|
||||
- sk: "secret_key_2"
|
||||
endpoint: "https://api.openai.com/v1"
|
||||
timeout: 30
|
||||
```
|
||||
|
||||
请注意,程序会根据情况修改 timeout 的值
|
||||
|
||||
您可以直接运行 `./openai-api-route` 命令,如果数据库不存在,系统会自动创建。
|
||||
|
||||
### 上游管理
|
||||
|
||||
您可以使用以下命令添加一个上游:
|
||||
|
||||
```bash
|
||||
./openai-api-route -add -sk sk-xxxxx -endpoint https://api.openai.com/v1
|
||||
```
|
||||
|
||||
另外,您还可以直接编辑数据库中的 `openai_upstreams` 表进行 OpenAI 上游的增删改查管理。改动的上游需要重启负载均衡服务后才能生效。
|
||||
|
||||
22
main.go
22
main.go
@@ -17,11 +17,8 @@ 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")
|
||||
sk := flag.String("sk", "", "OpenAI API key (sk-xxxxx)")
|
||||
noauth := flag.Bool("noauth", false, "Do not check incoming authorization header")
|
||||
endpoint := flag.String("endpoint", "https://api.openai.com/v1", "OpenAI API base")
|
||||
flag.Parse()
|
||||
|
||||
log.Println("Service starting")
|
||||
@@ -48,26 +45,9 @@ func main() {
|
||||
db.AutoMigrate(&Record{})
|
||||
log.Println("Auto migrate database done")
|
||||
|
||||
if *addMode {
|
||||
if *sk == "" {
|
||||
log.Fatal("Missing --sk flag")
|
||||
}
|
||||
newUpstream := OPENAI_UPSTREAM{}
|
||||
newUpstream.SK = *sk
|
||||
newUpstream.Endpoint = *endpoint
|
||||
err = db.Create(&newUpstream).Error
|
||||
if err != nil {
|
||||
log.Fatal("Can not add upstream", err)
|
||||
}
|
||||
log.Println("Successuflly add upstream", *sk, *endpoint)
|
||||
return
|
||||
}
|
||||
|
||||
if *listMode {
|
||||
result := make([]OPENAI_UPSTREAM, 0)
|
||||
db.Find(&result)
|
||||
fmt.Println("SK\tEndpoint")
|
||||
for _, upstream := range result {
|
||||
for _, upstream := range upstreams {
|
||||
fmt.Println(upstream.SK, upstream.Endpoint)
|
||||
}
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user