[Feature] add config api (#4254)

This commit is contained in:
memoryCoderC
2025-09-26 11:21:02 +08:00
committed by GitHub
parent 83d41d23b0
commit 4ec00df2b0
3 changed files with 33 additions and 1 deletions

View File

@@ -73,7 +73,7 @@ class ServeSubcommand(CLISubcommand):
name=self.name,
help="Start the FastDeploy OpenAI Compatible API server.",
description="Start the FastDeploy OpenAI Compatible API server.",
usage="fastdeploy serve [model_tag] [options]",
usage="fastdeploy serve [options]",
)
serve_parser = make_arg_parser(serve_parser)
serve_parser.add_argument("--config", help="Read CLI options from a config file. Must be a YAML file")

View File

@@ -15,6 +15,7 @@
"""
import asyncio
import json
import os
import threading
import time
@@ -50,6 +51,7 @@ from fastdeploy.entrypoints.openai.serving_completion import OpenAIServingComple
from fastdeploy.entrypoints.openai.serving_models import ModelPath, OpenAIServingModels
from fastdeploy.entrypoints.openai.tool_parsers import ToolParserManager
from fastdeploy.entrypoints.openai.utils import UVICORN_CONFIG, make_arg_parser
from fastdeploy.envs import environment_variables
from fastdeploy.metrics.metrics import (
EXCLUDE_LABELS,
cleanup_prometheus_files,
@@ -439,6 +441,29 @@ async def metrics():
return Response(metrics_text, media_type=CONTENT_TYPE_LATEST)
@metrics_app.get("/config-info")
def config_info() -> Response:
"""
Get the current configuration of the API server.
"""
global llm_engine
if llm_engine is None:
return Response("Engine not loaded", status_code=500)
cfg = llm_engine.cfg
def process_object(obj):
if hasattr(obj, "__dict__"):
# 处理有__dict__属性的对象
return obj.__dict__
return None # 或其他默认处理
cfg_dict = {k: v for k, v in cfg.__dict__.items()}
env_dict = {k: v() for k, v in environment_variables.items()}
cfg_dict["env_config"] = env_dict
result_content = json.dumps(cfg_dict, default=process_object, ensure_ascii=False)
return Response(result_content, media_type="application/json")
def run_metrics_server():
"""
run metrics server

View File

@@ -239,6 +239,13 @@ def headers():
return {"Content-Type": "application/json"}
def test_metrics_config(metrics_url):
timeout = 600
url = metrics_url.replace("metrics", "config-info")
res = requests.get(url, timeout=timeout)
assert res.status_code == 200
def send_request(url, payload, timeout=600):
"""
发送请求到指定的URL并返回响应结果。