From 286db405ca6154b162779bc320eb2fbbda7489b5 Mon Sep 17 00:00:00 2001 From: carry <2641257231@qq.com> Date: Mon, 7 Apr 2025 23:17:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(frontend):=20=E4=BC=98=E5=8C=96=E8=AE=BE?= =?UTF-8?q?=E7=BD=AE=E9=A1=B5=E9=9D=A2=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=88=B7=E6=96=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 为 get_providers 函数添加异常处理,提高数据获取的稳定性 - 在设置页面添加刷新按钮,用户可手动触发数据刷新 - 优化页面布局,调整组件间距和对齐方式 --- frontend/setting_page.py | 37 ++++++++++++++++++++++--------------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/frontend/setting_page.py b/frontend/setting_page.py index 4bf759b..0789d3e 100644 --- a/frontend/setting_page.py +++ b/frontend/setting_page.py @@ -1,21 +1,23 @@ import gradio as gr -from typing import List, Dict +from typing import List from sqlmodel import Session, select from db import get_engine from schema import APIProvider import os -# 获取数据库引擎 engine = get_engine(os.path.join(os.path.dirname(__file__), "..", "workdir")) def setting_page(): def get_providers() -> List[List[str]]: - with Session(engine) as session: - providers = session.exec(select(APIProvider)).all() - return [ - [p.id, p.model_id, p.base_url, p.api_key or ""] - for p in providers - ] + try: # 添加异常处理 + with Session(engine) as session: + providers = session.exec(select(APIProvider)).all() + return [ + [p.id, p.model_id, p.base_url, p.api_key or ""] + for p in providers + ] + except Exception as e: + raise gr.Error(f"获取数据失败: {str(e)}") def add_provider(model_id, base_url, api_key): try: @@ -30,34 +32,39 @@ def setting_page(): session.refresh(new_provider) return get_providers() except Exception as e: - # 抛出错误提示 raise gr.Error(f"添加失败: {str(e)}") with gr.Blocks() as demo: gr.Markdown("## API Provider 管理") - + with gr.Row(): with gr.Column(scale=1): - model_id_input = gr.Textbox(label="Model ID") base_url_input = gr.Textbox(label="Base URL") api_key_input = gr.Textbox(label="API Key") add_button = gr.Button("添加新API") - # API Provider列表 with gr.Column(scale=3): provider_table = gr.DataFrame( - headers=["id" , "model id", "base URL", "API Key"], - datatype=["number","str", "str", "str"], + headers=["id", "model id", "base URL", "API Key"], + datatype=["number", "str", "str", "str"], interactive=True, value=get_providers(), wrap=True, col_count=(4, "auto") ) + with gr.Row(): edit_button = gr.Button("编辑选中行") delete_button = gr.Button("删除选中行") + refresh_button = gr.Button("刷新数据", variant="secondary") + # 绑定刷新按钮事件 + refresh_button.click( + fn=get_providers, + outputs=[provider_table], + queue=False # 立即刷新不需要排队 + ) add_button.click( fn=add_provider, @@ -65,4 +72,4 @@ def setting_page(): outputs=[provider_table] ) - return demo \ No newline at end of file + return demo \ No newline at end of file