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 | |