baml: 它是什么,解决了什么问题以及为什么它正受到关注
baml: 它是什么,解决了什么问题以及为什么它正受到关注
它解决了什么问题
BAML 是一种提示词语言,旨在取代在应用程序代码中将提示词作为原始字符串(f-strings)进行管理的混乱过程。它将提示词工程转变为“模式工程”(schema engineering),允许开发者定义返回结构化数据的类型安全函数,从而使 AI 工作流和智能体更加可靠且易于维护。
它是如何工作的
BAML 将每个提示词视为具有定义输入参数和返回类型的函数。一个基于 Rust 的编译器将这些 BAML 定义转换为一个客户端(baml_client),可以通过 Python、TypeScript、Ruby 和 Go 等多种语言进行调用。它使用一种称为 SAP(schema-aligned parsing)的自定义算法,以确保即使是从不支持原生工具调用 API 的模型中也能获得可靠的结构化输出。
它是面向谁的
对于构建 AI 智能体和复杂 LLM 工作流的开发者,他们希望获得类型安全性、通过 IDE 集成实现更快的迭代速度,以及在无需重写应用程序逻辑的情况下在不同 LLM 提供商之间进行切换的能力。
亮点
- 类型安全的结构化输出:返回定义好的类/类型,而不是原始文本。
- 跨语言支持:在 BAML 中定义的提示词可以从 Python、TypeScript、Ruby 和 Go 中调用。
- IDE 集成:为 VS Code 和 JetBrains 提供原生工具,用于快速提示词测试和可视化。
- 模型无关:支持广泛的提供商(OpenAI、Anthropic、Gemini、Bedrock 等),并内置了重试策略和回退机制。
- Schema-Aligned Parsing (SAP):能够从任何模型中实现可靠的工具调用和结构化数据提取。
- 开源:Apache 2 许可证,设计上注重隐私,并使用 Rust 构建以保证性能。
Sources
- undefinedBoundaryML/baml