Installer l'extension ou le CLI
Installez l’extension Visual Studio Code ou le CLI pour commencer.
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.
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 filesconst file = await workspace.readText("data.txt");// include the file content in the prompt in a context-friendly waydef("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
.
Installer l'extension ou le CLI
Installez l’extension Visual Studio Code ou le CLI pour commencer.
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.
Lire la documentation
Découvrez-en plus sur GenAIScript dans la Référence du scripting.
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()}.`;
Boucle de développement rapide
Éditez, déboguez, exécutez, testez vos scripts dans Visual Studio Code ou avec une ligne de commande.
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" })
Client MCP
Utilisez des outils exposés par les serveurs Model Context Provider
defTool({ memory: { command: "npx", args: ["-y", "@modelcontextprotocol/server-memory"], },});
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, …
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, ...
Ingérer des tableaux depuis CSV, XLSX, ...
Manipulez des données tabulaires issues de CSV, XLSX, …
// automatically convert to textdef("DATA", env.files, { endsWith: ".csv", // take top 100 rows sliceHead: 100,});// or parse to JavaScript object arrayconst rows = await parsers.CSV(env.files[0]);// render as markdown tabledefData("ROWS", rows, { sliceHead: 100 });
Reconnaissance vocale (Speech To Text)
Images
Incluez des images dans les prompts, nous les recadrerons/redimensionnerons automatiquement pour vous.
defImages(images, { autoCrop: true, details: "low" });
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```txtThe quick brown fox jumps over the lazy dog.```
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" })
Azure AI Foundry, Google, Anthropic, Amazon, Alibaba, ...
Exécutez des modèles depuis Azure AI Foundry, Google, Anthropic, Alibaba, et d’autres. Voir Configuration.
script({ ..., model: "azure_ai_inference:o3-mini"})
Modèles locaux
Exécutez vos scripts avec des modèles open source, comme Phi-3, via Ollama, LocalAI…
script({ ..., model: "ollama:phi3" })
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 individuallyfor (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.
---name: poem---
system:Write a short poem aboutuser:{{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.
{ "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.",}})
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.
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).