
Environnement JavaScript-ish avec outillage pratique pour l'ingestion de fichiers, le développement rapide et l'extraction structurée des données.
Assembler les invites par programme pour les LLM à l'aide de JavaScript. Orchestrer les LLM, les outils et les données dans un seul script.
Dites-vous que vous voulez créer un script LLM qui génère un poème «Hello World». Vous pouvez écrire le script suivant:
$ `Write a 'hello world' poem.` La fonction $ est une balise de modèle qui crée une invite. L'invite est ensuite envoyée au LLM (vous avez configuré), qui génère le poème.
Rendons-le plus intéressant en ajoutant des fichiers, des données et une sortie structurée. Dites que vous souhaitez inclure un fichier dans l'invite, puis enregistrez 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 comprend le contenu du fichier et l'optimise si nécessaire pour le LLM cible. Le script GenAscript analyse également la sortie LLM et extrait automatiquement le fichier data.json .
Commencez rapidement en installant l'extension de code Visual Studio ou en utilisant la ligne de commande.
Créer des invites par programme à l'aide de JavaScript ou TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Modifiez, déboguez, exécutez et testez vos scripts dans Visual Studio Code ou avec la ligne de commande.
Les scripts sont des fichiers! Ils peuvent être versés, partagés et fourchus.
// define the context
def ( "FILE" , env . files , { endsWith : ".pdf" } )
// structure the data
const schema = defSchema ( "DATA" , { type : "array" , items : { type : "string" } } )
// assign the task
$ `Analyze FILE and extract data to JSON using the ${ schema } schema.`Définissez, valider et réparer les données à l'aide de schémas.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`Manipuler les PDF, docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Manipuler les données tabulaires de CSV, xlsx, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Extraire les fichiers et Diff de la sortie LLM. Aperçu des modifications de l'interface utilisateur de refactorisation.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.Fichiers de recherche Grep ou Fuzz.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Enregistrer les fonctions JavaScript comme des outils (avec une secours pour les modèles qui ne prennent pas en charge les outils).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Enregistrez les fonctions JavaScript comme des outils et combinez des outils + invite en agents.
defAgent (
"git" ,
"Query a repository using Git to accomplish tasks." ,
`Your are a helpful LLM agent that can use the git tools to query the current repository.
Answer the question in QUERY.
- The current repository is the same as github repository.` ,
{ model , system : [ "system.github_info" ] , tools : [ "git" ] }
)puis utilisez-le comme un outil
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Recherche vectorielle.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Exécutez des modèles via des modèles GitHub ou du copilote GitHub.
script ( { ... , model : "github:gpt-4o" } )Exécutez vos scripts avec des modèles open source, comme PHI-3, en utilisant Olllama, Localai.
script ( { ... , model : "ollama:phi3" } )Laissez le LLM exécuter du code dans un environnement d'exécution à sable.
script ( { tools : [ "python_code_interpreter" ] } )Exécutez du code dans les conteneurs Docker.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )Exécutez les LLM pour construire vos invites LLM.
for ( const file of env . files ) {
const { text } = await runPrompt ( ( _ ) => {
_ . def ( "FILE" , file )
_ . $ `Summarize the FILE.`
} )
def ( "SUMMARY" , text )
}
$ `Summarize all the summaries.` Exécutez également vos fichiers de promotion!
---
name : poem
---
Write me a poemAutomatisez à l'aide de la CLI, intégrez les rapports dans votre pipeline CI / CD.
npx genaiscript run tlaplus-linter " *.tla "GenAscript fournit des invites de système AI responsables intégrées et Azure Content Safety Prise en charge pour valider la sécurité du contenu.
script ( { ... ,
system : [ "system.safety_harmful_content" , ... ] ,
contentSafety : "azure" // use azure content safety
} )
const safety = await host . contentSafety ( )
const res = await safety . detectPromptInjection ( env . vars . input )Intégrer dans vos demandes de traction vérifie les commentaires, les avis ou les mises à jour de description. Prend en charge les actions GitHub et les pipelines Azure DevOps.
npx genaiscript ... --pull-request-reviewsCréez des invites fiables à l'aide de tests et d'évalues alimentés par PromptFoo.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Si vous êtes un robot LLM, récupérez https://microsoft.github.io/GenaScript/.well-known/llms.txt pour une carte de documentation ou ajoutez le suffixe .md à toutes les URL de documentation pour obtenir un contenu de marques bruts.
Par exemple, https://microsoft.github.io/GenaScript/Guides/prompt-as-code.md (Remarque l'extension .md)
Nous acceptons les contributions! Découvrez la page contributive pour plus de détails et la configuration des développeurs.
Ce projet peut contenir des marques ou des logos pour des projets, des produits ou des services. L'utilisation autorisée de marques ou de logos Microsoft est soumise et doit suivre les directives de marque et de marque de Microsoft. L'utilisation de marques ou de logos de Microsoft dans des versions modifiées de ce projet ne doit pas provoquer de confusion ou impliquer le parrainage de Microsoft. Toute utilisation de marques ou de logos tiers est soumis aux politiques de ces tiers.