diff --git a/frontend/setting_page.py b/frontend/setting_page.py index 2739930..5f5863b 100644 --- a/frontend/setting_page.py +++ b/frontend/setting_page.py @@ -17,19 +17,47 @@ def setting_page(): for p in providers ] + def add_provider(model_id, base_url, api_key): + with Session(engine) as session: + new_provider = APIProvider( + model_id=model_id, + base_url=base_url, + api_key=api_key if api_key else None + ) + session.add(new_provider) + session.commit() + session.refresh(new_provider) + return get_providers() + 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=2): + with gr.Column(scale=3): provider_table = gr.DataFrame( - headers=["id" , "model id", "URL", "API Key"], + headers=["id" , "model id", "base URL", "API Key"], datatype=["number","str", "str", "str"], interactive=True, value=get_providers(), wrap=True, - col_count=(4, "fixed") + col_count=(4, "auto") ) - + with gr.Row(): + edit_button = gr.Button("编辑选中行") + delete_button = gr.Button("删除选中行") + + + add_button.click( + fn=add_provider, + inputs=[model_id_input, base_url_input, api_key_input], + outputs=provider_table + ) + return demo \ No newline at end of file