![]()
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
💬 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
Related MCP server: MCP Gemini API Server
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
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 poemPluggable 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.
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