Microsoft выпускает язык разметки для оркестрации промтов — POML

Разработка продвинутых приложений на основе больших языковых моделей (LLMs) стала основополагающей в сфере искусственного интеллекта. По мере усложнения промтов — включения в них динамических компонентов, множества ролей, структурированных данных и разнообразных форматов вывода — стали очевидны ограничения подходов, основанных на неструктурированном тексте.

Microsoft выпустила Prompt Orchestration Markup Language (POML) — новый фреймворк с открытым исходным кодом, призванный внести порядок, модульность и расширяемость в разработку промтов для LLMs.

Что такое POML?

POML — это язык разметки, вдохновлённый HTML/XML, предназначенный для создания сложных, удобных в обслуживании и многократно используемых AI-промтов. Он обеспечивает системный подход к:
* определению структуры промта с помощью семантических компонентов и ролей;
* интеграции различных типов данных и внешних ресурсов;
* отделению содержания от представления с помощью таблиц стилей;
* реализации расширенного шаблонирования и логической обработки переменных для динамического создания промтов;
* поддержке разработчиков с помощью экосистемы надёжных инструментов.

Основные возможности

1. Структурированная разметка промтов.

POML использует чёткие семантические элементы, такие как ``, `` и ``, для определения различных логических разделов промта. Этот модульный дизайн делает промты читаемыми, удобными в обслуживании и многократно используемыми.

Пример:
“` You are a science teacher.
Explain gravity using the image below.
Diagram of gravity

Use simple language and keep your answer under 50 words.
“`

2. Комплексная обработка данных.

POML изначально поддерживает встраивание или ссылки на внешние данные различных типов:
* текстовые документы (``);
* электронные таблицы и таблицы (`

`);
* изображения (``);
* другие форматы по мере необходимости.

Это позволяет легко интегрировать справочные материалы, обучающие наборы данных и наглядные пособия в промты.

3. Разделение стилей представления.

Вдохновлённый CSS, POML поддерживает систему стилей, которая отделяет содержание от форматирования и ограничений вывода. Стили можно задавать в блоках `` или с помощью встроенных атрибутов, что упрощает внесение изменений без изменения логической структуры промта.

Пример:
“`

Please provide a detailed, step-by-step explanation suitable for adults.

“`

4. Интегрированный механизм шаблонизации.

POML включает в себя мощный встроенный механизм шаблонизации, поддерживающий:
* переменные: `{{ username }}`;
* циклы: `for x in data`;
* условные операторы: `if … else`;
* определения: ``.

Эта динамическая система позволяет разработчикам программно генерировать промты и управлять сложными вариациями в масштабе.

5. Богатая экосистема инструментов.

Язык поддерживается набором инструментов для разработчиков:
* расширение для VS Code: обеспечивает подсветку синтаксиса, автозаполнение, всплывающую документацию, диагностику и предварительный просмотр форматирования и логики промта;
* SDK для Node.js (TypeScript/JavaScript) и Python: упрощают интеграцию с существующими рабочими процессами и популярными фреймворками LLM;
* конфигурация с вашим предпочтительным поставщиком LLM (например, OpenAI, Azure) также проста, что позволяет быстро тестировать и развёртывать.

Пример промта с ссылкой на изображение

Образец промта для объяснения ребёнку концепции фотосинтеза может выглядеть так:
“` You are a patient teacher explaining concepts to a 10-year-old.
Explain the concept of photosynthesis using the provided image.
Diagram of photosynthesis

Start with “Hey there, future scientist!” and keep the explanation under 100 words.
“`

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

Техническая архитектура и философия

POML разработан в соответствии с концепцией «слоя представления», используемой в традиционной разработке фронтенда (архитектура MVC). Разметка определяет представление, а не бизнес-логику или доступ к данным, что обеспечивает чистое разделение и упрощает рефакторинг промтов, тестирование вариаций и обеспечение согласованности рабочих процессов агентов и автоматизированного тестирования.

Установка и начало работы

POML — это открытый исходный код (лицензия MIT) и доступен на GitHub. Вы можете:
* установить расширение для VS Code с рынка;
* использовать SDK для Node.js (npm install pomljs) или Python (pip install poml);
* обратиться к подробной документации POML для ознакомления с синтаксисом, примерами и руководствами по интеграции.

Заключение

Prompt Orchestration Markup Language (POML) вносит столь необходимую структуру, масштабируемость и удобство обслуживания в разработку промтов для разработчиков искусственного интеллекта. Его модульный синтаксис, комплексная обработка данных, разделение стилей, динамическое шаблонирование и богатая экосистема интеграции позиционируют его как многообещающий стандарт для оркестрации продвинутых приложений LLM.

1. Какие проблемы призван решить POML в разработке промтов для LLMs?

Ответ: POML призван внести порядок, модульность и расширяемость в разработку промтов для больших языковых моделей (LLMs). Он решает проблемы, связанные с усложнением промтов, включая включение динамических компонентов, множества ролей, структурированных данных и разнообразных форматов вывода.

2. Какие основные возможности предоставляет POML для разработчиков?

Ответ: POML предоставляет разработчикам следующие основные возможности:
* структурированная разметка промтов с использованием семантических элементов;
* комплексная обработка данных, включая встраивание внешних данных различных типов;
* разделение стилей представления с помощью системы стилей, вдохновлённой CSS;
* интегрированный механизм шаблонизации, поддерживающий переменные, циклы, условные операторы и определения;
* богатая экосистема инструментов для разработчиков, включая расширение для VS Code, SDK для Node.js и Python, а также возможность конфигурации с предпочтительным поставщиком LLM.

3. Какие типы данных можно интегрировать в промты с помощью POML?

Ответ: с помощью POML можно интегрировать различные типы данных, включая:
* текстовые документы (``);
* электронные таблицы и таблицы (`

`);
* изображения (``);
* другие форматы по мере необходимости.

4. Какие инструменты доступны для разработчиков, работающих с POML?

Ответ: для разработчиков, работающих с POML, доступны следующие инструменты:
* расширение для VS Code, обеспечивающее подсветку синтаксиса, автозаполнение, всплывающую документацию, диагностику и предварительный просмотр форматирования и логики промта;
* SDK для Node.js (TypeScript/JavaScript) и Python, упрощающие интеграцию с существующими рабочими процессами и популярными фреймворками LLM;
* возможность конфигурации с предпочтительным поставщиком LLM, например, OpenAI или Azure.

Источник