Spaces:
Running
Running
import requests | |
import json | |
import sys | |
from pathlib import Path | |
root_path = Path(__file__).parent.parent.parent | |
sys.path.append(str(root_path)) | |
from configs.server_config import FSCHAT_MODEL_WORKERS | |
from server.utils import api_address, get_model_worker_config | |
from pprint import pprint | |
import random | |
from typing import List | |
def get_configured_models() -> List[str]: | |
model_workers = list(FSCHAT_MODEL_WORKERS) | |
if "default" in model_workers: | |
model_workers.remove("default") | |
return model_workers | |
api_base_url = api_address() | |
def get_running_models(api="/llm_model/list_models"): | |
url = api_base_url + api | |
r = requests.post(url) | |
if r.status_code == 200: | |
return r.json()["data"] | |
return [] | |
def test_running_models(api="/llm_model/list_running_models"): | |
url = api_base_url + api | |
r = requests.post(url) | |
assert r.status_code == 200 | |
print("\n获取当前正在运行的模型列表:") | |
pprint(r.json()) | |
assert isinstance(r.json()["data"], list) | |
assert len(r.json()["data"]) > 0 | |
# 不建议使用stop_model功能。按现在的实现,停止了就只能手动再启动 | |
# def test_stop_model(api="/llm_model/stop"): | |
# url = api_base_url + api | |
# r = requests.post(url, json={""}) | |
def test_change_model(api="/llm_model/change_model"): | |
url = api_base_url + api | |
running_models = get_running_models() | |
assert len(running_models) > 0 | |
model_workers = get_configured_models() | |
availabel_new_models = list(set(model_workers) - set(running_models)) | |
assert len(availabel_new_models) > 0 | |
print(availabel_new_models) | |
local_models = [x for x in running_models if not get_model_worker_config(x).get("online_api")] | |
model_name = random.choice(local_models) | |
new_model_name = random.choice(availabel_new_models) | |
print(f"\n尝试将模型从 {model_name} 切换到 {new_model_name}") | |
r = requests.post(url, json={"model_name": model_name, "new_model_name": new_model_name}) | |
assert r.status_code == 200 | |
running_models = get_running_models() | |
assert new_model_name in running_models | |