如何在Gradio中实现自定义错误反馈文本框并记录反馈内容?
解决Gradio中CSVLogger未记录用户反馈内容的问题
问题根源在于两处配置缺失:CSVLogger未纳入用户反馈文本框,且Flag按钮的日志触发逻辑未传递反馈内容。以下是具体修复方案:
核心修改点
- 更新CSVLogger初始化配置:将用户输入正确内容的文本框
correct_lable_user_input加入到setup的输入列表,确保日志结构预留该字段的位置。 - 调整Flag按钮的触发逻辑:在按钮的输入参数中添加
correct_lable_user_input,让日志记录方法能同时获取图片、模型输出和用户提供的正确内容。
修改后的完整代码
import gradio as gr def funct(img_path): return "some string" callback = gr.CSVLogger() title = "Experiment" description = "Experiment" with gr.Blocks() as demo: with gr.Row(): with gr.Column(scale=2): image_in3 = gr.Image( label="Image input", type="filepath", elem_id="image-in3", height=300 ) gr.Markdown("""## Output""") with gr.Column(scale=2): text_out = gr.Text(label="Some text output") gr.Markdown("""Enter the correct text output""") correct_lable_user_input = gr.Text(label="Correct text class") with gr.Row(): btn = gr.Button("Flag as Incorrect") # 修正:将用户反馈文本框加入日志监控列表 callback.setup([image_in3, text_out, correct_lable_user_input], "flagged_data_captures") submit_btn = gr.Button("Submit") submit_btn.click( fn=funct, inputs=[image_in3], outputs=[text_out] ) # 修正:传递用户反馈内容到日志方法 btn.click( lambda *args: callback.flag(args, flag_option=["Incorrect"]), [image_in3, text_out, correct_lable_user_input], None, preprocess=False ) demo.launch() # debug=True,share=True
效果验证
修改完成后,用户点击"Flag as Incorrect"按钮时,flagged_data_captures.csv日志文件会新增用户反馈的正确内容列,同时保留原有的图片路径、模型输出列,以及标记为"Incorrect"的flag选项。
内容的提问来源于stack exchange,提问作者Tushar Tiwari
相关产品推荐
相关产品推荐

