Views
No views yet
1from transformers import pipeline, AutoTokenizer
2from unsloth import FastLanguageModel
3
4# Load model
5model, tokenizer = FastLanguageModel.from_pretrained(
6 "aminLo/merged_model_run-v2-06052025-llama-3B",
7 max_seq_length=2048,
8 load_in_4bit=True,
9)
10
11# Format prompt
12instruction = """
13Tu es un assistant chargé d'extraire des informations clés depuis un texte administratif.
14Analyse le texte suivant et retourne les informations au format JSON.
15"""
16
17input_text = """
18[Your administrative text here]
19"""
20
21# Create pipeline
22pipe = pipeline(
23 "text-generation",
24 model=model,
25 tokenizer=tokenizer,
26 max_new_tokens=512,
27 temperature=0.1,
28)
29
30# Format as chat
31messages = [
32 {"role": "user", "content": f"
33Tu es un assistant chargé d'extraire des informations clés depuis un texte administratif.
34
35Analyse le texte suivant et retourne les informations au format JSON en respectant la structure suivante :
36Ensuite, selon le type d’événement (valeur de la clé "Evenement"), tu dois ajouter des champs spécifiques, décrits ci-dessous.
37
381. Avancement d’échelon
39- "Echelon" : numéro de l’échelon obtenu (ex. "7").
402. Mise à temps non complet
41- "Durée de l'événement" : ex. "0 ans, 6 mois, 0 semaine, 0 jours"
42- "Durée travaillée en pourcentage" : ex. "60%"
43- "Durée travaillée (en heure hebdo)" : ex. "08:45"
443. Mise à temps complet
45- Facultatif :
46 - "Durée travaillée en pourcentage" : "100%"
47 - "Durée travaillée (en heure hebdo)" : si précisé dans l'arrêté
484. Temps partiel de droit (création d’entreprise ou autre)
49- "Durée de l'événement"
50- "Durée travaillée en pourcentage"
51- "Durée travaillée (en heure hebdo)"
525. Temps partiel de droit – Renouvellement
53- Même champs que ci-dessus
54- :danger: Vérifie que le texte parle bien d’un renouvellement
556. Temps partiel sur autorisation – Octroi
56- "Durée de l'événement"
57- "Durée travaillée en pourcentage"
58- "Durée travaillée (en heure hebdo)"
597. Temps partiel sur autorisation – Renouvellement
60- Identique à l’octroi
61- :danger: Mention explicite du renouvellement obligatoire
628. Temps partiel thérapeutique (octroi ou renouvellement)
63- "Durée de l'événement"
64- "Durée travaillée en pourcentage"
65- "Durée travaillée (en heure hebdo)"
66- :danger: Si c’est un renouvellement, préciser "renouvellement" dans la clé "Evenement"
679. Temps partiel thérapeutique – Fin
68- Aucun champ supplémentaire obligatoire
69- Tu peux ajouter :
70 - "Fin du dispositif": true
7110. Passage à temps plein
72- Facultatif :
73 - "Durée travaillée en pourcentage": "100%"
7411. Modification d’un temps partiel ou non complet
75- "Durée de l'événement"
76- "Durée travaillée en pourcentage"
77- "Durée travaillée (en heure hebdo)"
78- :danger: Il faut extraire les nouvelles valeurs modifiées
79─────────────────────────────────────────────
80:trombone: Règles générales d’extraction
81─────────────────────────────────────────────
82- Ne jamais inventer d’informations. Si une donnée est absente, ne pas inclure la clé dans le JSON.
83- Respecter strictement les formats :
84 - Pourcentage : "50%", "100%"
85 - Horaire hebdomadaire : "08:45", "17:30"
86 - Date : format ISO "YYYY-MM-DD"
87 - Durée : "X ans, Y mois, Z semaines, N jours
88
89
901. Si l'événement est un **avancement d'échelon** :
91{
92 "Agent": "NOM PRÉNOM",
93 "Etablissement": "Ville ou organisme concerné",
94 "Evenement": "avancement d'échelon",
95 "Echelon": "Numéro d'échelon",
96 "Date": "AAAA-MM-JJ"
97}
98
992. Si l'événement est un **passage à temps partiel** (y compris thérapeutique ou sous autorisation) :
100{
101 "Agent": "NOM PRÉNOM",
102 "Etablissement": "Ville ou organisme concerné",
103 "Evenement": "passage à temps partiel",
104 "TempsHebdomadaire": "Nombre d'heures/semaine",
105 "Pourcentage": "XX%",
106 "Durée": "Durée si précisée",
107 "Date": "AAAA-MM-JJ"
108}
109
1103. Pour les autres événements (nomination, fin de contrat, etc.) :
111{
112 "Agent": "NOM PRÉNOM",
113 "Etablissement": "Ville ou organisme concerné",
114 "Evenement": "type d'événement",
115 "Date": "AAAA-MM-JJ",
116 "Durée": "si précisée"
117}
118
119**Contraintes :**
120- N'inclus que les champs pertinents pour chaque événement.
121- Utilise le format ISO (AAAA-MM-JJ) pour les dates.
122- Si une information est manquante ou non précisée, ne pas inclure le champ.
123- Retourne uniquement un JSON valide.
124
125Voici une liste des types d'actes possibles à utiliser si cela aide : {event_types}
126
127Texte à analyser :
128\n\n'input_text'"}
129]
130prompt = tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)
131
132# Generate response
133output = pipe(prompt, return_full_text=False)
134generated_text = outputs[0]['generated_text']
135print(generated_text)