ai-output-parser/ai_output_parser

64 lines
2.5 KiB
Text
Raw Normal View History

2026-08-30 10:03:26 +02:00
#!/usr/bin/env python
import re
import argparse
def extract_content(file_path):
with open(file_path, 'r', encoding='utf-8') as file:
content = file.read()
# Utiliser une expression régulière pour trouver le contenu entre les balises <think> et </think>
#think_pattern = r'<think>(.*?)</think>'
think_pattern = r'Thinking\.\.\.(.*?)\.\.\.done thinking\.'
think_matches = re.findall(think_pattern, content, re.DOTALL)
# Nettoyer les résultats pour enlever les espaces superflus
extracted_think = [match.strip() for match in think_matches]
# Utiliser une expression régulière pour trouver le contenu YAML entre les balises ```yaml et ```
yaml_pattern = r'```yaml(.*?)```'
yaml_matches = re.findall(yaml_pattern, content, re.DOTALL)
# Nettoyer les résultats pour enlever les espaces superflus
extracted_yaml = [match.strip() for match in yaml_matches]
# Supprimer le contenu YAML et <think> du texte complet
markdown_content = re.sub(yaml_pattern, '', content, flags=re.DOTALL)
markdown_content = re.sub(think_pattern, '', markdown_content, flags=re.DOTALL)
return extracted_think, extracted_yaml, markdown_content.strip()
def main():
# Configuration de l'analyseur d'arguments
parser = argparse.ArgumentParser(description='Extraire le contenu d\'un fichier texte.')
parser.add_argument('file_path', type=str, help='Chemin vers le fichier texte à analyser.')
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument('--think', action='store_true', help='Afficher le contenu de la balise <think>.')
group.add_argument('--explanation', action='store_true', help='Afficher le reste du Markdown sans le code YAML et <think>.')
group.add_argument('--yaml', action='store_true', help='Afficher le contenu YAML.')
# Analyse des arguments
args = parser.parse_args()
# Extraction du contenu
extracted_think, extracted_yaml, markdown_content = extract_content(args.file_path)
if args.think:
# Affichage du contenu de la balise <think>
if extracted_think:
print(extracted_think[0])
else:
print("Aucun contenu trouvé entre les balises <think> et </think>.")
elif args.yaml:
# Affichage du contenu YAML
if extracted_yaml:
print(extracted_yaml[0])
else:
print("Aucun contenu YAML trouvé.")
elif args.explanation:
# Affichage du reste du Markdown sans le code YAML et <think>
print(markdown_content)
if __name__ == "__main__":
main()