POMLでAIプロンプトを構造化して管理する
主流なAI(GPT)では、プロンプト(指示)を自然言語で与えて、タスクを実行させる。
そこで、誰もが一度は「自然言語を使った指示はあいまいで、実行ごとに結果が困って困る」「利用者によってプロンプトのフォーマットが異なるので管理しづらい」と思ったことがあるだろう。
自然言語は「あいまいさ」があって実行ごとに結果が異なる場合はあるので、DSLで厳密な指示をしたい気持ちが大きくなってきた
— ダーシノ / NES.css (@bc_rikko) August 6, 2025
そんなことを思っていたところ、MicrosoftがPOML(Prompt Orchestration Markup Language)を公開した。XMLでプロンプトのロールやタスク、例、アウトプットのフォーマット、マルチモーダルデータの統合などを構造化して定義できる。
POMLの基本構文
ファイルには*.poml
という拡張子をつける。
<poml>
<role>あなたは{役割}です。</role>
<task>以下の画像を使って{タスク}をしてください。</task>
<img src="example.png" alt="◯◯の図解" />
<output-format>
100文字以内で説明してください。
</output-format>
</poml>
<poml>
<!-- コードを使う場合 -->
<code inline="true">const x = 42;</code>
<code lang="javascript">
const ans = 42;
console.log('ans', ans);
</code>
<!-- リスト -->
<list>
<item>Item 1</item>
<item>Item 2</item>
</list>
<!-- 例示 -->
<example>
<input>{country}の首都は?</input>
<output>{country}の首都は{capital}です。</output>
</example>
<!-- ステップバイステップの指示 -->
<stepwise-instructions>
<list>
<item>調査対象の{country}を受け取る</item>
<item>{country}の首都を調べる</item>
<item>結果を{capital}として出力する</item>
</list>
</stepwise-instructions>
</poml>
さいごに
POMLが公開されて日が浅いため、今後どのように変わっていくかはわからない。ただ、構造化してやりたいことを明確に指示できるのは便利なので、今後も注目していきたい。