import gradio as gr import csv import os from datetime import datetime import uuid DOMAINES = ["Santé", "Éducation", "Numérique", "Agriculture", "Politique", "Autre"] LANGUES = ["Français", "Arabe tchadien", "Sara", "Ngambay", "Autre"] TYPES = ["Texte brut", "Question-réponse", "Résumé", "Dialogue"] FICHIER_SORTIE = "contributions.csv" def sauvegarder_contribution(texte, domaine, langue, source, type_contenu, contributeur, consentement): if not texte or not texte.strip(): return "⚠️ Le champ texte ne peut pas être vide." if not consentement: return "⚠️ Vous devez accepter les conditions de contribution pour soumettre." nouvelle_ligne = { "id": str(uuid.uuid4())[:8], "texte": texte.strip(), "domaine": domaine, "langue": langue, "source": source if source else "contribution directe", "type": type_contenu, "contributeur": contributeur if contributeur else "anonyme", "date_collecte": datetime.now().strftime("%Y-%m-%d"), "licence": "CC-BY-SA-4.0" } fichier_existe = os.path.isfile(FICHIER_SORTIE) with open(FICHIER_SORTIE, mode="a", newline="", encoding="utf-8") as f: writer = csv.DictWriter(f, fieldnames=nouvelle_ligne.keys()) if not fichier_existe: writer.writeheader() writer.writerow(nouvelle_ligne) return "✅ Merci ! Votre contribution a été enregistrée et sera relue par l'équipe CIAT avant intégration." with gr.Blocks(title="CIAT Dataset - Contribuer") as demo: gr.Markdown(""" # 🇹🇩 Contribuer au CIAT Dataset Tchad Aidez-nous à construire un corpus public multilingue pour entraîner un modèle de langue tchadien. Toute contribution est relue par l'équipe CIAT avant intégration définitive. """) with gr.Row(): with gr.Column(): texte = gr.Textbox( label="Votre texte", placeholder="Collez ou écrivez votre contribution ici...", lines=8 ) domaine = gr.Dropdown(DOMAINES, label="Domaine", value="Numérique") langue = gr.Dropdown(LANGUES, label="Langue", value="Français") type_contenu = gr.Dropdown(TYPES, label="Type de contenu", value="Texte brut") source = gr.Textbox(label="Source (optionnel)", placeholder="Ex : rédaction originale, traduction, article...") contributeur = gr.Textbox(label="Votre pseudonyme (optionnel, laissez vide pour anonyme)") consentement = gr.Checkbox( label="J'accepte que ce contenu soit publié sous licence CC-BY-SA-4.0 et utilisé pour entraîner des modèles de langage." ) bouton = gr.Button("Soumettre ma contribution", variant="primary") with gr.Column(): resultat = gr.Textbox(label="Statut", interactive=False) gr.Markdown(""" ### Règles de contribution - Ne soumettez que du contenu dont vous détenez les droits - Pas de contenu diffamatoire ou de désinformation - Pas de données personnelles ou médicales identifiables - Précisez la langue exacte de votre texte """) bouton.click( fn=sauvegarder_contribution, inputs=[texte, domaine, langue, source, type_contenu, contributeur, consentement], outputs=resultat ) demo.launch()