![]()
GenAIScript
La incitación es codificación
Ensamble programáticamente indicaciones para LLM con JavaScript. Organice LLM, herramientas y datos en código.
Caja de herramientas de JavaScript para trabajar con indicaciones
Abstracción para hacerlo fácil y productivo
Integración perfecta con Visual Studio Code o línea de comandos flexible
Compatibilidad integrada con GitHub Copilot y GitHub Models, OpenAI, Azure OpenAI, Anthropic y más
📄 Lea la DOCUMENTACIÓN EN LÍNEA en
💬 Únete al servidor de Discord
📝 Lee el blog para conocer las últimas novedades
📺 Mira la acogedora cocina con inteligencia artificial del Sr. Maeda
🤖 Agentes: lean el archivo llms-full.txt
Related MCP server: MCP Gemini API Server
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
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 poemEscaneo 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.
Appeared in Searches
- A platform for datasets and data management
- No-code platforms for application development using TypeScript, JavaScript, Python, with MCP server integration via agentic orchestration
- Tools and Techniques for Debugging UI in Web Development
- The most downloaded Minecraft Plugin (MCP) right now
- Workflows in n8n for downloading from Google Drive