【开源】BAML:用编程思维做 Prompt 工程的结构化 AI 框架(附教程)

Prompt 工程(Prompt Engineering)在大模型应用开发中至关重要,但传统的字符串拼接方式难以维护和调试。BAML(BoundaryML Language)是一个专为 AI 工作流设计的领域特定语言,将 Prompt 工程转变为Schema 工程,让 AI 输出更可靠。

项目介绍

BAML 由 BoundaryML 开发,获得了 7,900+ 颗星。BAML 的核心创新在于:它将每个 Prompt 定义为一个有类型签名的”函数”(Function),开发者可以像写 API 一样定义输入输出的数据结构,而 Prompt 本身则作为模板嵌入其中。这种方式天然支持类型检查、IDE 自动补全和版本控制。

BAML 兼容 Python、TypeScript、Ruby、Java、C#、Rust、Go 等几乎所有主流编程语言,真正做到了”一次编写,到处调用”。

特色功能

  • 类型安全的 Prompt:输入输出都是强类型,编译时即可发现错误
  • 多语言 SDK:Python、TypeScript、Ruby、Java、C#、Rust、Go 全支持
  • 全模型兼容:支持 OpenAI、Anthropic、DeepSeek 等任何支持 Function Calling 的模型
  • 内置重试机制:输出解析失败时自动重试
  • 流式输出:支持实时流式响应
  • Guardrails 内置:内置内容安全检查机制
  • Prompt Fiddle 在线工具:提供浏览器内在线调试平台

安装步骤

# Python 安装
pip install baml-py

# TypeScript 安装
npm install @boundaryml/baml

# Ruby 安装
gem install baml

# 安装 CLI 工具(用于编译 .baml 文件)
pip install baml-cli

# 或使用 npx
npx @boundaryml/baml-cli generate

使用方法

BAML 文件示例(定义一个对话 Agent):

// 定义消息结构
class Message {
  role string
  content string
}

// 定义输出类型
class ReplyTool {
  response string
}

class StopTool {
  action "stop" @description(#"
    当可能适合结束对话时触发
  "#)
}

// 定义 Agent 函数
function ChatAgent(
  message: Message[],
  tone: "happy" | "sad"
) -> StopTool | ReplyTool {
  client "openai/gpt-4o-mini"

  prompt #"
    你是一个对话机器人,语调要求:{{ tone }}。

    {% for m in message %}
    {{ _.role(m.role) }}
    {{ m.content }}
    {% endfor %}
  "#
}

Python 中调用 BAML 函数:

from baml_py import BamlStreamEvent
from your_module import ChatAgent  # 由 BAML 编译器生成

# 同步调用
result = ChatAgent(
    message=[
        {"role": "user", "content": "你好"}
    ],
    tone="happy"
)
print(result)  # 结构化输出,类型安全

# 异步/流式调用
async for event in ChatAgent.astream(...):
    if isinstance(event, BamlStreamEvent.complete):
        print(event.value)

适用场景

  • AI Agent 开发:构建需要稳定结构化输出的 AI 应用
  • 企业 AI 集成:将 AI 能力集成到现有企业系统
  • 多模型切换:需要灵活切换不同 LLM 提供商的场景
  • Prompt 版本管理:需要 Git 管理 Prompt 变更的团队

开源协议

BAML 采用 Apache-2.0 开源许可证。

项目地址:https://github.com/BoundaryML/baml


服务支持:如有兴趣不会搭建,可以联系微信:WRYD6166,开源项目搭建10-50元。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容