update readme.md

This commit is contained in:
2023-11-27 17:28:29 +08:00
parent fb19d8a353
commit dad4ad2b97
2 changed files with 26 additions and 48 deletions

View File

@@ -8,7 +8,7 @@
- 支持所有类型的接口 (`/v1/*`)
- 提供 Prometheus Metrics 统计接口 (`/v1/metrics`)
- 按照定义顺序请求 OpenAI 上游
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。对于其他请求使用60秒超时。
- 识别 ChatCompletions Stream 请求,针对 Stream 请求使用 5 秒超时。对于其他请求使用 60 秒超时。
- 记录完整的请求内容、使用的上游、IP 地址、响应时间以及 GPT 回复文本
- 请求出错时发送 飞书 或 Matrix 消息通知
@@ -27,37 +27,37 @@
3. 打开终端,并进入到仓库目录中。
4. 在终端中执行以下命令来编译代码:
```
make
```
这将会编译代码并生成可执行文件。
5. 编译成功后,您可以直接运行以下命令来启动负载均衡 API
```
./openai-api-route
```
默认情况下API 将会在本地的 8888 端口进行监听。
如果您希望使用不同的监听地址,可以使用 `-addr` 参数来指定,例如:
```
./openai-api-route -addr 0.0.0.0:8080
```
这将会将监听地址设置为 0.0.0.0:8080。
6. 如果数据库不存在,系统会自动创建一个名为 `db.sqlite` 的数据库文件。
如果您希望使用不同的数据库地址,可以使用 `-database` 参数来指定,例如:
```
./openai-api-route -database /path/to/database.db
```
这将会将数据库地址设置为 `/path/to/database.db`。
7. 现在,您已经成功编译并运行了负载均衡和能力 API。您可以根据需要添加上游、管理上游并使用 API 进行相关操作。
@@ -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
View File

@@ -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