
Lingkungan JavaScript-ish dengan alat yang nyaman untuk konsumsi file, pengembangan cepat, dan ekstraksi data terstruktur.
PROMET PROFETS UNTUK LLMS UNTUK MENGGUNAKAN JAVASCRIPT secara terprogram. Mengatur LLMS, alat, dan data dalam satu skrip.
Katakan kepada Anda ingin membuat skrip LLM yang menghasilkan puisi 'Hello World'. Anda dapat menulis skrip berikut:
$ `Write a 'hello world' poem.` Fungsi $ adalah tag template yang membuat prompt. Prompt kemudian dikirim ke LLM (Anda dikonfigurasi), yang menghasilkan puisi.
Mari kita buat lebih menarik dengan menambahkan file, data, dan output terstruktur. Katakanlah Anda ingin memasukkan file dalam prompt, dan kemudian menyimpan output dalam file. Anda dapat menulis skrip berikut:
// 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.` Fungsi def mencakup konten file, dan mengoptimalkannya jika perlu untuk target LLM. Skrip Genaiscript juga mem -parsing output LLM dan akan mengekstrak file data.json secara otomatis.
Mulailah dengan cepat dengan menginstal ekstensi kode Visual Studio atau menggunakan baris perintah.
Bangun prompt secara terprogram menggunakan JavaScript atau TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Edit, debug, jalankan, dan uji skrip Anda dalam kode studio visual atau dengan baris perintah.
Script adalah file! Mereka dapat diversi, dibagikan, dan bercabang.
// 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.`Tentukan, validasi, dan perbaikan data menggunakan skema.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`Memanipulasi pdfs, docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Memanipulasi data tabel dari CSV, XLSX, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Ekstrak file dan berbeda dari output LLM. Pratinjau Perubahan dalam UI refactoring.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.File pencarian grep atau fuzz.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Daftarkan fungsi JavaScript sebagai alat (dengan fallback untuk model yang tidak mendukung alat).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Daftarkan fungsi javascript sebagai alat dan gabungkan alat + prompt menjadi agen.
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" ] }
)Kemudian gunakan sebagai alat
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Pencarian Vektor.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Jalankan model melalui model GitHub atau github copilot.
script ( { ... , model : "github:gpt-4o" } )Jalankan skrip Anda dengan model open source, seperti phi-3, menggunakan Ollama, Localai.
script ( { ... , model : "ollama:phi3" } )Biarkan kode LLM menjalankan di lingkungan eksekusi kotak pasir.
script ( { tools : [ "python_code_interpreter" ] } )Jalankan kode dalam wadah Docker.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )Jalankan LLM untuk membangun petunjuk LLM Anda.
for ( const file of env . files ) {
const { text } = await runPrompt ( ( _ ) => {
_ . def ( "FILE" , file )
_ . $ `Summarize the FILE.`
} )
def ( "SUMMARY" , text )
}
$ `Summarize all the summaries.` Jalankan file prompty Anda juga!
---
name : poem
---
Write me a poemOtomatis menggunakan CLI, mengintegrasikan laporan dalam pipa CI/CD Anda.
npx genaiscript run tlaplus-linter " *.tla "Genaiscript menyediakan petunjuk sistem AI yang bertanggung jawab dan dukungan keamanan konten Azure untuk memvalidasi keselamatan konten.
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 )Integrasi ke dalam pemeriksaan permintaan tarik Anda melalui komentar, ulasan, atau pembaruan deskripsi. Mendukung tindakan GitHub dan saluran pipa Azure DevOps.
npx genaiscript ... --pull-request-reviewsBangun petunjuk yang andal menggunakan tes dan eval yang ditenagai oleh promptfoo.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Jika Anda seorang crawler LLM, ambil https://microsoft.github.io/genaiscript/.well-known/llms.txt untuk peta dokumentasi atau tambahkan sufiks .md ke URL dokumentasi apa pun untuk mendapatkan konten penanda tangan mentah.
Misalnya, https://microsoft.github.io/genaiscript/guides/promppt-as-code.md (Perhatikan ekstensi .md)
Kami menerima kontribusi! Periksa halaman yang berkontribusi untuk detail dan pengaturan pengembang.
Proyek ini dapat berisi merek dagang atau logo untuk proyek, produk, atau layanan. Penggunaan resmi merek dagang atau logo Microsoft tunduk dan harus mengikuti pedoman merek dagang & merek Microsoft. Penggunaan merek dagang atau logo Microsoft dalam versi yang dimodifikasi dari proyek ini tidak boleh menyebabkan kebingungan atau menyiratkan sponsor Microsoft. Setiap penggunaan merek dagang atau logo pihak ketiga tunduk pada kebijakan pihak ketiga tersebut.