FAYO
model
1ef9436
raw
history blame
4 kB
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
@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()