Skip to main content
Glama

GenAIScript

Official
by microsoft
MIT License
43
2,653
  • Linux
  • Apple

Un cuadrado amarillo con la palabra "gen" en letras negras minúsculas encima de las letras negras mayúsculas "AI".

GenAIScript

La incitación es codificación

Ensamble programáticamente indicaciones para LLM con JavaScript. Organice LLM, herramientas y datos en código.


Hola Mundo

Supongamos que desea crear un guion LLM que genere un poema de "Hola mundo". Puede escribir el siguiente guion:

$`Write a 'hello world' poem.`

La función $ es una etiqueta de plantilla que crea una propuesta. Esta propuesta se envía al LLM (que usted configuró), que genera el poema.

Hagámoslo más interesante añadiendo archivos, datos y una salida estructurada. Supongamos que quieres incluir un archivo en el prompt 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 LLM de destino. El script GenAIScript también analiza la salida del LLM y extrae el archivo data.json automáticamente.


🚀 Guía de inicio rápido

Comience rápidamente instalando la extensión de Visual Studio Code o utilizando la línea de comandos .


✨ Características

JavaScript y TypeScript estilizados

Cree indicaciones mediante programación utilizando JavaScript o TypeScript .

def("FILE", env.files, { endsWith: ".pdf" }) $`Summarize FILE. Today is ${new Date()}.`

🚀 Bucle de desarrollo rápido

Edite, depure , ejecute y pruebe sus scripts en Visual Studio Code o con la línea de comandos .


🔗 Reutilizar y compartir scripts

¡Los scripts son archivos ! Se pueden versionar, compartir y bifurcar.

// 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.`

📋 Esquemas de datos

Definir, validar y reparar datos mediante esquemas . Compatibilidad con Zod integrada.

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

📄 Ingerir texto desde archivos PDF, DOCX, ...

Manipular archivos PDF , DOCX , ...

def("PDF", env.files, { endsWith: ".pdf" }) const { pages } = await parsers.PDF(env.files[0])

📊 Ingerir tablas desde CSV, XLSX, ...

Manipular datos tabulares desde CSV , XLSX , ...

def("DATA", env.files, { endsWith: ".csv", sliceHead: 100 }) const rows = await parsers.CSV(env.files[0]) defData("ROWS", rows, { sliceHead: 100 })

📝 Generar archivos

Extraiga archivos y compare la salida de LLM. Previsualice los cambios en la interfaz de refactorización.

$`Save the result in poem.txt.`
FILE ./poem.txt The quick brown fox jumps over the lazy dog.

🔍 Búsqueda de archivos

Buscar archivos mediante grep o fuzz.

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

Clasificar

Clasifica texto, imágenes o una mezcla de todo.

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

Herramientas LLM

Registrar funciones de JavaScript como herramientas (con respaldo para modelos que no las admiten). También se admiten las herramientas del Protocolo de Contexto de Modelo (MCP) .

defTool( "weather", "query a weather web api", { location: "string" }, async (args) => await fetch(`https://weather.api.api/?location=${args.location}`) )

Agentes de LLM

Registre las funciones de JavaScript como herramientas y combine herramientas + indicaciones 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_git" }) $`Do a statistical analysis of the last commits`

Vea el código fuente del agente git .


🔍 RAG Incorporado

Búsqueda de vectores .

const { files } = await retrieval.vectorSearch("cats", "**/*.md")

🐙 Modelos de GitHub y GitHub Copilot

Ejecute modelos a través de GitHub Models o GitHub Copilot .

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

💻 Modelos locales

Ejecute sus scripts con modelos de código abierto , como Phi-3 , usando Ollama , LocalAI .

script({ ..., model: "ollama:phi3" })

🐍 Intérprete de código

Deje que LLM ejecute el código en un entorno de ejecución aislado.

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

🐳 Contenedores

Ejecutar código en contenedores Docker.

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

Procesamiento de vídeo

Transcribe y captura capturas de pantalla de tus videos para que puedas alimentarlos de manera eficiente en tus solicitudes de LLM.

// transcribe const transcript = await transcript("path/to/audio.mp3") // screenshots at segments const frames = await ffmpeg.extractFrames("path_url_to_video", { transcript }) def("TRANSCRIPT", transcript) def("FRAMES", frames)

Composición de LLM

Ejecute LLMs para crear 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.`

🅿️ Soporte rápido

¡Ejecuta también tus archivos Prompty !

--- name: poem --- Write me a poem

Escaneo secreto conectable

Escanea tus chats en busca de secretos usando el escaneo de secretos .

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

⚙ Automatizar con CLI o API

Automatizar utilizando la CLI o API .

npx genaiscript run tlaplus-linter "*.tla"
import { run } from "genaiscript/api" const res = await run("tlaplus-linter", "*.tla")

¡Seguridad ante todo!

GenAIScript proporciona indicaciones integradas del sistema de IA responsable y Azure Content Safety admite la validación de 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)

💬 Reseñas de solicitudes de extracción

Integre las comprobaciones de sus solicitudes de extracción mediante comentarios, revisiones o actualizaciones de descripciones. Compatible con GitHub Actions y canalizaciones de Azure DevOps.

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

⭐ Pruebas y evaluaciones

Cree indicaciones confiables utilizando pruebas y evaluaciones impulsadas por promptfoo .

script({ ..., tests: { files: "penguins.csv", rubric: "is a data analysis report", facts: "The data refers about penguin population in Antarctica.", }})

Documentos compatibles con LLM

Todo el contenido de la documentación se genera en Markdown en https://microsoft.github.io/genaiscript/llms-full.txt . Introdúzcalo directamente en su sistema RAG preferido.

Si trabajas con LLM, añade el sufijo .md a las URL de la documentación para obtener contenido Markdown sin procesar. Por ejemplo, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (ten en cuenta la extensión .md).

Contribuyendo

¡Aceptamos contribuciones! Consulta la página de CONTRIBUYENTES para obtener más información y la configuración para desarrolladores.


Marcas comerciales

Este proyecto puede contener marcas comerciales o logotipos de proyectos, productos o servicios. El uso autorizado de las marcas comerciales o logotipos de Microsoft está sujeto a las Directrices de Marcas Registradas y de Marca de Microsoft y debe cumplirlas. El uso de marcas comerciales o logotipos de Microsoft en versiones modificadas de este proyecto no debe causar confusión ni implicar patrocinio por parte de Microsoft. El uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de dichos terceros.

Related MCP Servers

  • -
    security
    F
    license
    -
    quality
    A production-ready MCP server built with FastAPI, providing an enhanced tool registry for creating, managing, and documenting AI tools for Large Language Models (LLMs).
    Last updated -
    13
    Python
  • -
    security
    F
    license
    -
    quality
    A server that enables AI assistants to execute JavaScript code with persistent context through stateful REPL sessions, file operations, and package management features.
    Last updated -
    TypeScript
    • Linux
    • Apple
  • -
    security
    F
    license
    -
    quality
    Allows AI models to run JavaScript/TypeScript code through Model Context Protocol tool calls, supporting both one-time script execution and stateful REPL sessions with npm package integration.
    Last updated -
    TypeScript
  • -
    security
    F
    license
    -
    quality
    A server that provides access to Google Gemini AI capabilities including text generation, image analysis, YouTube video analysis, and web search functionality through the MCP protocol.
    Last updated -
    2
    TypeScript
    • Apple

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/microsoft/genaiscript'

If you have feedback or need assistance with the MCP directory API, please join our Discord server