
JavaScript-ish-Umgebung mit praktischem Werkzeug für die Aufnahme von Dateien, eine sofortige Entwicklung und strukturierte Datenextraktion.
Programmgestützte Eingabeaufforderungen für LLMs mit JavaScript. Orchestrieren Sie LLMs, Tools und Daten in einem einzigen Skript.
Sagen Sie zu Ihnen möchten ein LLM -Skript erstellen, das ein Gedicht "Hello World" erzeugt. Sie können das folgende Skript schreiben:
$ `Write a 'hello world' poem.` Die $ -Funktion ist ein Vorlagen -Tag, das eine Eingabeaufforderung erstellt. Die Eingabeaufforderung wird dann an die LLM (Sie konfiguriert) gesendet, die das Gedicht generiert.
Lassen Sie es uns interessanter machen, indem wir Dateien, Daten und strukturierte Ausgaben hinzufügen. Angenommen, Sie möchten eine Datei in die Eingabeaufforderung einbeziehen und dann 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 def -Funktion enthält den Inhalt der Datei und optimiert sie bei Bedarf für das Ziel -LLM. Das Genaiscript -Skript analysiert auch die LLM -Ausgabe und extrahiert die Datei data.json automatisch.
Erstigen Sie sich schnell, indem Sie die Visual Studio -Codeerweiterung installieren oder die Befehlszeile verwenden.
Erstellen Sie die Eingabeaufforderungen programmgesteuert mit JavaScript oder TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Bearbeiten, debuggen, ausführen und testen Sie Ihre Skripte im Visual Studio -Code oder mit der Befehlszeile.
Skripte sind Dateien! Sie können versioniert, geteilt und gegabelt 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.`Definieren, validieren und reparieren Sie Daten mithilfe von Schemas.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`PDFs manipulieren, docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Manipulieren Sie tabellarische Daten von CSV, XLSX, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Extrahieren Sie Dateien und diff aus der LLM -Ausgabe. Vorschau von Änderungen der Refactoring -Benutzeroberfläche.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.Grep- oder Fuzz -Suchdateien.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Registrieren Sie JavaScript -Funktionen als Tools (mit Fallback für Modelle, die keine Tools unterstützen).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Registrieren Sie JavaScript -Funktionen als Tools und kombinieren Sie Tools + Eingabeaufforderung in 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" ] }
)Verwenden Sie es dann als Werkzeug
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Vektorsuche.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Führen Sie Modelle über GitHub -Modelle oder Github -Copilot aus.
script ( { ... , model : "github:gpt-4o" } )Führen Sie Ihre Skripte mit Open-Source-Modellen wie PHI-3 mit ullama, Localai aus.
script ( { ... , model : "ollama:phi3" } )Lassen Sie den LLM -Code in einer Sandbox -Ausführungsumgebung ausführen.
script ( { tools : [ "python_code_interpreter" ] } )Code in Docker -Containern ausführen.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )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.` Führen Sie auch Ihre Prompty -Dateien aus!
---
name : poem
---
Write me a poemIntegrieren Sie mithilfe der CLI Berichte in Ihre CI/CD -Pipeline.
npx genaiscript run tlaplus-linter " *.tla "Genaiscript bietet integrierte verantwortungsbewusste KI-Systemaufforderungen und die Sicherheit von Azure-Inhalten unterstützt die Sicherheit von Inhalten.
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 )Integrieren Sie in Ihre Pull -Anfragen Überprüfungen durch Kommentare, Bewertungen oder Beschreibung Updates. Unterstützt GitHub -Aktionen und Azure DevOps -Pipelines.
npx genaiscript ... --pull-request-reviewsErstellen Sie zuverlässige Eingabeaufforderungen anhand von Tests und Evalen, die von promptfoo betrieben werden.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Wenn Sie ein LLM-Crawler sind, ficken Sie https://microsoft.github.io/Genaiscript/.well-nnlmlms.txt für eine Dokumentationskarte oder fügen Sie das .md Suffix zu allen Dokumentations-URLs hinzu, um einen RAW-Markdown-Inhalt zu erhalten.
Zum Beispiel https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (Beachten Sie die .md-Erweiterung)
Wir akzeptieren Beiträge! Schauen Sie sich die Mitarbeiterseite für Details und Entwickler -Setups an.
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Verwendung von Microsoft -Marken oder Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss folgen. Die Verwendung von Microsoft -Marken oder Logos in geänderten Versionen dieses Projekts darf keine Verwirrung verursachen oder Microsoft -Sponsoring implizieren. Jede Verwendung von Marken oder Logos von Drittanbietern unterliegt den Richtlinien dieses Drittanbieters.