Skip to content

Commit 4ec00df

Browse files
authored
[Feature] add config api (#4254)
1 parent 83d41d2 commit 4ec00df

File tree

3 files changed

+33
-1
lines changed

3 files changed

+33
-1
lines changed

fastdeploy/entrypoints/cli/serve.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def subparser_init(self, subparsers: argparse._SubParsersAction) -> FlexibleArgu
7373
name=self.name,
7474
help="Start the FastDeploy OpenAI Compatible API server.",
7575
description="Start the FastDeploy OpenAI Compatible API server.",
76-
usage="fastdeploy serve [model_tag] [options]",
76+
usage="fastdeploy serve [options]",
7777
)
7878
serve_parser = make_arg_parser(serve_parser)
7979
serve_parser.add_argument("--config", help="Read CLI options from a config file. Must be a YAML file")

fastdeploy/entrypoints/openai/api_server.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"""
1616

1717
import asyncio
18+
import json
1819
import os
1920
import threading
2021
import time
@@ -50,6 +51,7 @@
5051
from fastdeploy.entrypoints.openai.serving_models import ModelPath, OpenAIServingModels
5152
from fastdeploy.entrypoints.openai.tool_parsers import ToolParserManager
5253
from fastdeploy.entrypoints.openai.utils import UVICORN_CONFIG, make_arg_parser
54+
from fastdeploy.envs import environment_variables
5355
from fastdeploy.metrics.metrics import (
5456
EXCLUDE_LABELS,
5557
cleanup_prometheus_files,
@@ -439,6 +441,29 @@ async def metrics():
439441
return Response(metrics_text, media_type=CONTENT_TYPE_LATEST)
440442

441443

444+
@metrics_app.get("/config-info")
445+
def config_info() -> Response:
446+
"""
447+
Get the current configuration of the API server.
448+
"""
449+
global llm_engine
450+
if llm_engine is None:
451+
return Response("Engine not loaded", status_code=500)
452+
cfg = llm_engine.cfg
453+
454+
def process_object(obj):
455+
if hasattr(obj, "__dict__"):
456+
# 处理有__dict__属性的对象
457+
return obj.__dict__
458+
return None # 或其他默认处理
459+
460+
cfg_dict = {k: v for k, v in cfg.__dict__.items()}
461+
env_dict = {k: v() for k, v in environment_variables.items()}
462+
cfg_dict["env_config"] = env_dict
463+
result_content = json.dumps(cfg_dict, default=process_object, ensure_ascii=False)
464+
return Response(result_content, media_type="application/json")
465+
466+
442467
def run_metrics_server():
443468
"""
444469
run metrics server

tests/ci_use/ERNIE_0dot3B/test_ernie_03b_pd.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,13 @@ def headers():
239239
return {"Content-Type": "application/json"}
240240

241241

242+
def test_metrics_config(metrics_url):
243+
timeout = 600
244+
url = metrics_url.replace("metrics", "config-info")
245+
res = requests.get(url, timeout=timeout)
246+
assert res.status_code == 200
247+
248+
242249
def send_request(url, payload, timeout=600):
243250
"""
244251
发送请求到指定的URL,并返回响应结果。

0 commit comments

Comments
 (0)