baml-codegen

⚡ 类型安全LLM代码一键生成

通过自然语言生成完整的BAML代码,实现类型安全的LLM结构化输出、分类、RAG和Agent工作流,支持多模态输入与10+框架集成。

收藏
5.6k
安装
2.1k
版本
2.0.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

baml-codegen 是一款专注于生成类型安全LLM代码的专业工具,核心目标是将自然语言需求转化为可直接编译运行的BAML代码文件。其工作流程遵循「分析→模式匹配(MCP)→验证→生成→测试→交付」的闭环,并内置错误恢复机制。

用户通过描述需求(如"从发票图片提取结构化数据"),工具自动生成包含以下要素的完整代码:

  • 类型定义:Class/Enum/Union 等强类型结构,支持 @assert 约束和 @alias 字段别名
  • 函数与客户端:声明式LLM调用配置,支持多Provider(OpenAI/Anthropic/Gemini等)和Fallback链式容错
  • 测试用例:自动生成pytest/Jest覆盖率100%的测试代码
  • 框架集成:一键输出LangGraph节点、FastAPI端点或Next.js路由等模板代码

显著优点

1. Schema即Prompt:无需手写冗长提示词,类型定义自动注入上下文,降低Prompt Engineering门槛
2. 零运行时依赖:通过Transpiler生成原生代码(Python/TypeScript/Ruby/Go),无额外库依赖

3. 多模态原生支持imageaudio作为一等类型,无需base64编码处理

4. MCP实时增强:查询官方BoundaryML仓库获取最新模式与修复建议,离线时回退缓存仍可保持80%功能

5. 成本优化:官方宣称50-70%的Token节省,配合Retry Policy和Fallback策略提升可靠性

潜在局限

  • 编译依赖:每次修改baml_src/后必须运行baml-cli generate,否则客户端代码不同步
  • MCP硬性依赖:完整功能需配置两个MCP服务器(baml_Docs必填,baml_Examples可选),离线场景功能受限
  • 语言覆盖:当前仅支持Python/TypeScript/Ruby/Go四种目标语言,Rust/C#等生态未覆盖
  • 学习曲线:需理解BAML特有语法(如@description#"..."#字符串模板)及「生成代码不可编辑」的约束

适合人群

  • 需要强类型LLM输出的工程师(替代JSON Schema + 手动校验)
  • 构建RAG/Agent系统的开发者,希望获得LangGraph等框架的即插即用节点
  • 追求类型安全与IDE支持的团队,厌恶运行时dict.get()的不确定性
  • 多模态应用开发者,需处理图像/音频输入的场景

常规风险

  • 客户端覆盖风险:误编辑baml_client/目录会导致代码丢失,需团队建立规范
  • Provider配置敏感信息:OpenAI/Anthropic API Key需安全存储,避免硬编码
  • MCP服务可用性:依赖外部MCP服务获取实时模式,网络中断时生成质量可能下降
  • 编译失败率:尽管宣称95%+成功率,复杂Union类型或嵌套约束仍可能触发编译错误

生态定位

作为BoundaryML官方工具链的核心组件,baml-codegen填补了「自然语言→类型安全LLM代码」的空白,介于低代码平台(如Dify)与纯代码方案(如Pydantic AI)之间,适合既希望保留代码控制力、又厌恶样板代码的中高级开发者。

baml-codegen 内容

assets文件夹
agents文件夹
classification文件夹
extraction文件夹
integrations文件夹
rag文件夹
references文件夹
手动下载zip · 62.4 kB
README.mdtext/markdown
请选择文件