FerdinandPyCode commited on
Commit
50819a8
·
1 Parent(s): 2135fe1

good now for the formatting

Browse files
Files changed (1) hide show
  1. pattern_est_une_etape.py +25 -35
pattern_est_une_etape.py CHANGED
@@ -7,54 +7,44 @@ from langchain.chat_models import ChatOpenAI
7
  from langchain.output_parsers import PydanticOutputParser
8
 
9
 
10
- class AlternativeSuggestion(BaseModel):
11
- suggestion_1: str = Field(..., description="Première suggestion de reformulation.")
12
- suggestion_2: str = Field(..., description="Deuxième suggestion de reformulation.")
13
 
 
 
 
 
14
 
15
- class PatternDetail(BaseModel):
16
- pattern: str = Field(..., description="Mot ou expression détectée.")
17
- adjectif: str = Field(..., description="Adjectif associé à l'expression détectée.")
18
- indices: List[Tuple[int, int]] = Field(..., description="Indices de début et de fin pour chaque occurrence dans le texte.")
19
- sentence: str = Field(..., description="Phrase complète où l'expression apparaît.")
20
- alternative_suggestions: AlternativeSuggestion = Field(..., description="Deux suggestions de reformulation.")
21
 
22
- def to_dict(self):
23
- return {
24
- "pattern": self.pattern,
25
- "adjectif": self.adjectif,
26
- "indices": self.indices,
27
- "sentence": self.sentence,
28
- "alternative_suggestions": {
29
- "suggestion_1": self.alternative_suggestions.suggestion_1,
30
- "suggestion_2": self.alternative_suggestions.suggestion_2,
31
- }
32
- }
33
 
 
 
 
 
 
34
 
35
  class Summary(BaseModel):
36
- total_patterns_detected: int = Field(..., description="Nombre total de patterns détectés.")
37
- alternative_suggestions_provided: int = Field(..., description="Nombre total de suggestions fournies.")
38
- occurrences: int = Field(..., description="Nombre total d'occurrences trouvées dans le texte.")
39
-
40
- def to_dict(self):
41
- return {
42
- "total_patterns_detected": self.total_patterns_detected,
43
- "alternative_suggestions_provided": self.alternative_suggestions_provided,
44
- "occurrences": self.occurrences
45
- }
46
-
47
 
48
  class DetectionResult(BaseModel):
49
- patterns: List[PatternDetail] = Field(..., description="Liste des patterns détectés avec détails.")
50
- summary: Summary = Field(..., description="Résumé de la détection.")
51
 
52
  def to_dict(self):
53
  return {
54
- "patterns": [pattern.to_dict() for pattern in self.patterns],
55
- "summary": self.summary.to_dict()
56
  }
57
 
 
58
  def est_une_etape_prompt_template() :
59
  return """
60
  En tant que rédacteur web expert, votre mission est d'analyser le texte suivant et d'identifier toutes les phrases où une expression similaire à "est une étape" est utilisée, y compris ses variantes , "constitue une étape", "représente une étape", "marque une étape","signifie une étape", "symbolise une étape", etc, particulièrement lorsqu'elles sont associées à des adjectifs exprimant l'importance.
 
7
  from langchain.output_parsers import PydanticOutputParser
8
 
9
 
10
+ from pydantic import BaseModel, Field
11
+ from typing import List, Tuple
 
12
 
13
+ class Expression(BaseModel):
14
+ expression: str = Field(..., description="Expression détectée (ex: 'est une étape importante')")
15
+ indice_debut: int = Field(..., description="Indice de début de l'expression")
16
+ indice_fin: int = Field(..., description="Indice de fin de l'expression")
17
 
18
+ class Phrase(BaseModel):
19
+ texte: str = Field(..., description="Phrase complète contenant l'expression ou les expressions détectées")
20
+ indice_debut: int = Field(..., description="Indice de début de la phrase")
21
+ indice_fin: int = Field(..., description="Indice de fin de la phrase")
 
 
22
 
23
+ class Reformulation(BaseModel):
24
+ texte: str = Field(..., description="Texte de la reformulation")
 
 
 
 
 
 
 
 
 
25
 
26
+ class PhraseDetectee(BaseModel):
27
+ phrase: Phrase = Field(..., description="Détails de la phrase")
28
+ erreurs: List[Expression] = Field(..., description="Liste des expressions détectées dans la phrase")
29
+ reformulations: List[Reformulation] = Field(..., description="Liste des reformulations proposées")
30
+ justification: str = Field(..., description="Justification des reformulations proposées")
31
 
32
  class Summary(BaseModel):
33
+ total_erreurs: int = Field(..., description="Nombre total d'expressions détectées")
34
+ total_phrases: int = Field(..., description="Nombre total de phrases contenant des expressions")
35
+ total_reformulations: int = Field(..., description="Nombre total de reformulations proposées")
 
 
 
 
 
 
 
 
36
 
37
  class DetectionResult(BaseModel):
38
+ phrases_detectees: List[PhraseDetectee] = Field(..., description="Liste des phrases détectées avec détails")
39
+ summary: Summary = Field(..., description="Résumé de la détection")
40
 
41
  def to_dict(self):
42
  return {
43
+ "phrases_detectees": [phrase.model_dump() for phrase in self.phrases_detectees],
44
+ "summary": self.summary.model_dump()
45
  }
46
 
47
+
48
  def est_une_etape_prompt_template() :
49
  return """
50
  En tant que rédacteur web expert, votre mission est d'analyser le texte suivant et d'identifier toutes les phrases où une expression similaire à "est une étape" est utilisée, y compris ses variantes , "constitue une étape", "représente une étape", "marque une étape","signifie une étape", "symbolise une étape", etc, particulièrement lorsqu'elles sont associées à des adjectifs exprimant l'importance.