我做了微软不会做的事——更新了POML VS Code扩展
摘要
POML是微软推出的一种新的标记语言,用于结构化提示工程。本文介绍了一个更新的VS Code扩展,作者声称微软不会更新它。
查看缓存全文
缓存时间: 2026/05/21 13:34
korgano/poml
源: https://github.com/korgano/poml
POML: Prompt Orchestration Markup Language
文档 (https://microsoft.github.io/poml/) VSCode 扩展 (https://marketplace.visualstudio.com/items?itemName=poml-team.poml) PyPI (https://pypi.org/project/poml/) npm (latest) (https://www.npmjs.com/package/pomljs) 测试状态 (https://github.com/microsoft/poml/actions/workflows/test.yml) 许可证: MIT (https://opensource.org/licenses/MIT) Discord (https://discord.gg/FhMCqWzAn6)
POML (Prompt Orchestration Markup Language) 是一种新颖的标记语言,旨在为大型语言模型 (LLM) 的高级提示工程带来结构化、可维护性和多功能性。它解决了提示开发中的常见挑战,例如缺乏结构、复杂的数据集成、格式敏感性和工具不足。POML 提供了一种系统化的方式来组织提示组件、无缝集成多样化的数据类型并管理呈现变化,赋能开发者构建更复杂、更可靠的 LLM 应用。
演示视频
POML 五分钟指南 (https://youtu.be/b9WDcFsKixo)
主要特性
- 结构化提示标记:采用类似 HTML 的语法,包含语义组件如
<role>、<context>和<instructions>,鼓励模块化设计,增强提示的可读性、可复用性和可维护性。 - 全面的数据处理:包含专门的数据组件(例如
<data>、<image>),通过定义或内联属性无缝嵌入或引用外部数据源(如文本文件、电子表格和图像),并提供可定制的格式化选项。 - 解耦的呈现样式:具备类似 CSS 的样式系统,将内容与呈现分离。开发者可以通过
<style>定义或内联属性修改样式(如详细程度、语法格式),而无需改变核心提示逻辑,缓解 LLM 的格式敏感性。 - 集成模板引擎:内置模板引擎,支持变量(
{{ }})、循环(for)、条件(if)和变量定义(<variable>),用于动态生成复杂的数据驱动提示。 - 丰富的开发工具包:
- IDE 扩展 (Visual Studio Code):提供语法高亮、上下文感知自动补全、悬停文档、实时预览、内联诊断(错误检查)和集成交互测试等关键开发辅助。
- 软件开发工具包 (SDK):提供 Node.js (JavaScript/TypeScript) 和 Python 的 SDK,方便集成到各种应用工作流和流行的 LLM 框架中。
快速开始
以下是一个非常简单的 POML 示例。请将其放入名为 example.poml 的文件中,并确保该文件与 photosynthesis_diagram.png 图片文件位于同一目录。
<role>你是一位耐心的老师,向10岁孩子解释概念。</role>
<context>
<image src="photosynthesis_diagram.png" />
</context>
<instructions>利用提供的图片作为参考,解释光合作用的概念。保持解释简单有趣,不超过100字。以"嘿,未来的科学家!"开头。</instructions>
此示例为 LLM 定义了角色和任务,包含了用于上下文的图片,并指定了所需的输出格式。借助 POML 工具包,提示可以轻松渲染为灵活格式,并可使用视觉 LLM 进行测试。
安装
Visual Studio Code 扩展
从 Visual Studio Code 市场 (https://marketplace.visualstudio.com/items?itemName=poml-team.poml) 安装。
你也可以从我们的 GitHub 发布页面 (https://github.com/microsoft/poml/releases) 下载 .vsix 文件,然后通过 VS Code 的扩展视图手动安装扩展。
在使用 POML 工具包测试提示之前,请确保已配置好首选的 LLM 模型、API 密钥和端点。如果未设置,提示测试将无法工作。
在 Visual Studio Code 中配置:
- 打开扩展设置(打开“设置“并搜索“POML“)。
- 在 POML 部分设置你的模型提供商(例如 OpenAI、Azure、Google)、API 密钥和端点 URL。
- 或者,你也可以直接将这些设置添加到
settings.json文件中。
Node.js (通过 npm)
npm install pomljs
Python (通过 pip)
pip install poml
对于开发或本地安装,你可以在克隆的仓库中使用 pip install -e .。
有关安装 nightly 版本的更多详细信息,请参阅文档 (https://microsoft.github.io/poml)。
文档
关于 POML 语法、组件、样式、模板、SDK 和 VS Code 扩展的详细信息,请参阅我们的文档 (https://microsoft.github.io/poml)。
了解更多
- 在 YouTube 上观看我们的演示视频: POML 介绍与演示 (https://youtu.be/b9WDcFsKixo)
- 加入我们的 Discord 社区: 在 Discord 服务器 (https://discord.gg/FhMCqWzAn6) 上与团队和其他用户互动。
- 阅读 Prompt Orchestration Markup Language 论文: Prompt Orchestration Markup Language (https://arxiv.org/abs/2508.13948) 介绍了 POML 的设计及其对提示工程的影响。
- 探索内容-格式集成提示优化: Beyond Prompt Content: Enhancing LLM Performance via Content-Format Integrated Prompt Optimization (https://arxiv.org/abs/2502.04295) 提出了一种迭代方法,联合优化提示内容和格式以提高 LLM 性能。
引用
如果你觉得 POML 有用或与你的研究相关,请引用以下论文:
@misc{zhang2025promptorchestrationmarkuplanguage,
title={Prompt Orchestration Markup Language},
author={Yuge Zhang and Nan Chen and Jiahang Xu and Yuqing Yang},
year={2025},
eprint={2508.13948},
archivePrefix={arXiv},
primaryClass={cs.HC},
url={https://arxiv.org/abs/2508.13948},
}
生态系统与社区项目
- mini-poml-rs (https://github.com/linmx0130/mini-poml-rs) – 实验性的基于 Rust 的 POML 渲染器,适用于没有 JavaScript 或 Python 解释器的环境。
- poml-ruby (https://github.com/GhennadiiMir/poml) – 面向 Ruby 应用的 POML Ruby gem 实现。
- ai-chatbot-with-python-and-angular (https://github.com/hereandnowai/ai-chatbot-with-python-and-angular) – 使用 Python 和 Angular (版本 20) 构建的聊天机器人,利用 POML 进行提示以及 Langchain 框架。由 HERE AND NOW AI 开发。
- PomlSDK.jl (https://github.com/imohag9/PomlSDK.jl) – POML 规范的 Julia 实现。
贡献
本项目欢迎贡献和建议。大多数贡献需要您同意一份贡献者许可协议 (CLA),声明您有权并确实授予我们使用您贡献的权利。详情请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动确定您是否需要提供 CLA,并适当装饰 PR(例如状态检查、评论)。只需按照机器人提供的指示操作即可。在使用我们 CLA 的所有仓库中,您只需要执行一次。
本项目已采用 Microsoft 开源行为准则 (https://opensource.microsoft.com/codeofconduct/)。更多信息请参阅行为准则常见问题 (https://opensource.microsoft.com/codeofconduct/faq/) 或联系 [email protected] 提出任何其他问题或意见。
商标
本项目可能包含项目、产品或服务的商标或徽标。授权使用 Microsoft 商标或徽标必须遵守并遵循 Microsoft 商标和品牌指南 (https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks/usage/general)。在本项目的修改版本中使用 Microsoft 商标或徽标不得引起混淆或暗示 Microsoft 赞助。任何第三方商标或徽标的使用均受第三方政策的约束。
负责任 AI
本项目已评估并认证符合 Microsoft 负责任 AI 标准。团队将继续监控和维护仓库,处理出现的任何严重问题,包括潜在危害。更多详细信息,请参阅负责任 AI 自述文件。
许可证
本项目采用 MIT 许可证。详见 LICENSE 文件。
相似文章
智能体编码,不应只是VS Code上附带的聊天框
Polypore 是一个开源的智能体桌面IDE,具有可停靠面板、内置MCP服务器和扩展SDK,专为智能体驱动的开发而设计。
新推出的面向代理的Markdown对象语言MOL
MOL(Markdown对象语言)是一种新的正式规范,用于解析基于markdown的配置和数据文件,其设计比JSON更适合人类和LLM使用。
@pierceboggan:VS Code已被数百万开发者用于智能体编程。然而,编辑器布局传统上一直……
VS Code 引入了新的'Agents'功能,允许开发者跨多个项目与多个智能体协作,将其能力扩展到单一任务工作流之外。
我为 Codex 打造了一款 GNOME 扩展,集成本地/远程历史记录、实时过滤、Markdown 导出与只读 MCP 服务器
该开发者为 Codex 打造了一款功能全面的 GNOME Shell 扩展,新增了原生 GTK 历史记录管理、本地/远程会话浏览、Markdown 导出,以及支持多设备配对与安全管控的只读 MCP 服务器。
@DivyanshT91162: VS Code 改变了编码方式。Eclipse Theia 改变了谁控制编辑器。无遥测数据。无企业锁定。无“微软决定未来”。只是一个完全开放的框架……
本文推荐 Eclipse Theia 作为 VS Code 的开源替代方案,它具有无遥测数据、提供更多控制权以及与 VS Code 扩展兼容等特点。