Add get models endpoint.
Browse files
main.py
CHANGED
|
@@ -8,7 +8,7 @@ from contextlib import asynccontextmanager
|
|
| 8 |
from fastapi import FastAPI, HTTPException, Depends
|
| 9 |
|
| 10 |
from models import RequestModel
|
| 11 |
-
from utils import config, api_keys_db, api_list, error_handling_wrapper, get_all_models, verify_api_key
|
| 12 |
from request import get_payload
|
| 13 |
from response import fetch_response, fetch_response_stream
|
| 14 |
|
|
@@ -160,7 +160,15 @@ async def options_handler():
|
|
| 160 |
|
| 161 |
@app.post("/v1/models")
|
| 162 |
async def list_models(token: str = Depends(verify_api_key)):
|
| 163 |
-
models =
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 164 |
return {
|
| 165 |
"object": "list",
|
| 166 |
"data": models
|
|
|
|
| 8 |
from fastapi import FastAPI, HTTPException, Depends
|
| 9 |
|
| 10 |
from models import RequestModel
|
| 11 |
+
from utils import config, api_keys_db, api_list, error_handling_wrapper, get_all_models, verify_api_key, post_all_models
|
| 12 |
from request import get_payload
|
| 13 |
from response import fetch_response, fetch_response_stream
|
| 14 |
|
|
|
|
| 160 |
|
| 161 |
@app.post("/v1/models")
|
| 162 |
async def list_models(token: str = Depends(verify_api_key)):
|
| 163 |
+
models = post_all_models(token)
|
| 164 |
+
return {
|
| 165 |
+
"object": "list",
|
| 166 |
+
"data": models
|
| 167 |
+
}
|
| 168 |
+
|
| 169 |
+
@app.get("/v1/models")
|
| 170 |
+
async def list_models():
|
| 171 |
+
models = get_all_models()
|
| 172 |
return {
|
| 173 |
"object": "list",
|
| 174 |
"data": models
|
utils.py
CHANGED
|
@@ -61,7 +61,7 @@ async def error_handling_wrapper(generator, status_code=200):
|
|
| 61 |
# 处理生成器为空的情况
|
| 62 |
return []
|
| 63 |
|
| 64 |
-
def
|
| 65 |
all_models = []
|
| 66 |
unique_models = set()
|
| 67 |
|
|
@@ -84,7 +84,8 @@ def get_all_models(token):
|
|
| 84 |
"id": model_item,
|
| 85 |
"object": "model",
|
| 86 |
"created": 1720524448858,
|
| 87 |
-
"owned_by":
|
|
|
|
| 88 |
}
|
| 89 |
all_models.append(model_info)
|
| 90 |
else:
|
|
@@ -98,7 +99,7 @@ def get_all_models(token):
|
|
| 98 |
"id": model_item,
|
| 99 |
"object": "model",
|
| 100 |
"created": 1720524448858,
|
| 101 |
-
"owned_by":
|
| 102 |
}
|
| 103 |
all_models.append(model_info)
|
| 104 |
continue
|
|
@@ -112,18 +113,24 @@ def get_all_models(token):
|
|
| 112 |
"owned_by": model
|
| 113 |
}
|
| 114 |
all_models.append(model_info)
|
| 115 |
-
|
| 116 |
-
|
| 117 |
-
|
| 118 |
-
|
| 119 |
-
|
| 120 |
-
|
| 121 |
-
|
| 122 |
-
|
| 123 |
-
|
| 124 |
-
|
| 125 |
-
|
| 126 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 127 |
|
| 128 |
return all_models
|
| 129 |
|
|
|
|
| 61 |
# 处理生成器为空的情况
|
| 62 |
return []
|
| 63 |
|
| 64 |
+
def post_all_models(token):
|
| 65 |
all_models = []
|
| 66 |
unique_models = set()
|
| 67 |
|
|
|
|
| 84 |
"id": model_item,
|
| 85 |
"object": "model",
|
| 86 |
"created": 1720524448858,
|
| 87 |
+
"owned_by": "uni-api"
|
| 88 |
+
# "owned_by": provider_item['provider']
|
| 89 |
}
|
| 90 |
all_models.append(model_info)
|
| 91 |
else:
|
|
|
|
| 99 |
"id": model_item,
|
| 100 |
"object": "model",
|
| 101 |
"created": 1720524448858,
|
| 102 |
+
"owned_by": "uni-api"
|
| 103 |
}
|
| 104 |
all_models.append(model_info)
|
| 105 |
continue
|
|
|
|
| 113 |
"owned_by": model
|
| 114 |
}
|
| 115 |
all_models.append(model_info)
|
| 116 |
+
|
| 117 |
+
return all_models
|
| 118 |
+
|
| 119 |
+
def get_all_models():
|
| 120 |
+
all_models = []
|
| 121 |
+
unique_models = set()
|
| 122 |
+
|
| 123 |
+
for provider in config["providers"]:
|
| 124 |
+
for model in provider['model'].keys():
|
| 125 |
+
if model not in unique_models:
|
| 126 |
+
unique_models.add(model)
|
| 127 |
+
model_info = {
|
| 128 |
+
"id": model,
|
| 129 |
+
"object": "model",
|
| 130 |
+
"created": 1720524448858,
|
| 131 |
+
"owned_by": "uni-api"
|
| 132 |
+
}
|
| 133 |
+
all_models.append(model_info)
|
| 134 |
|
| 135 |
return all_models
|
| 136 |
|