我做了微软不会做的事——更新了POML VS Code扩展

Reddit r/LocalLLaMA 工具

摘要

POML是微软推出的一种新的标记语言,用于结构化提示工程。本文介绍了一个更新的VS Code扩展,作者声称微软不会更新它。

**什么是POML?** 微软推出了这种非常酷的类HTML标记语言,允许你制作模块化提示模板,并具备各种便捷功能,例如通过OpenAI API进行本地AI支持、为LLM设置运行时参数,以及将文档嵌入提示中。你甚至可以通过VS Code扩展直接将提示发送到你的LLM。**它后来怎么样了?** 我完全不知道。他们支持了2-3个月,然后因为没达到KPI之类的就消失了,我猜。接着一次VS Code或依赖项更新暴露了一个bug,问题在于他们对`/>`的处理方式——这在嵌入文档的POML中其实**相当常见**。这破坏了直接向LLM发送提示的能力——你可以从预览中复制,但效率较低。**我做了什么** 我使用了[OpenCode](https://opencode.ai/)(这个工具在这里不太被提及——我是因为有人发布了一个**扩展**的仓库才发现它的)以及[opencode-power-pack](https://github.com/waybarrios/opencode-power-pack)(就是那个扩展)来尝试找到这个bug并更新一些过时得离谱的依赖项。我花了好几天才让它正常工作,主要是因为我在更新一些依赖项时不小心破坏了预览面板。这个问题在编译成VSIX时才暴露出来,而不是在扩展调试模式下。**谁应该使用这个?** * 提示词/智能体实验者 * 希望使用LLM写作/编辑的人 * 拥有大量重复使用公共元素的提示词的人 **本地AI指引** * 打开VS Code的`设置`菜单,搜索`POML`。 * 将`提供者`设置为`OpenAI Chat Completion`。 * 设置API目标URL。 * 你需要设置`API Key`,**即使你的服务器不需要它**。 * 设置默认模型和温度。(这些可以在你的POML文件中覆盖。) * 将`Trace`设置为`verbose`,因为这样可以提供有用的调试数据。 **我可能会做的事情** * 添加对LM Studio和Lemonade作为提供者的支持 * 集成[基于TOC的动态加载](https://gist.github.com/Warner-Bell/e3a34a82214d370cdc9fa816d349c16b)
查看原文
查看缓存全文

缓存时间: 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 文件。

相似文章