
Среда JavaScript с удобным инструментом для приема файлов, быстрого разработки и извлечения структурированных данных.
Программно собирайте подсказки для LLM с использованием JavaScript. Orchestrate LLMS, инструменты и данные в одном сценарии.
Скажите, что вы хотите создать сценарий LLM, который генерирует стихотворение «Hello World». Вы можете написать следующий скрипт:
$ `Write a 'hello world' poem.` Функция $ - это шаблон, который создает подсказку. Подсказка затем отправляется в LLM (вы настроили), что генерирует стихотворение.
Давайте сделаем это более интересным, добавив файлы, данные и структурированный выход. Скажем, вы хотите включить файл в подсказку, а затем сохранить вывод в файле. Вы можете написать следующий скрипт:
// 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.` Функция def включает содержимое файла и оптимизирует его, если это необходимо для целевого LLM. Скрипт Genaiscript также анализирует выход LLM и автоматически извлекает файл data.json .
Начните быстро, установив расширение кода Visual Studio или используя командную строку.
Создайте запросы программно с помощью JavaScript или TypeScript.
def ( "FILE" , env . files , { endsWith : ".pdf" } )
$ `Summarize FILE. Today is ${ new Date ( ) } .`Редактировать, отлаживать, запустить и проверить свои сценарии в коде Visual Studio или с помощью командной строки.
Сценарии - это файлы! Они могут быть версированы, обмен и раздвоены.
// 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.`Определить, проверять и восстановить данные с использованием схем.
const data = defSchema ( "MY_DATA" , { type : "array" , items : { ... } } )
$ `Extract data from files using ${ data } schema.`Манипулировать PDFS, docx, ...
def ( "PDF" , env . files , { endsWith : ".pdf" } )
const { pages } = await parsers . PDF ( env . files [ 0 ] )Манипулировать табличными данными из CSV, XLSX, ...
def ( "DATA" , env . files , { endsWith : ".csv" , sliceHead : 100 } )
const rows = await parsers . CSV ( env . files [ 0 ] )
defData ( "ROWS" , rows , { sliceHead : 100 } )Извлеките файлы и дифференцируйте из выхода LLM. Предварительный просмотр изменений в рефакторинге пользовательского интерфейса.
$ `Save the result in poem.txt.` FILE ./poem.txt
The quick brown fox jumps over the lazy dog.Grep или Fuzz File File.
const { files } = await workspace . grep ( / [a-z][a-z0-9]+ / , { globs : "*.md" } )Зарегистрируйте функции JavaScript в качестве инструментов (с запасной защитой для моделей, которые не поддерживают инструменты).
defTool (
"weather" ,
"query a weather web api" ,
{ location : "string" } ,
async ( args ) =>
await fetch ( `https://weather.api.api/?location= ${ args . location } ` )
)Зарегистрируйте функции JavaScript как инструменты и объедините инструменты + приглашение к агентам.
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" ] }
)Затем используйте его в качестве инструмента
script ( { tools : "agent" } )
$ `Do a statistical analysis of the last commits`Векторный поиск.
const { files } = await retrieval . vectorSearch ( "cats" , "**/*.md" )Запустите модели через модели Github или Github Copilot.
script ( { ... , model : "github:gpt-4o" } )Запустите свои сценарии с помощью моделей с открытым исходным кодом, таких как PHI-3, используя Ollama, Localai.
script ( { ... , model : "ollama:phi3" } )Пусть LLM запустит код в среде выполнения в песочке.
script ( { tools : [ "python_code_interpreter" ] } )Запустите код в контейнерах Docker.
const c = await host . container ( { image : "python:alpine" } )
const res = await c . exec ( "python --version" )Запустите LLMS, чтобы построить свои подсказки LLM.
for ( const file of env . files ) {
const { text } = await runPrompt ( ( _ ) => {
_ . def ( "FILE" , file )
_ . $ `Summarize the FILE.`
} )
def ( "SUMMARY" , text )
}
$ `Summarize all the summaries.` Запустите свои Prompty Files!
---
name : poem
---
Write me a poemАвтоматизируйте использование CLI, интегрируйте отчеты в ваш трубопровод CI/CD.
npx genaiscript run tlaplus-linter " *.tla "GeniScript предоставляет встроенные ответственные подсказки системы ИИ и поддержку безопасности контента Azure для проверки безопасности контента.
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 )Интегрируйте в свои проверки запросов на привлечение через комментарии, обзоры или описание обновлений. Поддерживает действия GitHub и трубопроводы Azure DevOps.
npx genaiscript ... --pull-request-reviewsСоздайте надежные подсказки, используя тесты и Evals, работающие на QuickFoo.
script ( { ... , tests : {
files : "penguins.csv" ,
rubric : "is a data analysis report" ,
facts : "The data refers about penguin population in Antarctica." ,
} } ) Если вы-липлер LLM, Fetch https://microsoft.github.io/genaiscript/.well-known/llms.txt для карты документации или добавьте суффикс .md в любые URL-адреса документации, чтобы получить необработанное содержимое отметки.
Например, https://microsoft.github.io/genaiscript/guides/prompt-s-code.md (обратите внимание на расширение .md)
Мы принимаем вклад! Проверьте страницу для получения подробной информации и настройку разработчика.
Этот проект может содержать товарные знаки или логотипы для проектов, продуктов или услуг. Уполномоченное использование товарных знаков или логотипов Microsoft подлежит и должно следовать указаниям Microsoft по товарной марке и брендам. Использование товарных знаков Microsoft или логотипов в модифицированных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование сторонних товарных знаков или логотипов подвержена политике сторонних сторон.