Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| from src.control.control import Chatbot | |
| def run(ctrl: Chatbot, config: {}): | |
| with gr.Blocks() as qna: | |
| with gr.Row(): | |
| with gr.Column(): | |
| pass | |
| with gr.Column(scale=10): | |
| gr.Markdown(config['title']) | |
| histo_text_comp = gr.Chatbot( | |
| visible=False, | |
| value=[], | |
| ) | |
| input_text_comp = gr.Textbox( | |
| label="", | |
| lines=1, | |
| max_lines=3, | |
| interactive=True, | |
| placeholder="Posez votre question ici", | |
| ) | |
| clear_btn = gr.Button("Clear") | |
| input_example_comp = gr.Radio( | |
| label="Examples", | |
| choices=list(config['examples'].values()), | |
| value="", | |
| ) | |
| source_text_comp = [] | |
| for i in range(4): | |
| source_text_comp.append(gr.Textbox( | |
| lines=4, | |
| max_lines=4, | |
| interactive=False, | |
| visible=False, | |
| )) | |
| with gr.Column(): | |
| pass | |
| def input_text_fn1(input_text_, histo_text_): | |
| histo_text_.append((input_text_, None)) | |
| update_ = { | |
| histo_text_comp: gr.update(visible=True, value=histo_text_), | |
| input_example_comp: gr.update(visible=False,), | |
| } | |
| for i in range(4): | |
| update_[source_text_comp[i]] = gr.update(visible=False) | |
| return update_ | |
| def input_text_fn2(input_text_, histo_text_): | |
| answer, sources = ctrl.get_response(query=input_text_, histo=histo_text_) | |
| histo_text_[-1] = (input_text_, answer) | |
| update_ = { | |
| histo_text_comp: gr.update(value=histo_text_), | |
| input_text_comp: gr.update(value=''), | |
| } | |
| for i in range(min(len(sources), 3)): | |
| s = sources[i] | |
| source_label = f'{s.index} {s.title} score = {s.distance_str}' | |
| source_text = s.content | |
| update_[source_text_comp[i]] = gr.update(visible=True, value=source_text, label=source_label) | |
| return update_ | |
| def input_example_fn(input_example_, histo_text_): | |
| histo_text_.append((input_example_, None)) | |
| update_ = { | |
| input_text_comp: gr.update(value=input_example_), | |
| histo_text_comp: gr.update(visible=True, value=histo_text_), | |
| input_example_comp: gr.update(visible=False, value=''), | |
| } | |
| for i in range(4): | |
| update_[source_text_comp[i]] = gr.update(visible=False) | |
| return update_ | |
| def clear_fn(): | |
| update_ = { | |
| input_text_comp: gr.update(value=''), | |
| histo_text_comp: gr.update(value='', visible=False), | |
| input_example_comp: gr.update(value='', visible=True), | |
| } | |
| for i in range(4): | |
| update_[source_text_comp[i]] = gr.update(visible=False, value='hello') | |
| return update_ | |
| input_text_comp \ | |
| .submit(input_text_fn1, | |
| inputs=[input_text_comp, histo_text_comp], | |
| outputs=[histo_text_comp, input_example_comp, | |
| source_text_comp[0], source_text_comp[1], source_text_comp[2], source_text_comp[3]])\ | |
| .then(input_text_fn2, | |
| inputs=[input_text_comp, histo_text_comp], | |
| outputs=[input_text_comp, histo_text_comp, | |
| source_text_comp[0], source_text_comp[1], source_text_comp[2], source_text_comp[3]]) | |
| input_example_comp \ | |
| .input(input_example_fn, | |
| inputs=[input_example_comp, histo_text_comp], | |
| outputs=[input_text_comp, histo_text_comp, input_example_comp, | |
| source_text_comp[0], source_text_comp[1], source_text_comp[2], source_text_comp[3]])\ | |
| .then(input_text_fn2, | |
| inputs=[input_text_comp, histo_text_comp], | |
| outputs=[input_text_comp, histo_text_comp, | |
| source_text_comp[0], source_text_comp[1], source_text_comp[2], source_text_comp[3]]) | |
| clear_btn.click(clear_fn, | |
| inputs=None, | |
| outputs=[input_text_comp, histo_text_comp, input_example_comp, | |
| source_text_comp[0], source_text_comp[1], source_text_comp[2], source_text_comp[3]]) | |
| return qna | |