File size: 2,649 Bytes
00b9f0d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59f434a
 
00b9f0d
 
59f434a
00b9f0d
 
59f434a
 
00b9f0d
 
 
 
 
 
 
 
 
 
 
 
59f434a
 
 
00b9f0d
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import gradio as gr
import modelscope_studio.components.antd as antd
import modelscope_studio.components.antdx as antdx
import modelscope_studio.components.base as ms

from config import DEFAULT_SETTINGS, MODEL_OPTIONS, MAX_THINKING_BUDGET, MIN_THINKING_BUDGET, get_text


def SettingsHeader():
    state = gr.State({"open": True})
    with antdx.Sender.Header(title=get_text("Settings", "设置"),
                             open=True) as settings_header:
        with antd.Form(value=DEFAULT_SETTINGS) as settings_form:
            with antd.Form.Item(form_name="model",
                                label=get_text("Chat Model", "对话模型")):
                with antd.Select(options=MODEL_OPTIONS):
                    with ms.Slot("labelRender",
                                 params_mapping="""(option) => ({
                                label: option.label, 
                                link: { href: window.MODEL_OPTIONS_MAP[option.value].link },  
                            })"""):
                        antd.Typography.Text(as_item="label")
                        antd.Typography.Link(get_text("Model Link", "模型链接"),
                                             href_target="_blank",
                                             as_item="link")

            with antd.Form.Item(form_name="thinking_budget",
                                label=get_text("Thinking Budget", "思考预算"),
                                elem_classes="setting-form-thinking-budget"):
                antd.Slider(elem_style=dict(flex=1, marginRight=14),
                            min=MIN_THINKING_BUDGET,
                            max=MAX_THINKING_BUDGET,
                            tooltip=dict(formatter="(v) => `${v}k`"))
                antd.InputNumber(max=MAX_THINKING_BUDGET,
                                 min=MIN_THINKING_BUDGET,
                                 elem_style=dict(width=100),
                                 addon_after="k")
            # with antd.Form.Item(form_name="sys_prompt",
            #                     label=get_text("System Prompt", "系统提示")):
            #     antd.Input.Textarea(auto_size=dict(minRows=3, maxRows=6))

    def close_header(state_value):
        state_value["open"] = False
        return gr.update(value=state_value)

    state.change(fn=lambda state_value: gr.update(open=state_value["open"]),
                 inputs=[state],
                 outputs=[settings_header])

    settings_header.open_change(fn=close_header,
                                inputs=[state],
                                outputs=[state])

    return state, settings_form