Résumer plusieurs documents
Supposons que j’ai un répertoire contenant plusieurs fichiers .pdf
(ou autres) et que je veux exécuter un GenAIScript sur tous.
Dans cet exemple, je génère un tweet accrocheur pour chaque document et je veux enregistrer le tweet dans un autre fichier.
Développement
Section intitulée « Développement »Utilisez la commande
> GenAIScript : Créer un nouveau script...
dans la palette de commandes pour créer un nouveau script.C’est un script simple. En supposant que le script prenne le fichier en argument, vous pouvez référencer cet argument dans
env.files
et indiquer au LLM ce qu’il doit en faire :gen-tweet.genai.mjs script({ title: "gen-tweet" })def("FILE", env.files)$`Given the paper in FILE, write a 140 character summary of the paperthat makes the paper sound exciting and encourages readers to look at it.`Faites un clic droit sur le document dans l’explorateur VS Code (cela peut être un fichier
.pdf
,.docx
ou.md
cardef
sait lire et analyser tous ces formats). Sélectionnez Exécuter GenAIScript. Sélectionnez le scriptgen-tweet
que vous venez d’écrire.Si l’on donne au GenAIScript un article décrivant GenAIScript, la sortie s’affichera dans un nouvel onglet de document.
Discover GenAIScript: a revolutionary scripting language integrating AI to automate complex tasks, making coding accessible to all! #AI #CodingFutureComme nous n’avons pas demandé au LLM d’écrire la sortie dans un fichier, elle sera par défaut envoyée vers la sortie standard.
Automatisation
Section intitulée « Automatisation »Nous pouvons exécuter le script depuis la ligne de commande :
Fenêtre de terminal npx genaiscript run gen-tweet example1.pdfLa sortie sera affichée dans le terminal.
Maintenant que le script fonctionne pour un fichier unique, nous pouvons utiliser la ligne de commande pour l’appliquer à une liste de fichiers. Supposons que vous commenciez avec un fichier
ex1.pdf
et que vous souhaitiez la sortie dans un nouveau fichierex1.tweet.md
. La façon de procéder dépend du shell ou du script que vous préférez.for file in *.pdf; donewfile="${file%.pdf}.tweet.md"; # foo.pdf -> foo.tweet.mdif [ ! -f "$newfile" ]; then # skip if already existsnpx genaiscript run gen-tweet $file > $newfilefidoneGet-ChildItem -Filter *.pdf | ForEach-Object {$newName = $_.BaseName + ".tweet.md"if (-not (Test-Path $newName)) {npx genaiscript run gen-tweet $_.FullName | Set-Content "$newName"}}import subprocess, sys, osfor input_file in sys.argv[1:]:output_file = os.path.splitext(input_file)[0] + '.tweet.md'if not os.path.exists(output_file):with open(output_file, 'w') as outfile:result = subprocess.check_output(["npx", "genaiscript", "run", "gen-tweet",input_file], universal_newlines=True)outfile.write(result)#!/usr/bin/env zximport "zx/globals"const files = await glob("*.pdf")for (const file of files) {const out = file.replace(/\.pdf$/i, ".tweet.md") // foo.pdf -> foo.tweet.mdif (!(await fs.exists(out)))// don't regenerate if it already existsawait $`genaiscript run gen-tweet ${file} > ${out}`}Ce script nécessite zx.