Chainlit:如何知道设置中的选择何时发生变化

问题描述 投票:0回答:1

我正在使用最新版本的Chainlit。下面的 Python 代码正确打印了最初默认选择的选项。单击设置时,它还会显示给定列表中的所有可用选项。但如果我更改选项,它就永远不会运行

on_option_change

当用户更改设置中的选项时,我该如何处理?

# To run:
#   chainlit run chainlit_trials.py --port 9503
#

import chainlit as cl
from chainlit.input_widget import Select

@cl.on_chat_start
async def initialize():
    print(f"Started. Carrying initializations.")

    settings = await cl.ChatSettings(
        [
            Select(
                id="Options",
                label="Available Options",
                values=["option1", "option2", "option3"],
                initial_index=0,
                on_change= on_option_change
            )
        ]
    ).send()

    option = settings["Options"]
    print(f"Option chosen: {option}")    

# This function will be called whenever the user changes the database selection
async def on_option_change(value):
    print(f"Selected option: {value}")
python python-3.x streamlit chainlit
1个回答
0
投票

我找到了答案。这是我们需要定义的

@cl.on_settings_update
。这是完整的工作代码:

# To run:
#   chainlit run chainlit_trials.py --port 9503
#

import chainlit as cl
from chainlit.input_widget import Select

@cl.on_chat_start
async def some_name_doesnt_matter_what_it_is():
    print(f"Started. Carrying initialisations.")

    settings = await cl.ChatSettings(
        [
            Select(
                id="Options",
                label="Available Options",
                values=["option1", "option2", "option3"],
                initial_index=0,
            )
        ]
    ).send()

    option = settings["Options"]
    print(f"Option chosen: {option}")    


# This receives updates in settings
@cl.on_settings_update
async def some_name_doesnt_matter_what_it_is(settings):
    print("Settings updated ", settings)
    print(f"Option selected: {settings["Options"]}")
© www.soinside.com 2019 - 2024. All rights reserved.