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

Подсказка — это кодирование

Программно собирайте запросы для LLM с помощью JavaScript. Организуйте LLM, инструменты и данные в коде.


Привет, мир

Допустим, вы хотите создать сценарий LLM, который генерирует стихотворение «привет, мир». Вы можете написать следующий сценарий:

$`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 Code или используя командную строку .


✨ Особенности

🎨 Стилизованный JavaScript и TypeScript

Создавайте подсказки программно, используя JavaScript или TypeScript .

def("FILE", env.files, { endsWith: ".pdf" }) $`Summarize FILE. Today is ${new Date()}.`

🚀 Цикл быстрой разработки

Редактируйте, отлаживайте , запускайте и тестируйте свои скрипты в Visual Studio Code или с помощью командной строки .


🔗 Повторное использование и распространение скриптов

Скрипты — это файлы ! Их можно версионировать, делиться ими и разветвлять.

// 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.`

📋 Схемы данных

Определение, проверка и восстановление данных с использованием схем . Встроенная поддержка Zod.

const data = defSchema("MY_DATA", { type: "array", items: { ... } }) $`Extract data from files using ${data} schema.`

📄 Загрузка текста из PDF-файлов, DOCX, ...

Манипулирование файлами PDF , DOCX , ...

def("PDF", env.files, { endsWith: ".pdf" }) const { pages } = await parsers.PDF(env.files[0])

📊 Загрузка таблиц из CSV, XLSX, ...

Обработка табличных данных из CSV , XLSX , ...

def("DATA", env.files, { endsWith: ".csv", sliceHead: 100 }) const rows = await parsers.CSV(env.files[0]) defData("ROWS", rows, { sliceHead: 100 })

📝 Генерация файлов

Извлечь файлы и сделать различия из вывода LLM. Предварительный просмотр изменений в Refactoring UI.

$`Save the result in poem.txt.`
FILE ./poem.txt The quick brown fox jumps over the lazy dog.

🔍 Поиск файлов

Файлы поиска Grep или fuzz.

const { files } = await workspace.grep(/[a-z][a-z0-9]+/, { globs: "*.md" })

Классифицировать

Классифицируйте текст, изображения или их комбинацию.

const joke = await classify( "Why did the chicken cross the road? To fry in the sun.", { yes: "funny", no: "not funny", } )

Инструменты LLM

Регистрация функций JavaScript в качестве инструментов (с резервом для моделей, которые не поддерживают инструменты). Инструменты Model Context Protocol (MCP) также поддерживаются.

defTool( "weather", "query a weather web api", { location: "string" }, async (args) => await fetch(`https://weather.api.api/?location=${args.location}`) )

Агенты LLM

Зарегистрируйте функции 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_git" }) $`Do a statistical analysis of the last commits`

Смотрите исходный код агента git .


🔍 Встроенная ТРЯПКА

Векторный поиск .

const { files } = await retrieval.vectorSearch("cats", "**/*.md")

🐙 Модели GitHub и GitHub Copilot

Запускайте модели через GitHub Models или 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")

Обработка видео

Транскрибируйте и делайте скриншоты своих видео, чтобы вы могли эффективно использовать их в своих запросах на получение степени магистра права.

// 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 для создания подсказок 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 !

--- name: poem --- Write me a poem

Подключаемое секретное сканирование

Просканируйте свои чаты на наличие секретов с помощью секретного сканирования .

{ "secretPatterns": { ..., "OpenAI API Key": "sk-[A-Za-z0-9]{32,48}" } }

⚙ Автоматизация с помощью CLI или API

Автоматизируйте с помощью CLI или API .

npx genaiscript run tlaplus-linter "*.tla"
import { run } from "genaiscript/api" const res = await run("tlaplus-linter", "*.tla")

Безопасность прежде всего!

GenAIScript предоставляет встроенные системные подсказки Responsible AI, а Azure Content Safety поддерживает проверку безопасности контента .

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 Requests с помощью комментариев, обзоров или обновлений описаний. Поддерживает GitHub Actions и Azure DevOps pipelines.

npx genaiscript ... --pull-request-reviews

⭐ Тесты и оценки

Создавайте надежные подсказки с помощью тестов и оценок на базе promptfoo .

script({ ..., tests: { files: "penguins.csv", rubric: "is a data analysis report", facts: "The data refers about penguin population in Antarctica.", }})

Документы, дружественные LLM

Весь контент документов отображается на https://microsoft.github.io/genaiscript/llms-full.txt в разметке. Загрузите его прямо в вашу любимую систему RAG.

Если вы LLM-обходчик, добавьте суффикс .md к любым URL-адресам документации, чтобы получить сырой контент markdown. Например, https://microsoft.github.io/genaiscript/guides/prompt-as-code.md (обратите внимание на расширение .md)

Внося вклад

Мы принимаем взносы! Посетите страницу ВКЛАД для получения подробной информации и настройки разработчика.


Торговые марки

Этот проект может содержать товарные знаки или логотипы проектов, продуктов или услуг. Разрешенное использование товарных знаков или логотипов Microsoft подчиняется и должно соответствовать Руководству по товарным знакам и брендам Microsoft . Использование товарных знаков или логотипов Microsoft в измененных версиях этого проекта не должно вызывать путаницы или подразумевать спонсорство Microsoft. Любое использование товарных знаков или логотипов третьих лиц подчиняется политикам этих третьих лиц.

-
security - not tested
A
license - permissive license
-
quality - not tested

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

GenAIScript — это среда выполнения JavaScript, предназначенная для создания надежных, автоматизируемых скриптов LLM. Каждый GenAIScript может быть автоматически представлен как сервер MCP.

  1. Подсказка — это кодирование
    1. Привет, мир
      1. 🚀 Краткое руководство
        1. ✨ Особенности
          1. 🎨 Стилизованный JavaScript и TypeScript
          2. 🚀 Цикл быстрой разработки
          3. 🔗 Повторное использование и распространение скриптов
          4. 📋 Схемы данных
          5. 📄 Загрузка текста из PDF-файлов, DOCX, ...
          6. 📊 Загрузка таблиц из CSV, XLSX, ...
          7. 📝 Генерация файлов
          8. 🔍 Поиск файлов
        2. Классифицировать
          1. Инструменты LLM
          2. Агенты LLM
          3. 🔍 Встроенная ТРЯПКА
          4. 🐙 Модели GitHub и GitHub Copilot
          5. 💻 Местные модели
          6. 🐍 Интерпретатор кода
          7. 🐳 Контейнеры
          8. Обработка видео
          9. 🧩 Состав магистра права
          10. 🅿️ Оперативная поддержка
          11. Подключаемое секретное сканирование
          12. ⚙ Автоматизация с помощью CLI или API
          13. Безопасность прежде всего!
          14. 💬 Обзоры запросов на извлечение
          15. ⭐ Тесты и оценки
          16. Документы, дружественные LLM
        3. Внося вклад
          1. Торговые марки

            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