# 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