seminarLabAI / app.py
inoid's picture
Update local changes
2a563da
import gradio as gr
from llm_call import GeminiLLM
from seminar_edition_ai import upload_file_ex, predictContemplando, predictProclamando, predictFromInit, \
downloadSermonFile, fileAddresToDownload, predictQuestionBuild, predictDevotionBuild, predictArgumentQuestionBuild, \
contemplandoQuestion, proclamandoQuestion, llm, embed_model
HISTORY_ANSWER = ''
llmModel = None
def activeSermonGuideZone(KEY):
#print("Button show " + buttonEvent.label)
return {text_button: gr.update (interactive = True), question_option: [KEY]}
def showMessage(questionAnswer, KEY):
if questionAnswer == None or questionAnswer == '' or len(questionAnswer) <= 7:
raise gr.Error(f"You must write some answer or more longer {KEY}")
else:
try:
return predictArgumentQuestionBuild(questionAnswer)
except Exception as e:
raise gr.Error(f" Error on call AI {e}!!!")
with gr.Blocks() as demo:
gr.Markdown("SermonLab AI Demo.")
llmModelState = gr.State([llmModel])
with gr.Tab("Preparando mi Serm贸n"):
text_input = gr.Textbox(label="T贸pico del serm贸n")
text_output = gr.Textbox(label="Respuesta", lines = 10)
text_button = gr.Button("Crear")
text_download = gr.DownloadButton(
label="Descargar",
value = fileAddresToDownload,
every=10
)
text_button.click(
fn = predictFromInit,
inputs =[ text_input, llmModelState],
outputs = text_output
)
text_download.click(
fn=downloadSermonFile,
inputs=text_output
)
with gr.Tab("Obtener gu铆a de la comunidad (Preguntas)"):
with gr.Row():
#Bibliografy about components
# File (https://www.gradio.app/docs/gradio/file)
# Download Button (https://www.gradio.app/docs/gradio/downloadbutton)
with gr.Column():
file_input_question = gr.File()
upload_button_question = gr.UploadButton("Click to Upload a File", file_types=['.pdf'],
file_count="multiple")
with gr.Column():
temp_slider_question = gr.Slider(
minimum=1,
maximum=10,
value=1,
step=1,
interactive=True,
label="Preguntas",
)
text_output_question = gr.Textbox(label="Respuesta", lines=10)
text_button_question = gr.Button("Crear gu铆a de preguntas")
text_download_question = gr.DownloadButton(
label="Descargar",
value=fileAddresToDownload,
every=10
)
text_button_question.click(
fn=predictQuestionBuild,
outputs=text_output_question
)
upload_button_question.upload(upload_file_ex, inputs=upload_button_question,
outputs=[file_input_question, text_output_question])
with gr.Tab("Obtener gu铆a de la comunidad (Devocionario)"):
with gr.Row():
#Bibliografy about components
# File (https://www.gradio.app/docs/gradio/file)
# Download Button (https://www.gradio.app/docs/gradio/downloadbutton)
with gr.Column():
file_input_devotions = gr.File()
upload_button_devotion = gr.UploadButton("Click to Upload a File", file_types=['.pdf'],
file_count="multiple")
with gr.Column():
temp_slider_question = gr.Slider(
minimum=1,
maximum=10,
value=1,
step=1,
interactive=True,
label="Cantidad",
)
text_output_devotions = gr.Textbox(label="Respuesta", lines=10)
text_button_devotion = gr.Button("Crear")
text_download_question = gr.DownloadButton(
label="Descargar",
value=fileAddresToDownload,
every=10
)
text_button_devotion.click(
fn=predictDevotionBuild,
outputs=text_output_devotions
)
upload_button_devotion.upload(
upload_file_ex,
inputs=upload_button_devotion,
outputs=
[file_input_devotions, text_output_devotions]
)
with gr.Tab("Contemplando y Proclamando (Gu铆a de preguntas)"):
question_option = gr.State([])
with gr.Accordion("Contemplando y Proclamando", open = False):
checkButton = gr.Checkbox(
value=False,
label="Mantener historial"
)
with gr.Row():
with gr.Tab("Contemplando"):
inbtwContemplando = gr.Button(f"Devocionalmente: {contemplandoQuestion['DEVOCIONALMENTE']}")
inbtwContemplandoOne = gr.Button(f"Ex茅gesis: {contemplandoQuestion['EX脡GESIS']}")
inbtwContemplandoTwo = gr.Button(f"Cristo: {contemplandoQuestion['CRISTO']}")
inbtwContemplandoTree = gr.Button(f"Arco Redentor: {contemplandoQuestion['ARCO REDENTOR']}")
inbtwContemplandoFour = gr.Button(f"Evangeli贸n: {contemplandoQuestion['EVANGELION']}")
inbtwContemplandoFourOne = gr.Button(f"Evangeli贸n: {contemplandoQuestion['EVANGELION_TWO']}")
with gr.Tab("Proclamando"):
inbtwProclamando = gr.Button(f"P煤blico: {proclamandoQuestion['P脷BLICO']}")
inbtwProclamandoOne = gr.Button(f"Historia: {proclamandoQuestion['HISTORIA']}")
inbtwProclamandoTwo = gr.Button(f"Expectativas: {proclamandoQuestion['EXPECTATIVAS']}")
inbtwProclamandoTwoTwo = gr.Button(f"Expectativas: {proclamandoQuestion['EXPECTATIVAS_TWO']}")
with gr.Row():
with gr.Column(scale = 2):
#Answer for Contemplando y Proclamando questions
text_output_guia = gr.Textbox(label="Respuesta", lines = 10)
with gr.Column(scale = 1, min_width = 200):
text1 = gr.Textbox(visible = False)
#Button for calling AI Help
text_button = gr.Button("Buscar m谩s informaci贸n (IA)",
min_width = 200,
interactive = False
)
text2 = gr.Textbox(visible = False)
with gr.Column(scale = 2):
text_output_aiAnswer = gr.Textbox(label="Ayuda a mi respuesta", lines = 10)
inbtwContemplando.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['DEVOCIONALMENTE']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwContemplandoOne.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['EX脡GESIS']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwContemplandoTwo.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['CRISTO']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwContemplandoTree.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['ARCO REDENTOR']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwContemplandoFour.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['EVANGELION']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwContemplandoFourOne.click(
fn = lambda x: activeSermonGuideZone(contemplandoQuestion['EVANGELION_TWO']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
#####---------------------------------------------------------------------------------------------------------
inbtwProclamando.click(
fn = lambda x: activeSermonGuideZone(proclamandoQuestion['P脷BLICO']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwProclamandoOne.click(
fn = lambda x: activeSermonGuideZone(proclamandoQuestion['HISTORIA']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwProclamandoTwo.click(
fn = lambda x: activeSermonGuideZone(proclamandoQuestion['EXPECTATIVAS']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
inbtwProclamandoTwoTwo.click(
fn = lambda x: activeSermonGuideZone(proclamandoQuestion['EXPECTATIVAS_TWO']),
inputs = inbtwContemplandoOne,
outputs = [text_button, question_option]
)
text_button.click(fn = showMessage, inputs = [text_output_guia, question_option], outputs = text_output_aiAnswer)
if __name__ == "__main__":
llmBuilder = GeminiLLM()
embed_model = llmBuilder.getEmbeddingsModel()
#global llmModel
demo.launch(share=True)