BAML 介绍
了解工具的详细功能和使用方法
BAML 适合想把提示词、输入参数和输出类型维护成可测试函数的开发者。典型任务包括文档字段抽取、分类、结构化总结,以及把模型结果交给现有 Python 或 TypeScript 应用处理。采用前先明确版本,再用真实失败案例检查结果:类型正确和事实正确需要分别验证。
BAML 是什么
BAML 是 Boundary 开发的开源语言与工具链。它把模型调用表达为带输入、输出类型的函数,并提供相应的开发与测试路径。官方 SDK 文档中的流程是编写 .baml 文件、生成 baml_client,然后在应用中调用函数。官方介绍
截至 2026 年 10 月 14 日,官网介绍新的独立工具链,并提示 BAML 1.0 即将 GA;文档站仍提供 v0 的 baml_src / baml_client SDK 路径。选用时应保存版本、安装命令与对应文档。本站教程固定使用 baml-py==0.226.2,避免把不同版本的命令和语法混在同一示例里。当前官网、Python SDK 包
适合哪些工作
- 文档抽取:把自由文本转换为明确字段,并附上可回查的原文证据。
- 固定分类:将业务标签定义为类型,另外评估分类是否正确。
- 团队维护提示词:审查函数参数、提示词与输出结构的变更。
- 跨语言集成:通过对应工具链生成或桥接应用可调用的接口。
SDK 的 Python 路径可以将 BAML 类型生成为 Pydantic 模型;修改类型后需要重新生成客户端,并同步 runtime 与生成器版本。Python 安装、版本同步说明
它解决了什么问题
把提示词和输出定义放在明确的函数接口里,可以让团队更容易发现字段变化和调用方影响。例如将负责人从必填改成可缺省时,调用方也需要处理“资料未给出”的状态。
但代码生成和解析没有替你审查原始资料。一个字符串字段可以包含错误日期,一个合法枚举可以是错误分类。应将格式与类型检查、来源核对、业务规则和人工验收放在不同步骤。
校验与失败处理
v0 文档提供 @assert 和 :前者用于严格规则,失败会影响返回结果或抛出校验异常;后者保留数据及检查结果,需要调用方处理。尤其对集合中的断言,应确认失败项是否被移除,不能把缺少记录误认为原文没有记录。