Skip to main content
Glama

GenAIScript

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

Ein gelbes Quadrat mit dem Wort „gen“ in schwarzen Kleinbuchstaben über den schwarzen Großbuchstaben „AI“.

GenAIScript

Eingabeaufforderung ist Codierung

Erstellen Sie programmgesteuert Eingabeaufforderungen für LLMs mit JavaScript. Orchestrieren Sie LLMs, Tools und Daten im Code.

  • JavaScript-Toolbox zum Arbeiten mit Eingabeaufforderungen
  • Abstraktion, um es einfach und produktiv zu machen
  • Nahtlose Visual Studio Code-Integration oder flexible Befehlszeile
  • Integrierte Unterstützung für GitHub Copilot und GitHub Models, OpenAI, Azure OpenAI, Anthropic und mehr
  • 📄 Lesen Sie die ONLINE-DOKUMENTATION unter microsoft.github.io/genaiscript
  • 💬 Treten Sie dem Discord-Server bei
  • 📝 Lesen Sie den Blog für die neuesten Nachrichten
  • 📺 Sehen Sie sich Mr. Maedas gemütliche KI-Küche an
  • 🤖 Agenten - lesen Sie die llms-full.txt

Hallo Welt

Angenommen, Sie möchten ein LLM-Skript erstellen, das ein „Hallo Welt“-Gedicht generiert. Sie können das folgende Skript schreiben:

$`Write a 'hello world' poem.`

Die Funktion $ ist ein Vorlagentag, der eine Eingabeaufforderung erstellt. Diese wird dann an das von Ihnen konfigurierte LLM gesendet, das das Gedicht generiert.

Machen wir es interessanter, indem wir Dateien, Daten und strukturierte Ausgabe hinzufügen. Angenommen, Sie möchten eine Datei in die Eingabeaufforderung einbinden und die Ausgabe in einer Datei speichern. Sie können das folgende Skript schreiben:

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

Die Funktion def bindet den Inhalt der Datei ein und optimiert ihn gegebenenfalls für das Ziel-LLM. Das GenAIScript-Skript analysiert außerdem die LLM-Ausgabe und extrahiert die Datei data.json automatisch.


🚀 Kurzanleitung

Legen Sie schnell los, indem Sie die Visual Studio Code-Erweiterung installieren oder die Befehlszeile verwenden.


✨ Funktionen

🎨 Stilisiertes JavaScript und TypeScript

Erstellen Sie Eingabeaufforderungen programmgesteuert mit JavaScript oder TypeScript .

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

🚀 Schnelle Entwicklungsschleife

Bearbeiten, debuggen , ausführen und testen Sie Ihre Skripts in Visual Studio Code oder mit der Befehlszeile .


🔗 Skripte wiederverwenden und teilen

Skripte sind Dateien ! Sie können versioniert, geteilt und geforkt werden.

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

📋 Datenschemata

Definieren, validieren und reparieren Sie Daten mithilfe von Schemata . Integrierte Zod-Unterstützung.

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

📄 Text aus PDFs, DOCX, ... aufnehmen

Bearbeiten Sie PDFs , DOCX , ...

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

📊 Tabellen aus CSV, XLSX, ... aufnehmen

Bearbeiten Sie tabellarische Daten aus CSV , XLSX , ...

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

📝 Dateien generieren

Extrahieren Sie Dateien und vergleichen Sie sie mit der LLM-Ausgabe. Zeigen Sie Änderungen in der Refactoring-Benutzeroberfläche in der Vorschau an.

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

🔍 Dateisuche

Grep- oder Fuzz- Suchdateien .

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

Klassifizieren

Klassifizieren Sie Text, Bilder oder eine Mischung aus allem.

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

LLM-Tools

Registrieren Sie JavaScript-Funktionen als Tools (mit Fallback für Modelle, die keine Tools unterstützen). Model Context Protocol (MCP)-Tools werden ebenfalls unterstützt.

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

LLM-Agenten

Registrieren Sie JavaScript-Funktionen als Tools und kombinieren Sie Tools + Eingabeaufforderung zu Agenten.

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"] } )

dann benutze es als Werkzeug

script({ tools: "agent_git" }) $`Do a statistical analysis of the last commits`

Siehe die Git-Agent-Quelle .


🔍 RAG integriert

Vektorsuche .

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

🐙 GitHub Models und GitHub Copilot

Führen Sie Modelle über GitHub Models oder GitHub Copilot aus.

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

💻 Lokale Modelle

Führen Sie Ihre Skripte mit Open-Source-Modellen wie Phi-3 unter Verwendung von Ollama und LocalAI aus.

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

🐍 Code-Interpreter

Lassen Sie den LLM Code in einer Sandbox-Ausführungsumgebung ausführen.

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

🐳 Behälter

Führen Sie Code in Docker -Containern aus.

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

Videoverarbeitung

Transkribieren Sie Ihre Videos und machen Sie Screenshots, damit Sie sie effizient in Ihre LLM-Anfragen einspeisen können.

// 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)

🧩 LLM-Komposition

Führen Sie LLMs aus , um Ihre LLM-Eingabeaufforderungen zu erstellen.

for (const file of env.files) { const { text } = await runPrompt((_) => { _.def("FILE", file) _.$`Summarize the FILE.` }) def("SUMMARY", text) } $`Summarize all the summaries.`

🅿️ Schnelle Unterstützung

Führen Sie auch Ihre Prompty- Dateien aus!

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

Pluggable Secret Scanning

Scannen Sie Ihre Chats mithilfe der Geheimscanfunktion nach Geheimnissen.

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

⚙ Automatisieren mit CLI oder API

Automatisieren Sie mithilfe der CLI oder API .

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

Sicherheit geht vor!

GenAIScript bietet integrierte Eingabeaufforderungen des Responsible AI-Systems und Azure Content Safety-Unterstützung zur Validierung der Inhaltssicherheit .

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)

💬 Pull Request-Überprüfungen

Integrieren Sie Checks in Ihre Pull Requests durch Kommentare, Reviews oder Beschreibungsaktualisierungen. Unterstützt GitHub Actions und Azure DevOps-Pipelines.

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

⭐ Tests und Evaluierungen

Erstellen Sie zuverlässige Eingabeaufforderungen mithilfe von Tests und Auswertungen, die von promptfoo unterstützt werden.

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

LLM-freundliche Dokumente

Der gesamte Inhalt der Dokumentation wird unter https://microsoft.github.io/genaiscript/llms-full.txt in Markdown gerendert. Sie können ihn direkt in Ihr bevorzugtes RAG-System einspeisen.

Wenn Sie ein LLM-Crawler sind, fügen Sie den Dokumentations-URLs die Endung .md hinzu, um einen unverarbeiteten Markdown-Inhalt zu erhalten. Beispiel: https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (beachten Sie die Endung .md).

Beitragen

Wir freuen uns über Beiträge! Weitere Informationen und Informationen zur Entwicklereinrichtung finden Sie auf der Seite „Beiträge“ .


Marken

Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienste enthalten. Die autorisierte Verwendung von Microsoft-Marken oder -Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss diese einhalten. Die Verwendung von Microsoft-Marken oder -Logos in modifizierten Versionen dieses Projekts darf weder Verwirrung stiften noch eine Förderung durch Microsoft implizieren. Jede Verwendung von Marken oder Logos Dritter unterliegt den Richtlinien dieser Dritten.

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