
Automatisation des scripts
Une fois que vous avez un script qui vous convient, vous pouvez l’automatiser en utilisant l’interface en ligne de commande.
Exécution d’un script avec la CLI
Section intitulée « Exécution d’un script avec la CLI »L’utilisation de base de la CLI est de lancer un script avec un nom d’outil et une liste de fichiers.
npx --yes genaiscript run <script_id> <...files>
où <script_id>
est le nom du script (par exemple le nom de fichier sans .genai.mjs
) et <...files>
est une liste de fichiers sur lesquels exécuter le script.
La CLI utilisera les secrets dans le fichier .env
, remplira env.files
avec <...files>
, exécutera le script et affichera la sortie sur la sortie standard.
Vous pouvez utiliser la CLI pour exécuter vos scripts dans un pipeline CI/CD. La CLI renverra un code de sortie non nul si le script échoue, ce qui peut être utilisé pour faire échouer le pipeline.
Appliquer les modifications
Section intitulée « Appliquer les modifications »Ajoutez l’option --apply-edits
à la CLI pour écrire automatiquement les modifications dans les fichiers.
npx --yes genaiscript run <script> <...files> --apply-edits
Action GitHub
Section intitulée « Action GitHub »GitHub Actions est une plateforme d’intégration continue et de livraison continue (CI/CD) qui vous permet d’automatiser votre pipeline de construction, de test et de déploiement. Cette section explique comment intégrer votre GenAIScript dans les workflows et demandes de tirage de GitHub Actions.
GitHub Models offrent un moyen intégré d’exécuter une inférence LLM à partir d’une action GitHub.
Configurer GitHub Models
Section intitulée « Configurer GitHub Models »Pour utiliser GitHub Models, vous devez ajouter la permission models: read
à votre workflow, transmettre le secret GITHUB_TOKEN
à la CLI, et configurer la CLI pour utiliser GitHub Models. Cela peut se faire en définissant le fournisseur LLM sur github
dans la CLI.
permissions: models: read...- run: npx --yes genaiscript run <script> <...files> --provider github env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
Configurer secrets et variables
Section intitulée « Configurer secrets et variables »Configurez les secrets et les variables sur votre dépôt ou organisation afin que GenAIScript puisse se connecter à votre LLM.
Les secrets et variables doivent correspondre au fichier .env
de votre environnement local.
Exécution d’un script
Section intitulée « Exécution d’un script »Utilisez la CLI pour exécuter le script dans une action GitHub.
- Assurez-vous de transmettre les secrets et variables au script pour permettre l’accès au LLM.
- Utilisez l’option
--out <path>
pour stocker les résultats dans un répertoire afin de pouvoir les télécharger comme artefact.
- run: npx --yes genaiscript run <script> <...files> --out results env: # variables OPENAI_API_TYPE: ${{ env.OPENAI_API_TYPE }} OPENAI_API_BASE: ${{ env.OPENAI_API_BASE }} # secret, redacted OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
Ajouter la trace au résumé de l’action
Section intitulée « Ajouter la trace au résumé de l’action »Utilisez l’option out-trace
pour écrire la trace dans le fichier de résumé, $GITHUB_STEP_SUMMARY
(voir exemple).
- run: npx --yes genaiscript run ... --out-trace $GITHUB_STEP_SUMMARY
Vous pouvez utiliser git.diff
pour exécuter une commande git diff
afin de récupérer les modifications dans la branche courante.
const changes = await git.diff({ base: "main" })def("GIT_DIFF", changes, { language: "diff", maxTokens: 20000,})
Notez que vous devrez récupérer la branche origin/main
pour que cette commande fonctionne dans une action.
- run: git fetch origin && git pull origin main:main
Stockage des résultats dans les artefacts
Section intitulée « Stockage des résultats dans les artefacts »Assurez-vous que le répertoire contenant les résultats est téléchargé comme artefact. Vous pouvez consulter la trace en ouvrant le fichier res.trace.md
dans l’artefact compressé.
- uses: actions/upload-artifact@v4 if: always() with: path: | genairesults/**
Azure OpenAI avec un principal de service
Section intitulée « Azure OpenAI avec un principal de service »La documentation officielle de l’action azure login contient des étapes détaillées pour configurer l’accès aux ressources Azure depuis GitHub Actions.
Créez un principal de service en suivant le guide connect from azure secret.
Attribuez un rôle quelconque au principal de service (par exemple Lecteur) dans votre abonnement Azure. Vous en avez besoin pour vous connecter.
Attribuez le rôle Cognitive Services OpenAI User au principal de service. Vous en avez besoin pour que le principal de service puisse accéder à la ressource OpenAI.
Configurez le secret AZURE_CREDENTIALS dans votre dépôt GitHub avec les identifiants du principal de service.
{"clientId": "<Client ID>","clientSecret": "<Client Secret>","subscriptionId": "<Subscription ID>","tenantId": "<Tenant ID>"}Configurez la variable
AZURE_OPENAI_API_ENDPOINT
dans les variables GitHub Actions de votre dépôt.Ajoutez l’étape suivante dans votre workflow GitHub pour vous connecter à Azure.
genai.yml - name: Azure Login actionuses: azure/login@v2with:creds: ${{ secrets.AZURE_CREDENTIALS }}Mettez à jour chaque étape qui invoque la CLI pour inclure la variable
AZURE_OPENAI_API_ENDPOINT
.- name: run genai scriptrun: npx --yes genaiscript run ...env:AZURE_OPENAI_API_ENDPOINT: ${{ env.AZURE_OPENAI_API_ENDPOINT }}
Demande de tirage GitHub
Section intitulée « Demande de tirage GitHub »Si votre action GitHub est déclenchée par un événement de demande de tirage, vous pouvez utiliser les options suivantes pour ajouter des commentaires : description, conversation et revues.
Pour créer des commentaires, le workflow doit avoir la permission pull-requests: write
et le secret GITHUB_TOKEN
doit être transmis au script.
permissions: pull-requests: write... - run: npx --yes genaiscript run ... env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} ...
Mettre à jour la description
Section intitulée « Mettre à jour la description »L’option --pull-request-description
insère la sortie du LLM dans la section de la demande de tirage (voir exemple). La commande accepte un argument optionnel de chaîne pour identifier de manière unique ce commentaire, il est utilisé pour mettre à jour le commentaire (par défaut c’est l’id du script).
- run: npx --yes genaiscript run --pull-request-description
Si vous souhaitez exécuter ce script lorsque la demande de tirage est prête pour révision, utilisez les événements ready_for_review
, opened
, reopened
.
on: pull_request: types: [ready_for_review, opened, reopened]
Commentaire de conversation
Section intitulée « Commentaire de conversation »L’option --pull-request-comment
ajoute la sortie du LLM en tant que commentaire à la conversation de la demande de tirage (voir exemple). L’argument optionnel est un identifiant pour le commentaire (par défaut l’id du script) afin qu’un seul commentaire apparaisse pour cet id.
- run: npx --yes genaiscript run --pull-request-comment env: ...
Commentaires de revue
Section intitulée « Commentaires de revue »Utilisez l’option --pull-request-reviews
pour convertir les annotations en commentaires de revue sur le dernier commit de la demande de tirage (voir exemple).
- run: npx --yes genaiscript run --pull-request-reviews env: ...
GenAIScript essaiera automatiquement d’ignorer les commentaires de revue en double et de ne créer que les nouveaux.
Pour collecter les modifications du dernier commit dans la branche de la demande de tirage (voir article intéressant), vous pouvez essayer cette commande git :
const { stdout: changes } = await host.exec("git", [ "diff", "HEAD^", "HEAD", "--", "**.ts",])