import gradio as gr import requests import pandas as pd def api_url(remote): return f"https://huynhdoo--asc-api-{remote}.modal.run" def categorize(text='texte à encoder'): # Query API json = dict( text=text, ) try: resp = requests.post(url=api_url('retrieve'), json=json) results = resp.json() except: return pd.dataFrame([]) documents = results['documents'][0] metadatas = results['metadatas'][0] distances = results['distances'][0] scores = [1/x for x in distances] res_df = pd.DataFrame({'metadatas': metadatas})['metadatas'].apply(pd.Series) res_df['score'] = scores return res_df[['theme', 'score']].groupby(['theme']).max().sort_values('score', ascending=False).reset_index() def categorize_by_sentences(text='texte à encoder. 2ème texte'): sentences = text.split('.') results = [(s, categorize(s).iloc[0].tolist()[0]) for s in sentences if len(s)>0] return results gradio_app = gr.Interface( fn=categorize, inputs=[ gr.Textbox(label="Mission", info="Votre texte de mission à catégoriser"), ], outputs=[ gr.DataFrame(label="Résultats", headers=["Theme", "Score"]) ], examples=[ "À la fois présente dans le temps scolaire et hors temps scolaire, l?USEP vient en complément de l'EPS. Elle organise des activités sportives et des rencontres qui finalisent les cycles d?apprentissage en EPS, s?inscrit dans le projet de l?école, participe à l?élaboration des contenus d?enseignements et contribue à la formation des enseignants.", "Humanis recherche 4 volontaires, Ambassadeurs Réseau de Confiance pour favoriser le lien social et l'accès au numérique des séniors sur la ville de Roubaix.", "Contribuer aux activités éducatives, pédagogiques et citoyennes de l'école primaire.", "Agir contre le gaspillage et développer le bien vivre autour de la table durant le temps de la restauration scolaire", "Participer aux postes de secours en qualité d'équipiers secouristes, mettre en place des actions de sensibilisation pour le grand public.", ], cache_examples=False ) if __name__ == "__main__": gradio_app.launch(auth=("asc", "asc"), share=True)