import gradio as gr from transformers import AutoTokenizer, AutoModelForSeq2SeqLM tokeniser = AutoTokenizer.from_pretrained("rbawden/CCASS-semi-auto-titrages-base") model = AutoModelForSeq2SeqLM.from_pretrained("rbawden/CCASS-semi-auto-titrages-base") memory_titres = "" def build_chain_titres(choice): global memory_titres if isinstance(choice, str): radio_titres_button = gr.Radio.update( choices=[ "En attente de prediction", "En attente de prediction", "En attente de prediction", ], interactive=False, ) if len(choice) > 0: memory_titres += f" {choice}" return radio_titres_button, memory_titres.replace("", "|") return choice, memory_titres.replace("", "|") def reset_state(): global memory_titres memory_titres = "" radio_titres_button = gr.Radio.update(visible=False) return radio_titres_button, memory_titres def generate_titre(matiere, sommaire): global memory_titres inp = [" ".join([matiere, memory_titres, " ", sommaire])] inputs = tokeniser(inp, return_tensors="pt") outputs = model.generate(inputs["input_ids"], num_return_sequences=3) res = tokeniser.batch_decode( outputs, skip_special_tokens=True, clean_up_tokenisation_spaces=True ) radio_titres_button = gr.Radio.update( choices=[res[0], res[1], res[2]], value=None, label="Quel est le titre le plus pertinent ?", visible=True, interactive=True, ) return radio_titres_button pred_titre = "" with gr.Blocks() as demo: with gr.Tab("Titrage"): input_matter = gr.Textbox(label="Matière") input_sommaire = gr.Textbox(label="Sommaire") with gr.Row(): radio_titres_button = gr.Radio( choices=[ "En attente de prediction", "En attente de prediction", "En attente de prediction", ], label="Quel est le titre le plus pertinent ?", interactive=False, ) output_all_titres = gr.Textbox(label="Ensemble des titres prédits") with gr.Row(): pred_button = gr.Button("Prédiction du prochain titre") reset_button = gr.Button("Recommencer le titrage") gr.Examples( [ [ "SECURITE SOCIALE", "L'article R. 243-59 du code de la sécurité sociale n'exige pas que l'avis préalable qu'il prévoit mentionne le caractère concerté du contrôle. Dès lors, c'est à bon droit que la cour d'appel, sans encourir les griefs du moyen, a dit que la circonstance que l'avis préalable ne fasse pas mention que le contrôle s'inscrivait dans le cadre d'un contrôle concerté, décidé par l'Agence centrale des organismes de sécurité sociale, était sans incidence sur sa régularité (1er moyen). Aux termes de l'article L. 243-7-2 du code de la sécurité sociale, afin d'en restituer le véritable caractère, les organismes mentionnés aux articles L. 213-1 et L. 752-1 sont en droit d'écarter, comme ne leur étant pas opposables, les actes constitutifs d'un abus de droit, soit que ces actes aient un caractère fictif, soit que, recherchant le bénéfice d'une application littérale des textes à l'encontre des objectifs poursuivis par leurs auteurs, ils n'aient pu être inspirés par aucun autre motif que celui d'éluder ou d'atténuer les contributions et cotisations sociales d'origine légale ou conventionnelle auxquelles le cotisant est tenu au titre de la législation sociale ou que le cotisant, s'il n'avait pas passé ces actes, aurait normalement supportées, eu égard à sa situation ou à ses activités réelles. Lorsque l'organisme de sécurité sociale écarte un acte juridique dans les conditions ci-dessus, il se place nécessairement sur le terrain de l'abus de droit. Il en résulte qu'il doit se conformer à la procédure prévue par le texte précité et les articles R. 243-60-1 et R. 243-60-3 du code de la sécurité sociale et qu'à défaut de ce faire, les opérations de contrôle et celles, subséquentes, de recouvrement sont entachées de nullité. Viole ces textes, dans leur rédaction applicable au litige, la cour d'appel qui, alors qu'elle constatait que l'organisme de recouvrement avait écarté la convention litigieuse au motif qu'elle avait pour seul objet d'éluder le paiement des cotisations sociales, ce dont il résultait qu'il s'était implicitement placé sur le terrain de l'abus de droit pour opérer le redressement, n'a pas tiré les conséquences légales de ses constatations (2e moyen)", ] ], [input_matter, input_sommaire], ) matiere_and_titrage_prefix = [input_matter, input_sommaire] pred_button.click( fn=generate_titre, inputs=matiere_and_titrage_prefix, outputs=[radio_titres_button], ) radio_titres_button.change( build_chain_titres, radio_titres_button, [radio_titres_button, output_all_titres], ) reset_button.click( fn=reset_state, outputs=[radio_titres_button, output_all_titres], ) demo.launch()