:feat 新增模型配置页面和相关功能

- 新增模型配置页面组件和路由
- 实现模型配置表单和相关逻辑- 添加全局配置入口和功能- 优化首页布局和样式- 新增 404 页面组件
- 更新部分组件样式和结构
This commit is contained in:
Jefferyhcool
2025-04-22 17:01:02 +08:00
parent 2aad103a77
commit bb974b0b89
95 changed files with 7723 additions and 1697 deletions

View File

@@ -0,0 +1,23 @@
from app.gpt.gpt_factory import GPTFactory
from app.models.model_config import ModelConfig
from app.services.provider import ProviderService
class ModelService:
@staticmethod
def get_model_list(provider_id: int):
provider=ProviderService.get_provider_by_id(provider_id)
if not provider:
return []
config=ModelConfig(
api_key=provider.api_key,
base_url=provider.base_url,
provider=provider.name,
model_name='',
name=provider.name,
)
GPT=GPTFactory().from_config(config)
return GPT.list_models()
if __name__ == '__main__':
print(ModelService.get_model_list(1))

View File

@@ -53,21 +53,18 @@ class NoteGenerator:
def get_gpt(self) -> GPT:
self.provider = self.provider.lower()
if self.provider == 'openai':
logger.info("使用OpenAI")
return OpenaiGPT()
elif self.provider == 'deepseek':
elif self.provider == 'deepSeek':
logger.info("使用DeepSeek")
return DeepSeekGPT()
elif self.provider == 'qwen':
logger.info("使用Qwen")
return QwenGPT()
else:
self.provider = 'openai'
logger.warning("不支持的AI提供商,使用 OpenAI 做完GPT")
return OpenaiGPT()
logger.warning("不支持的AI提供商")
raise ValueError(f"不支持的AI提供商{self.provider}")
def get_downloader(self, platform: str) -> Downloader:
if platform == "bilibili":
@@ -162,9 +159,9 @@ class NoteGenerator:
# 1. 选择下载器
downloader = self.get_downloader(platform)
gpt = self.get_gpt()
logger.info(f'使用{downloader.__class__.__name__}下载器')
logger.info(f'使用{gpt.__class__.__name__}GPT')
logger.info(f'视频地址:{video_url}')
logger.info(f'使用{downloader.__class__.__name__}下载器\n'
f'使用{gpt.__class__.__name__}GPT\n'
f'视频地址:{video_url}')
if screenshot:
video_path = downloader.download_video(video_url)

View File

@@ -0,0 +1,54 @@
from app.db.provider_dao import (
insert_provider,
init_provider_table,
get_all_providers,
get_provider_by_name,
get_provider_by_id,
update_provider,
delete_provider,
)
class ProviderService:
@staticmethod
def add_provider(name: str, api_key: str, base_url: str, logo: str, type_: str):
return insert_provider(name, api_key, base_url, logo, type_)
@staticmethod
def get_all_providers():
provider_list = []
provider = get_all_providers()
for i in provider:
provider_list.append({
"id": i[0],
"name": i[1],
"logo": i[2],
"type": i[3], # ✅ 加上类型
"api_key": i[4],
"base_url": i[5],
})
return provider_list
@staticmethod
def get_provider_by_name(name: str):
return get_provider_by_name(name)
@staticmethod
def get_provider_by_id(id: int):
return get_provider_by_id(id)
@staticmethod
def update_provider(
id: int,
name: str,
api_key: str,
base_url: str,
logo: str,
type_: str
):
return update_provider(id, name, api_key, base_url, logo, type_)
@staticmethod
def delete_provider(id: int):
return delete_provider(id)