
Entorno JavaScript-ish con herramientas convenientes para la ingestión de archivos, desarrollo rápido y extracción de datos estructurados.
Ensamble mediante programación programada para LLM utilizando JavaScript. Orchestrate LLM, herramientas y datos en un solo script.
Diga que quieres crear un script LLM que genera un poema de 'hola mundo'. Puedes escribir el siguiente script:
$ `Write a 'hello world' poem.` La función $ es una etiqueta de plantilla que crea un aviso. Luego se envía el aviso al LLM (configurado), que genera el poema.
Hagamos más interesante agregando archivos, datos y salida estructurada. Digamos que desea incluir un archivo en el mensaje y luego guardar la salida en un archivo. Puedes escribir el siguiente script:
// 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 función def incluye el contenido del archivo y lo optimiza si es necesario para el objetivo LLM. El script de GenaIscript también analiza la salida LLM y extraerá el archivo data.json automáticamente.
Comience rápidamente instalando la extensión del código de Visual Studio o usando la línea de comando.
Crear indicaciones programáticas utilizando JavaScript o TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Editar, depurar, ejecutar y probar sus scripts en el código Visual Studio o con la línea de comandos.
¡Los scripts son archivos! Pueden ser versados, compartidos y bifurcados.
// 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.`Definir, validar y reparar datos utilizando esquemas.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`Manipular PDFS, Docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Manipular datos tabulares de CSV, XLSX, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Extraiga archivos y diff de la salida LLM. Vista previa Cambios en la UI de refactorización.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.Archivos de búsqueda GreP o Fuzz.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Registre las funciones de JavaScript como herramientas (con alojamiento para modelos que no admiten herramientas).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Registre las funciones de JavaScript como herramientas y combine herramientas + solicitante en agentes.
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" ] }
)luego úsalo como herramienta
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Búsqueda de vectores.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Ejecute modelos a través de modelos GitHub o copiloto de GitHub.
script ( { ... , model : "github:gpt-4o" } )Ejecute sus scripts con modelos de código abierto, como Phi-3, usando Ollama, Localai.
script ( { ... , model : "ollama:phi3" } )Deje que la LLM ejecute código en un entorno de ejecución de sandboxed.
script ( { tools : [ "python_code_interpreter" ] } )Ejecutar código en contenedores Docker.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )Ejecute LLM para construir sus indicaciones LLM.
for ( const file of env . files ) {
const { text } = await runPrompt ( ( _ ) => {
_ . def ( "FILE" , file )
_ . $ `Summarize the FILE.`
} )
def ( "SUMMARY" , text )
}
$ `Summarize all the summaries.` ¡Ejecute sus archivos de apuración también!
---
name : poem
---
Write me a poemAutomatice el uso de la CLI, Integre informes en su tubería CI/CD.
npx genaiscript run tlaplus-linter " *.tla "GenaIscript proporciona indicaciones incorporadas del sistema de IA responsable y soportes de seguridad de contenido de Azure para validar la seguridad del contenido.
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 )Integre en sus verificaciones de solicitudes de extracción a través de comentarios, revisiones o actualizaciones de descripción. Admite acciones de GitHub y tuberías de Azure DevOps.
npx genaiscript ... --pull-request-reviewsCree indicaciones confiables utilizando pruebas y evals alimentadas por TRATATFOO.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Si usted es un Crawler LLM, obtenga https://microsoft.github.io/genaiscript/.well- conocido/llms.txt para un mapa de documentación o agregue el sufijo .md a cualquier url de documentación para obtener un contenido de reducción sin procesar.
Por ejemplo, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (tenga en cuenta la extensión .md)
¡Aceptamos contribuciones! Consulte la página contribuyente para obtener detalles y la configuración del desarrollador.
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.