Fix the bug that does not adapt to the new API for obtaining the model list.
Browse files
README.md
CHANGED
|
@@ -94,6 +94,11 @@ api_keys:
|
|
| 94 |
AUTO_RETRY: true # 是否自动重试,自动重试下一个提供商,true 为自动重试,false 为不自动重试,默认为 true
|
| 95 |
```
|
| 96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
## Docker Local Deployment
|
| 98 |
|
| 99 |
Start the container
|
|
@@ -119,6 +124,8 @@ services:
|
|
| 119 |
- ./api.yaml:/home/api.yaml
|
| 120 |
```
|
| 121 |
|
|
|
|
|
|
|
| 122 |
Run Docker Compose container in the background
|
| 123 |
|
| 124 |
```bash
|
|
|
|
| 94 |
AUTO_RETRY: true # 是否自动重试,自动重试下一个提供商,true 为自动重试,false 为不自动重试,默认为 true
|
| 95 |
```
|
| 96 |
|
| 97 |
+
## 环境变量
|
| 98 |
+
|
| 99 |
+
- CONFIG_URL: 配置文件的下载地址,可以是本地文件,也可以是远程文件,选填
|
| 100 |
+
- TIMEOUT: 请求超时时间,默认为 20 秒,超时时间可以控制当一个渠道没有响应时,切换下一个渠道需要的时间。选填
|
| 101 |
+
|
| 102 |
## Docker Local Deployment
|
| 103 |
|
| 104 |
Start the container
|
|
|
|
| 124 |
- ./api.yaml:/home/api.yaml
|
| 125 |
```
|
| 126 |
|
| 127 |
+
CONFIG_URL 就是可以自动下载远程的配置文件。比如你在某个平台不方便修改配置文件,可以把配置文件传到某个托管服务,可以提供直链给 uni-api 下载,CONFIG_URL 就是这个直链。
|
| 128 |
+
|
| 129 |
Run Docker Compose container in the background
|
| 130 |
|
| 131 |
```bash
|
main.py
CHANGED
|
@@ -20,7 +20,9 @@ from urllib.parse import urlparse
|
|
| 20 |
@asynccontextmanager
|
| 21 |
async def lifespan(app: FastAPI):
|
| 22 |
# 启动时的代码
|
| 23 |
-
|
|
|
|
|
|
|
| 24 |
default_headers = {
|
| 25 |
"User-Agent": "curl/7.68.0", # 模拟 curl 的 User-Agent
|
| 26 |
"Accept": "*/*", # curl 的默认 Accept 头
|
|
@@ -239,7 +241,7 @@ async def request_model(request: Union[RequestModel, ImageGenerationRequest], to
|
|
| 239 |
async def options_handler():
|
| 240 |
return JSONResponse(status_code=200, content={"detail": "OPTIONS allowed"})
|
| 241 |
|
| 242 |
-
@app.
|
| 243 |
async def list_models(token: str = Depends(verify_api_key)):
|
| 244 |
models = post_all_models(token, app.state.config, app.state.api_list)
|
| 245 |
return JSONResponse(content={
|
|
@@ -247,14 +249,6 @@ async def list_models(token: str = Depends(verify_api_key)):
|
|
| 247 |
"data": models
|
| 248 |
})
|
| 249 |
|
| 250 |
-
@app.get("/v1/models")
|
| 251 |
-
async def list_models():
|
| 252 |
-
models = get_all_models(config=app.state.config)
|
| 253 |
-
return JSONResponse(content={
|
| 254 |
-
"object": "list",
|
| 255 |
-
"data": models
|
| 256 |
-
})
|
| 257 |
-
|
| 258 |
@app.post("/v1/images/generations")
|
| 259 |
async def images_generations(
|
| 260 |
request: ImageGenerationRequest,
|
|
|
|
| 20 |
@asynccontextmanager
|
| 21 |
async def lifespan(app: FastAPI):
|
| 22 |
# 启动时的代码
|
| 23 |
+
import os
|
| 24 |
+
TIMEOUT = os.getenv("TIMEOUT", 20)
|
| 25 |
+
timeout = httpx.Timeout(connect=15.0, read=TIMEOUT, write=30.0, pool=30.0)
|
| 26 |
default_headers = {
|
| 27 |
"User-Agent": "curl/7.68.0", # 模拟 curl 的 User-Agent
|
| 28 |
"Accept": "*/*", # curl 的默认 Accept 头
|
|
|
|
| 241 |
async def options_handler():
|
| 242 |
return JSONResponse(status_code=200, content={"detail": "OPTIONS allowed"})
|
| 243 |
|
| 244 |
+
@app.get("/v1/models")
|
| 245 |
async def list_models(token: str = Depends(verify_api_key)):
|
| 246 |
models = post_all_models(token, app.state.config, app.state.api_list)
|
| 247 |
return JSONResponse(content={
|
|
|
|
| 249 |
"data": models
|
| 250 |
})
|
| 251 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 252 |
@app.post("/v1/images/generations")
|
| 253 |
async def images_generations(
|
| 254 |
request: ImageGenerationRequest,
|