POML Python 集成参考:AgentOps / LangChain / MLflow / Pydantic / Weave

POML Python 集成参考:AgentOps / LangChain / MLflow / Pydantic / Weave

导语

本文基于 POML 官方文档的 Integration 参考页面,梳理 Python 端提供的集成模块与关键 API/类,包括 agentopslangchainmlflowpydanticweave。内容严格来自文档页面,并以结构化方式呈现功能说明与示例。

模块总览

  • poml.integration.agentops
  • poml.integration.langchain
  • poml.integration.mlflow
  • poml.integration.pydantic
  • poml.integration.weave

AgentOps 集成(poml.integration.agentops

功能介绍

  • log_poml_call(name, prompt, context, stylesheet, result):将一次完整的 poml 调用记录到 AgentOps。

关键 API

  • log_poml_call(name, prompt, context, stylesheet, result)
    • 说明:"Log the entire poml call to agentops."

文档示例

python 复制代码
# 文档中的函数实现示例(节选)
@agentops.operation(name="poml")
def poml(prompt, context, stylesheet):
    return result

poml(prompt, context, stylesheet)

LangChain 集成(poml.integration.langchain

功能介绍

  • LangchainPomlTemplate:兼容 LangChain 的 PromptTemplate,实现以 POML 进行格式化;支持"说话人模式(speaker modes)"与结构化内容。

关键类与属性

  • LangchainPomlTemplate(PromptTemplate)
    • template_file: Union[str, Path, None]:模板文件路径(若由文件加载)。
    • speaker_mode: bool:是否输出为聊天消息(True)或纯文本(False),默认 True。
    • 说明:
      • speaker_mode=True 时返回 ChatPromptValue
      • speaker_mode=False 时返回 StringPromptValue
      • from_examples() 不支持,调用会抛出 NotImplementedError

使用示例(来自文档)

python 复制代码
# 由模板字符串创建
>>> template = LangchainPomlTemplate.from_template(
...     "Hello {{name}}!", speaker_mode=True
... )
>>> result = template.format(name="Alice")
python 复制代码
# 由 POML 文件加载
>>> template = LangchainPomlTemplate.from_file(
...     "path/to/template.poml", speaker_mode=False
... )
>>> result = template.format(user_input="What is AI?")

MLflow 集成(poml.integration.mlflow

功能介绍

  • log_poml_call(name, prompt, context, stylesheet, result):将一次完整的 poml 调用记录到 MLflow。

关键 API

  • log_poml_call(name, prompt, context, stylesheet, result)
    • 说明:"Log the entire poml call to mlflow."

文档示例

python 复制代码
# 文档中的函数实现示例(节选)
@mlflow.trace
def poml(prompt, context, stylesheet):
    return result

prompt_registered = mlflow.genai.register_prompt(
    name=name,
    template=prompt,
    tags={"format": "poml", "source": "auto"},
)

poml(prompt, context, stylesheet)

Pydantic 集成(poml.integration.pydantic

功能介绍

  • NotGiven:用于区分"未提供实参"与显式传入 None 的哨兵单例。
  • is_dataclass_like_type(typ):判断给定类型是否可能使用了 @pydantic.dataclass
  • to_strict_json_schema(model):将 Pydantic 模型转换为严格 JSON Schema,适配 OpenAI 的函数调用与响应格式(对象 additionalProperties: false,属性均为必填)。

关键 API

  • NotGiven
  • is_dataclass_like_type(typ) -> bool
  • to_strict_json_schema(model) -> dict[str, Any]
    • 说明:
      • 接收 BaseModel 类或 TypeAdapter
      • 输出严格 JSON Schema;
      • BaseModel 类型在 Pydantic v1 下不支持;
      • 实现参考自 OpenAI Python SDK(文档内给出来源链接)。

使用示例(来自文档)

python 复制代码
from pydantic import BaseModel, Field
from poml.integration.pydantic import to_strict_json_schema

class Query(BaseModel):
    name: str = Field(description="Query name")
    limit: int = Field(description="Result limit", default=10)

schema = to_strict_json_schema(Query)
# 返回一个严格 JSON Schema(additionalProperties: false)

Weave 集成(poml.integration.weave

功能介绍

  • log_poml_call(name, prompt, context, stylesheet, result):将一次完整的 poml 调用记录到 Weave。

关键 API

  • log_poml_call(name, prompt, context, stylesheet, result)
    • 说明:"Log the entire poml call to weave."

文档示例

python 复制代码
# 文档中的函数实现示例(节选)
@weave.op
def poml(prompt, context, stylesheet):
    return result

prompt_ref = weave.publish(prompt, name=name)
if context is not None:
    context_ref = weave.publish(context, name=name + ".context")
else:
    context_ref = context

if stylesheet is not None and stylesheet != "{}":
    stylesheet_ref = weave.publish(stylesheet, name=name + ".stylesheet")
else:
    stylesheet_ref = stylesheet

poml(prompt_ref, context_ref, stylesheet_ref)

总结

本文按官方 Integration 参考页面整理了五个 Python 集成模块的用途与核心 API/类,并给出了文档中的示例片段:

  • 记录调用:agentopsmlflowweavelog_poml_call(...)
  • 模板集成:langchainLangchainPomlTemplate(支持 speaker 模式与结构化内容);
  • 模型到 Schema:pydanticto_strict_json_schema(...) 及辅助类型/判断。

更多细节请参考官方文档页面:

相关推荐
无名修道院4 小时前
AI大模型微调-LLM、Token、生成与推理详解
llm·token·ai大模型应用开发
bloglin999999 小时前
Qwen3-32B报错Invalid json output:{“type“: “1“}For troubleshooting, visit
llm·json
七牛云行业应用12 小时前
1M上下文腐烂?实测Opus 4.6 vs GPT-5.3及MoA降本架构源码
人工智能·python·llm·架构设计·gpt-5·claude-opus
蛇皮划水怪18 小时前
深入浅出LangChain4J
java·langchain·llm
组合缺一1 天前
Solon AI (Java) v3.9 正式发布:全能 Skill 爆发,Agent 协作更专业!仍然支持 java8!
java·人工智能·ai·llm·agent·solon·mcp
ASS-ASH2 天前
AI时代之向量数据库概览
数据库·人工智能·python·llm·embedding·向量数据库·vlm
带刺的坐椅2 天前
用 10 行 Java8 代码,开发一个自己的 ClaudeCodeCLI?你信吗?
java·ai·llm·agent·solon·mcp·claudecode·skills
aopstudio2 天前
OpenClaw 实测体验:Agent 框架现在到底能不能用?
人工智能·llm·agent·openclaw
千桐科技3 天前
qKnow 知识平台核心能力解析|第 03 期:结构化抽取能力全流程介绍
大模型·llm·知识图谱·知识库·rag·qknow·知识平台
CoderJia程序员甲3 天前
GitHub 热榜项目 - 日榜(2026-02-04)
开源·大模型·llm·github·ai教程