File size: 4,774 Bytes
7fea1f4 4068dda 7fea1f4 4068dda 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d 1e64f5f 988c713 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d f53f6c3 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d 988c713 7fea1f4 1e64f5f f53f6c3 1e64f5f cfd8c2d 7fea1f4 cfd8c2d f53f6c3 7fea1f4 cfd8c2d 7fea1f4 cfd8c2d 1e64f5f cfd8c2d 988c713 cfd8c2d 988c713 1e64f5f cfd8c2d 1e64f5f cfd8c2d 7fea1f4 |
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 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
import gradio as gr
from src.control.control import Controller
def run(ctrl: Controller, 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_fr=input_text_, histo_fr=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_fr} score = {s.distance_str}'
source_text = s.content_fr
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
|