|
|
|
|
|
""" |
|
@File : server_info.py |
|
@Time : 2024/09/02 |
|
@Project : https://github.com/PeterH0323/Streamer-Sales |
|
@Author : HinGwenWong |
|
@Version : 1.0 |
|
@Desc : 组件信息获取逻辑 |
|
""" |
|
|
|
|
|
import random |
|
import requests |
|
from loguru import logger |
|
|
|
from ..web_configs import API_CONFIG, WEB_CONFIGS |
|
|
|
|
|
class ServerPluginsInfo: |
|
|
|
def __init__(self) -> None: |
|
self.update_info() |
|
|
|
def update_info(self): |
|
|
|
self.tts_server_enabled = self._check_server(API_CONFIG.TTS_URL + "/check") |
|
self.digital_human_server_enabled = self._check_server(API_CONFIG.DIGITAL_HUMAN_CHECK_URL) |
|
self.asr_server_enabled = self._check_server(API_CONFIG.ASR_URL + "/check") |
|
self.llm_enabled = self._check_server(API_CONFIG.LLM_URL) |
|
|
|
if WEB_CONFIGS.AGENT_DELIVERY_TIME_API_KEY is None or WEB_CONFIGS.AGENT_WEATHER_API_KEY is None: |
|
self.agent_enabled = False |
|
else: |
|
self.agent_enabled = True |
|
|
|
self.rag_enabled = WEB_CONFIGS.ENABLE_RAG |
|
|
|
logger.info( |
|
"\nself check plugins info : \n" |
|
f"| llm | {self.llm_enabled} |\n" |
|
f"| rag | {self.rag_enabled} |\n" |
|
f"| tts | {self.tts_server_enabled} |\n" |
|
f"| digital hunam | {self.digital_human_server_enabled} |\n" |
|
f"| asr | {self.asr_server_enabled} |\n" |
|
f"| agent | {self.agent_enabled} |\n" |
|
) |
|
|
|
@staticmethod |
|
def _check_server(url): |
|
|
|
try: |
|
res = requests.get(url) |
|
except requests.exceptions.ConnectionError: |
|
return False |
|
|
|
if res.status_code == 200: |
|
return True |
|
else: |
|
return False |
|
|
|
@staticmethod |
|
def _make_color_list(color_num): |
|
|
|
color_list = [ |
|
"#FF3838", |
|
"#FF9D97", |
|
"#FF701F", |
|
"#FFB21D", |
|
"#CFD231", |
|
"#48F90A", |
|
"#92CC17", |
|
"#3DDB86", |
|
"#1A9334", |
|
"#00D4BB", |
|
"#2C99A8", |
|
"#00C2FF", |
|
"#344593", |
|
"#6473FF", |
|
"#0018EC", |
|
"#8438FF", |
|
"#520085", |
|
"#CB38FF", |
|
"#FF95C8", |
|
"#FF37C7", |
|
] |
|
|
|
return random.sample(color_list, color_num) |
|
|
|
def get_status(self): |
|
self.update_info() |
|
|
|
info_list = [ |
|
{ |
|
"plugin_name": "LLM", |
|
"describe": "大语言模型,用于根据客户历史对话,生成对话信息", |
|
"enabled": self.llm_enabled, |
|
}, |
|
{ |
|
"plugin_name": "RAG", |
|
"describe": "用于调用知识库实时更新信息", |
|
"enabled": self.rag_enabled, |
|
}, |
|
{ |
|
"plugin_name": "TTS", |
|
"describe": "文字转语音,让主播的文字也能听到", |
|
"enabled": self.tts_server_enabled, |
|
}, |
|
{ |
|
"plugin_name": "数字人", |
|
"describe": "数字人服务,用于生成数字人,需要和 TTS 一起开启才有效果", |
|
"enabled": self.digital_human_server_enabled, |
|
}, |
|
{ |
|
"plugin_name": "Agent", |
|
"describe": "用于根据用户对话,获取网络的实时信息", |
|
"enabled": self.agent_enabled, |
|
}, |
|
{ |
|
"plugin_name": "ASR", |
|
"describe": "语音转文字,让用户无需打字就可以和主播进行对话", |
|
"enabled": self.asr_server_enabled, |
|
}, |
|
] |
|
|
|
|
|
color_list = self._make_color_list(len(info_list)) |
|
for idx, color in enumerate(color_list): |
|
info_list[idx].update({"avatar_color": color}) |
|
|
|
return info_list |
|
|
|
|
|
SERVER_PLUGINS_INFO = ServerPluginsInfo() |
|
|