GenAIScript

Official
by microsoft
MIT License
2,575
  • Linux
  • Apple

Integrations

  • Enables execution of code in Docker containers, allowing LLMs to run isolated code environments for data processing or computation tasks.

  • Provides video processing capabilities including transcription and frame extraction to prepare video content for LLM analysis.

  • Allows querying and analyzing repository data using Git tools, enabling statistical analysis of commits and other Git operations.

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
    A
    license
    -
    quality
    MCP Server for the Gentoro services, enabling Claude to interact with Gentoro, which allows users to create and integrate tools into a common Bridge, defining all available capabilities.
    Last updated -
    61
    2
    TypeScript
    Apache 2.0
  • A
    security
    A
    license
    A
    quality
    TypeScript-based MCP server designed to enhance code editing experiences by providing features such as hover information, code completion, and diagnostics.
    Last updated -
    3
    13
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    A TypeScript-based MCP server that generates API clients from OpenAPI specifications, allowing automated code generation through natural language.
    Last updated -
    1
    64
    JavaScript
    MIT License
    • Apple
  • -
    security
    F
    license
    -
    quality
    A TypeScript-based server project that can be integrated with Cursor IDE as an MCP (Model Control Protocol) server, enabling enhanced development capabilities.
    Last updated -
    4
    TypeScript

View all related MCP servers

ID: 4pijmyi7gc