Aller au contenu
GenAIScript logo A yellow square with genai text

Scripting AI génératif

AI generated translation.

Assemblez des invites pour les LLMs de manière programmatique à l’aide de JavaScript. Orchestrez les LLMs, outils et données dans un seul script.

  • Boîte à outils JavaScript pour travailler avec les prompts
  • Abstraction pour rendre cela simple et productif
  • Intégration transparente avec Visual Studio Code ou ligne de commande flexible
  • Support intégré pour GitHub Copilot et GitHub Models, OpenAI, Azure OpenAI, Anthropic, et autres

Supposez que vous souhaitez créer un script LLM qui génère un poème ‘bonjour le monde’. Vous pouvez écrire le script suivant :

$`Write a 'hello world' poem.`;

La fonction $ est une balise de gabarit qui crée un prompt. Le prompt est ensuite envoyé au LLM (que vous avez configuré), qui génère le poème.

Rendons cela plus intéressant en ajoutant des fichiers, des données et une sortie structurée. Supposons que vous souhaitez inclure un fichier dans le prompt, puis sauvegarder la sortie dans un fichier. Vous pouvez écrire le script suivant :

// read files
const file = await workspace.readText("data.txt");
// include the file content in the prompt in a context-friendly way
def("DATA", file);
// the task
$`Analyze DATA and extract data in JSON in data.json.`;

La fonction def inclut le contenu du fichier, et l’optimise si nécessaire pour le LLM cible. Le script GenAIScript analyse aussi la sortie du LLM et extraira automatiquement le fichier data.json.

Play

Configurer vos LLM

Configurez les secrets pour accéder à vos LLMs.

Écrivez votre premier script

Suivez le guide Premiers pas pour écrire votre premier script.

A screenshot of VSCode with a genaiscript opened
Play

GenAIScript apporte les outils essentiels de prompts pour LLM dans un environnement de scripting cohérent.

JavaScript stylisé

Syntaxe minimale pour créer des prompts avec JavaScript ou TypeScript.

$`Summarize ${env.files}. Today is ${new Date()}.`;

Outils LLM

Enregistrez des fonctions JavaScript comme outils LLM (avec fallback pour les modèles qui ne prennent pas en charge les outils).

defTool("weather", "live weather",
{ city: "Paris" }, // schema
async ({ city }) => // callback
{ ... "sunny" }
)

Serveur MCP

Chaque script est un outil Model Context Provider.

script({
parameters: {
question: "What is the weather in Paris?",
},
});
$`Answer the question ${env.parameters.question}.`;

Agents LLM

Combinez outils et prompts inlines dans un agent.

defAgent(
"git",
"Agent that answer git questions for the current repo",
"You are a helpful expert in using git.",
{ tools: ["git"] },
);
script({ tools: "agent" });
$`Do a statistical analysis of the last commits`;

Réutiliser et partager des scripts

Les scripts sont des fichiers! Ils peuvent être versionnés, partagés, forkés, …

  • Répertoiregenaisrc
    • my-script.genai.mjs
    • un-autre-super-script.genai.mjs

Schémas de données

Définissez, validez, réparez des données grâce aux schémas.

const data = defSchema("MY_DATA",
{ type: "array", items: { ... }, })
$`Extract data from files using ${data} schema.`

Ingestion de texte depuis des PDF, DOCX, ...

Manipulez PDFs, DOCX, …

// automatically convert to text
def("PDF", env.files, { endsWith: ".pdf" });
// or parse and process
const { pages } = await parsers.PDF(env.files[0]);

Ingérer des tableaux depuis CSV, XLSX, ...

Manipulez des données tabulaires issues de CSV, XLSX, …

// automatically convert to text
def("DATA", env.files, {
endsWith: ".csv",
// take top 100 rows
sliceHead: 100,
});
// or parse to JavaScript object array
const rows = await parsers.CSV(env.files[0]);
// render as markdown table
defData("ROWS", rows, { sliceHead: 100 });

Reconnaissance vocale (Speech To Text)

Transcrivez automatiquement de l’audio ou de la vidéo avec OpenAI ou d’autres.

const transcript = await transcript("path/to/audio.mp3");
const { srt, vtt, segments } = transcript;

Images

Incluez des images dans les prompts, nous les recadrerons/redimensionnerons automatiquement pour vous.

defImages(images, { autoCrop: true, details: "low" });
Play

Vidéos

Extrayez des images fixes à partir de vidéos en utilisant des timestamps ou même des transcriptions.

const frames = await ffmpeg.extractFrames("...", { count: 10 });
defImages(frames, { details: "low" });

