58 lines
1.9 KiB
Python
58 lines
1.9 KiB
Python
|
from flask import jsonify, request
|
||
|
|
||
|
from . import openai_bp
|
||
|
from ..cache import cache, redis
|
||
|
from ..stats import server_start_time
|
||
|
from ... import opts
|
||
|
from ...llm.info import get_running_model
|
||
|
|
||
|
|
||
|
@openai_bp.route('/models', methods=['GET'])
|
||
|
def openai_list_models():
|
||
|
cache_key = 'openai_model_cache::' + request.url
|
||
|
cached_response = cache.get(cache_key)
|
||
|
|
||
|
if cached_response:
|
||
|
return cached_response
|
||
|
|
||
|
model, error = get_running_model()
|
||
|
if not model:
|
||
|
response = jsonify({
|
||
|
'code': 502,
|
||
|
'msg': 'failed to reach backend',
|
||
|
'type': error.__class__.__name__
|
||
|
}), 500 # return 500 so Cloudflare doesn't intercept us
|
||
|
else:
|
||
|
response = jsonify({
|
||
|
"object": "list",
|
||
|
"data": [
|
||
|
{
|
||
|
"id": opts.running_model,
|
||
|
"object": "model",
|
||
|
"created": int(server_start_time.timestamp()),
|
||
|
"owned_by": opts.llm_middleware_name,
|
||
|
"permission": [
|
||
|
{
|
||
|
"id": opts.running_model,
|
||
|
"object": "model_permission",
|
||
|
"created": int(server_start_time.timestamp()),
|
||
|
"allow_create_engine": False,
|
||
|
"allow_sampling": False,
|
||
|
"allow_logprobs": False,
|
||
|
"allow_search_indices": False,
|
||
|
"allow_view": True,
|
||
|
"allow_fine_tuning": False,
|
||
|
"organization": "*",
|
||
|
"group": None,
|
||
|
"is_blocking": False
|
||
|
}
|
||
|
],
|
||
|
"root": None,
|
||
|
"parent": None
|
||
|
}
|
||
|
]
|
||
|
}), 200
|
||
|
cache.set(cache_key, response, timeout=60)
|
||
|
|
||
|
return response
|