# Prompt Orchestration Markup Language (POML) A markup language designed to bring structure, maintainability, and versatility to advanced prompt engineering for [[Large Language Models (LLMs)]]. POML provides a systematic way to organize prompt components, integrate diverse data types seamlessly, and manage presentation variations, empowering developers to create more sophisticated and reliable LLM applications. ## Key Features - **Structured Prompting Markup**: Employs an HTML-like syntax with semantic components such as `<role>`, `<task>`, and `<example>` to encourage modular design, enhancing prompt readability, reusability, and maintainability. - **Comprehensive Data Handling**: Incorporates specialized data components (e.g., `<document>`, `<table>`, `<img>`) that seamlessly embed or reference external data sources like text files, spreadsheets, and images, with customizable formatting options. - **Decoupled Presentation Styling**: Features a CSS-like styling system that separates content from presentation. This allows developers to modify styling (e.g., verbosity, syntax format) via `<stylesheet>` definitions or inline attributes without altering core prompt logic, mitigating LLM format sensitivity. - **Integrated Templating Engine**: Includes a built-in templating engine with support for variables (`{{ }}`), loops (`for`), conditionals (`if`), and variable definitions (`<let>`) for dynamically generating complex, data-driven prompts. - **Rich Development Toolkit**: - **IDE Extension for [[Visual Studio Code (VSCode)]]**: Provides essential development aids like syntax highlighting, context-aware auto-completion, hover documentation, real-time previews, inline diagnostics for error checking, and integrated interactive testing. - **Software Development Kits (SDKs)**: Offers SDKs for Node.js (JavaScript/TypeScript) and Python for seamless integration into various application workflows and popular LLM frameworks. ## Components - Basic Structural Components for logically structuring the document and basic styling (e.g., `<p>, <b>, <i>, <list>, <item>, ...`) - Intention Components for expressing instructions and constraints (e.g., `<task>, <role>, <example>, <input>, <output>, ...`) - Data Components for importing documents, tables, and images into the prompt (e.g., `<document>, <table>, <img>, ...`) ## References - Documentation: https://microsoft.github.io/poml/latest/ - Source code & examples: https://github.com/microsoft/poml - Visual Studio Code extension: https://marketplace.visualstudio.com/items?itemName=poml-team.poml