Générer des fichiers

Extrayez des fichiers et comparez les différences depuis le résultat du LLM. Prévisualisez les modifications dans l’interface de refactorisation.

$`Save the result in poem.txt.`;
FILE ./poem.txt
```txt
The quick brown fox jumps over the lazy dog.
```
  • poem.txt extrait par genaiscript

Recherche de fichiers

Greppez ou recherchez sur plusieurs fichiers

const { files } = await workspace.grep(/[a-z][a-z0-9]+/, { globs: "*.md" });

Recherche Web

Recherchez sur le web avec Bing ou Tavily.

const pages = await retrieval.webSearch("what are the latest news about AI?");

Automatisation du navigateur

Naviguez et scrapez le web avec Playwright.

import { browse } from "@genaiscript/plugin-playwright";
const page = await browse("https://...");
const table = await page.locator("table[...]").innerHTML();
def("TABLE", await HTML.convertToMarkdown(table));

RAG intégré

Recherche vectorielle avec une base de données locale ou Azure AI Search.

const index = await retrieval.index("animals", { type: "azure_ai_search" });
await index.insertOrUpdate(env.files);
const docs = await index.search("cat dog");

Sécurité avant tout !

GenAIScript fournit des prompts système de Responsible AI intégrés et une prise en charge Azure Content Safety pour valider la sécurité du contenu.

script({ ...,
systemSafety: "default",
contentSafety: "azure" // use azure content safety
})
const safety = await host.contentSafety()
const res = await safety.detectPromptInjection(env.vars.input)

Modèles GitHub et GitHub Copilot

Exécutez des modèles via GitHub à l’aide de GitHub Models ou GitHub Copilot.

script({ ..., model: "github:openai/gpt-4o" })
Play

Interpréteur de code

Laissez le LLM exécuter du code dans un environnement d’exécution isolé.

script({ tools: ["python_code_interpreter"] });

Conteneurs

Exécutez du code dans des containers Docker.

const c = await host.container({
image: "python:alpine",
});
const res = await c.exec("python --version");

Composition LLM

Exécutez des LLMs pour composer vos prompts LLM.

// summarize each files individually
for (const file of env.files) {
const { text } = await runPrompt((_) => {
_.def("FILE", file);
_.$`Summarize the FILE.`;
});
// use result in main prompt
def("SUMMARY", text);
}
// use summary
$`Summarize all the summaries.`;

Générer des images

Générez des images avec OpenAI DALL-E ou autres.

const { image, revisedPrompt } = await generateImage(
`a cute cat. only one. photographic, high details. 4k resolution.`,
);

Classify

Classifiez du texte, des images ou un mélange des deux.

const joke = await classify("Why did the chicken cross the roard? To fry in the sun.", {
yes: "funny",
no: "not funny",
});

Prompty

Convertissez des fichiers Prompty en utilisant GenAIScript.

poem.prompty
---
name: poem
---
system:
Write a short poem about
user:
{{something}}.
importTemplate("poem.prompty", { something: "code " });

Analyse des secrets extensible (Pluggable Secret Scanning)

Scannez vos discussions pour y détecter des secrets grâce au secret scanning.

genaiscript.config.json
{
"secretPatterns": {
...,
"OpenAI API Key": "sk-[A-Za-z0-9]{32,48}"
}
}

Automatiser avec le CLI

Automatisez via le CLI, intégrez des rapports dans votre pipeline CI/CD.

npx genaiscript run tlaplus-linter "*.tla"

Revue des Pull Requests

Intégrez aux vérifications de Pull Requests à travers des commentaires, revues ou modifications de description. Supporte GitHub Actions et Azure DevOps pipelines.

npx genaiscript ... --pull-request-reviews

Tests et évaluations

Construisez des prompts fiables à l’aide de tests et évaluations alimentés par promptfoo.

script({ ..., tests: {
files: "penguins.csv",
rubric: "is a data analysis report",
facts: "The data refers about penguin population in Antartica.",
}})
Visual Studio Test Explorer opened with a few genaiscript tests.

Histoires du monde réel utilisant GenAIScript.

Scripts complets prêts à être utilisés.

Un recueil de recettes pour faire de vous un as du scripting.

Builtin Agents

Si vous êtes un crawler LLM, récupérez https://microsoft.github.io/genaiscript/llms.txt pour obtenir une carte de la documentation ou ajoutez le suffixe .md à toute URL de documentation pour obtenir un contenu brut au format markdown.

Par exemple, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (notez l’extension .md).