编程语言AI Agent编译器CLI人工智能【免费下载链接】bamlThe programming language for agents项目地址https://gitcode.com/gh_mirrors/ba/baml点击查看免费下载本文以 BAML SDK 总览文档 为核心讲解 BAMLThe programming language for agents如何将用户的.baml定义编译为宿主语言的类型安全客户端 SDK包括baml generate命令的行为与参数、各语言 SDK 的“FFI 桥 代码生成器”双件式实现结构以及支撑全部生成器的sdk_tests端到端验证矩阵。读完后你能掌握如何在自己的 BAML 项目中生成并验证 Python、TypeScript、Rust 等语言的客户端 SDK。一、核心能力用 baml generate 生成类型安全客户端SDK 总览文档给出了这条产品线的核心承诺BAML 用户可以通过baml generate为自己的 BAML 代码生成“在所选宿主语言中类型安全的客户端 SDK”并且仓库在sdk_tests中为所有受支持的目标维护了端到端测试覆盖。当前支持矩阵以 baml_language/sdks/README.md 为准支持级别生成器 / 环境说明Betapython_pydantic2PythonPydantic v2 风格绑定Betatypescript_nodeNode 环境测试位于vitest_nodeBetatypescript_web_chromium浏览器Chromium环境测试位于vitest_webBetatypescript_web_cloudflare_workersCloudflare Workers 环境测试位于vitest_workersAlphacppCAlpharustRustAlphagoGoAlphajavaJavaAlphaswiftSwift计划中csharp文档标注 “Support is coming soon”需要注意的一个细节SDK 总览文档将csharp标注为“即将支持”但当前仓库中已存在 sdks/csharp 目录、sdk_tests的 C# 测试 crate且测试代码生成驱动 sdk_tests/codegen/src/main.rs 的GENERATORS表中已注册(csharp, sdk_test_codegen::csharp::run_all)。从源码结构看C# 链路生成器 桥在仓库中已有实质性实现总览文档的“coming soon”更应理解为面向公共用户的发布状态尚未正式开放。类似地GENERATORS表中的typescript/typescript_web两个条目对应文档矩阵里的typescript_node、typescript_web_chromium、typescript_web_cloudflare_workers三个运行环境。二、baml generate 命令参数与行为baml generate由 BAML CLI 实现入口定义在 baml_cli/src/generate.rs。其官方帮助文本给出了三个典型用法# 为最近的项目生成客户端 baml generate # 为指定项目生成客户端 baml generate --project ./my-project # 覆写输出目录对本次调用中所有生成器生效 baml generate --output-dir ./generated从GenerateArgs的结构定义generate.rs可以确认命令面--projectPATH指定目标 BAML 项目--output-dir/--output/-oPATH输出目录覆写参数优先级高于baml.toml中各生成器配置里的output_dir对本次调用中的每个生成器统一生效--from--project的弃用别名在帮助中隐藏hide true子命令baml generate add向baml.toml中添加一个客户端生成器配置。该命令的执行语义在源码注释中写得很清楚generate.rs读取baml.toml中所有[generator.name]配置段校验项目后为每个已配置生成器写出客户端。也就是说生成哪些语言的 SDK、写到哪个目录由baml.toml的[generator.name]段驱动命令行只负责选择项目和覆写输出位置。生成完成后 CLI 会打印每个生成器的产出摘要文件数、标识符重命名数与目标目录例如python_pydantic2 (N file(s), M identifier renames → ./baml_sdk)--quiet关闭摘要--verbose则逐条列出被重命名的标识符及原因见 generate.rs 的generation_presentation。三、SDK 目录组织FFI 桥 代码生成器的双件式结构仓库 baml_language/sdks/ 目录按语言划分每个语言内部再拆成“桥bridge核心运行时绑定”与“生成器sdkgen_*类型绑定代码生成”两部分。sdk_tests 总览 明确概括了这一结构Each SDK is implemented in two parts: an FFI to provide core runtime bindings and an SDK generator to generate typed bindings.各语言的对应关系摘自 sdk_tests/README.md测试 crate覆盖的桥 / 运行时覆盖的生成器sdk_test_python_pydantic2sdks/python/rust/bridge_python、sdks/python/src/baml_bridgesdks/python/rust/sdkgen_python_pydantic2sdk_test_typescriptsdks/typescript/bridge_typescriptsdks/typescript/sdkgen_typescript_sharedsdk_test_typescript_websdks/typescript/bridge_typescript_websdks/typescript/sdkgen_typescript_sharedsdk_test_rustsdks/rust/bridge_rustsdks/rust/sdkgen_rust这与sdks/的实际目录布局一致sdks/python/含rust/下的桥与生成器、sdks/typescript/bridge_typescript、bridge_typescript_web、sdkgen_typescript_shared、sdks/rust/bridge_rust、sdkgen_rust、sdks/go/baml_go、bridge_go、sdkgen_go以及cpp、java、swift、csharp等目录。Node 与 Web 两种 TypeScript 目标共享同一生成器sdkgen_typescript_shared只替换桥与运行时环境这也是文档中typescript_node与两个typescript_web_*环境共享一份customizable测试语料的原因。另外sdks/下还有一组面向 AI 协作者的参考文档 sdks/agent-docs/bridge-ref/包含 Java 桥的入站编码、出站解码、类型映射、打包与完成度状态等参考文章可用于深入了解单语言桥的契约细节。四、sdk_tests生成器 × fixture 的端到端验证矩阵sdk_tests是对所有生成 SDK 的端到端测试同时验证 sdkgen 逻辑与底层 FFI 接口。它有两个维度生成器维度每个 SDK 生成器一个 Rust cratesdk_test_python_pydantic2、sdk_test_typescript、sdk_test_typescript_web、sdk_test_rust等命名规则为sdk_test_generatorfixture 维度sdk_tests/fixtures/下每个 fixture 是一棵只含.baml源的baml_src/树如function_calls、llm_functions、type_shapes作为所有生成器的无关输入。每个生成器 crate 会把自己“扇出”到所有 fixture代码生成产物落在sdk_tests/crates/generator/fixture/generated/宿主机语言的移植测试放在被 git 跟踪的customizable/目录中。运行方式sdk_tests/README.md 给出的标准命令在baml_language目录下# 一次跑完所有 SDK 测试目标的全部 fixture cargo nextest run -p sdk_test_python_pydantic2 -p sdk_test_typescript -p sdk_test_typescript_web -p sdk_test_rust # 只跑某个生成器 cargo nextest run -p sdk_test_python_pydantic2 cargo nextest run -p sdk_test_typescript cargo nextest run -p sdk_test_typescript_web cargo nextest run -p sdk_test_rust # 只跑某个宿主机语言 runner cargo nextest run -p sdk_test_python_pydantic2 function_calls::pytest cargo nextest run -p sdk_test_typescript function_calls::vitest_node cargo nextest run -p sdk_test_typescript_web function_calls::vitest_web cargo nextest run -p sdk_test_typescript_web function_calls::vitest_workers cargo nextest run -p sdk_test_rust function_calls::cargo_test文档特别提醒SDK 测试必须用cargo nextest run驱动普通cargo test会以“令人惊讶的方式”失败。原因在 sdk_tests/DEVELOPMENT.md 中解释得很清楚代码生成不是构建脚本。每个生成器 crate 的setup.shUnix/setup.ps1Windows先执行cargo run -p sdk_test_codegen -- generator再安装各语言工具链。nextest 通过 .config/nextest.toml 中的平台过滤绑定自动触发 setup 脚本setup_guard::ran测试会校验脚本在本次运行中确实执行过通过在$NEXTEST_ENV中写入SDK_TEST_GEN_SETUP1面包屑防止测试跑在陈旧或未生成的目录上。每个 fixture 的.baml文件经完整编译器管线parse → HIR → TIR →SymbolPool→ emitter与baml generate相同的路径编译遇到Severity::Error诊断直接中止——“失败要大声”failures are loud没有软失败通道。fixture 清单是钉死的fixture_manifest::matches_corpus测试断言各 crate 声明的行、fixtures::SHARED表和磁盘上的 fixture 目录三者一致漏改任何一处都会失败并点名要编辑的文件。过滤 pytest / vitest 的用例nextest 不会向pytest/vitest透传额外参数官方推荐的调试姿势是先用 nextest 生成 fixture再直接进generated/目录跑宿主语言测试# pytest按关键字表达式过滤 cargo nextest run -p sdk_test_python_pydantic2 function_calls::pytest (cd sdk_tests/crates/python_pydantic2/function_calls/generated uv run pytest -v -k optional_args) # vitest在某个运行时里按测试名模式过滤 cargo nextest run -p sdk_test_typescript function_calls::vitest_node (cd sdk_tests/crates/typescript/function_calls/generated pnpm exec vitest run --config vitest.node.config.ts -t optional_args) # rust按测试名过滤并复用共享构建缓存 cargo nextest run -p sdk_test_rust function_calls::cargo_test (cd sdk_tests/crates/rust/function_calls/generated CARGO_TARGET_DIR../../../../../target/sdk-rust-target cargo test optional_args)TypeScript 侧还有一套运行时选择机制每个*.test.ts通过生成出的test_runtime.js的isTestRuntime助手用describe.runIf(isTestRuntime(node | web | workers))在同一份测试文件里交错 Node / Chromium / workerd 的专属覆盖从而让同一份测试语料在三个环境中共享执行。五、扩展添加新生成器与新 fixtureDEVELOPMENT.md 记录了扩展流程核心步骤添加生成器在sdk_tests/codegen/src/下新增target.rs实现run_all(CodegenCtx)注册进 main.rs 的GENERATORS表在harness_runner/src/lib.rs中声明对应的test_suite!宏再按crates/cpp/的形态添加crates/target/Cargo.toml、src/lib.rs、setup.sh、setup.ps1并在.config/nextest.toml中挂上平台过滤的 setup 绑定。添加 fixturemkdir -p sdk_tests/fixtures/name/baml_src/放入.baml文件在fixtures::SHARED表和需要运行它的各crates/*/src/lib.rs的test_suite!块中各加一行然后cargo nextest run -p sdk_test_generator name::。设计上有两个值得注意的工程决策均出自 DEVELOPMENT.md一是每个 fixture 的产出目录只有一个属主write_codegen_output管生成树、Overlay管脚手架与移植测试不变化的再生成零文件触碰避免无效化 cargo/uv/pnpm/gradle 的 mtime 缓存二是代码生成刻意不放进build.rs否则编译器闭包会被拖进每次cargo check且编译器改动会触发全量 SDK 再生成。六、关键参考路径内容路径SDK 支持矩阵总览baml_language/sdks/README.mdbaml generate命令实现baml_language/crates/baml_cli/src/generate.rsSDK 各语言实现桥 生成器baml_language/sdks/SDK 端到端测试总览与运行手册baml_language/sdk_tests/README.md测试基础设施开发指南baml_language/sdk_tests/DEVELOPMENT.md测试代码生成驱动GENERATORS 表baml_language/sdk_tests/codegen/src/main.rsJava 桥参考文档baml_language/sdks/agent-docs/bridge-ref/赞分享编程语言AI Agent编译器CLI人工智能【免费下载链接】bamlThe programming language for agents项目地址https://gitcode.com/gh_mirrors/ba/baml点击查看免费下载相关推荐BAML SDK 端到端测试体系用 cargo nextest 驱动多语言 SDK 生成、验证与门控BAML SDK 端到端测试体系用 cargo nextest 驱动多语言 SDK 生成、验证与门控 BAML 是一种面向 Agent 的编程语言用户可以用编程语言AI Agent编译器CLI人工智能BAML sdk_tests 代码生成测试基础设施从 fixture 到真实 SDK 的端到端验证机制BAML sdk_tests 代码生成测试基础设施从 fixture 到真实 SDK 的端到端验证机制 BAMLThe programming langua编程语言AI Agent编译器CLI人工智能BAML 集成测试体系实战跨语言客户端生成与一致性验证BAML 集成测试体系实战跨语言客户端生成与一致性验证 BAML 的集成测试位于 integ tests/ https://link.gitcode.com/编程语言AI Agent编译器CLI人工智能上一篇SonoffLAN 调优让百台设备 2 秒内全部响应下一篇20 分钟让 AI 替你查数据库WrenAI 本地跑通自然语言问数创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
ai写论文软件哪个好?2026软件工程专业横评5款主流工具 「ai写论文软件哪个好」大概是2026年毕业生群里被问最多的问题。作为软件工程专业的学生,我习惯了用测评思维解决问题:定指标、跑流程、看数据。过去两个月,我把市面上五款主流工具挨个实测了一遍,用同一篇开题报告做测试样本&… · 2026/9/25 15:57:26
RisingWave 持续集成(CI)实战指南:Fork PR 审批、CI 标签体系与回归二分定位 数据库流处理后端数据工程 【免费下载链接】risingwave Event streaming platform for agentic AI. Continuously ingest, transform, and serve event streams in real time, at scale. 项目地址: https://gitcode.com/gh_mirrors/ri/risingwave 点击查看 免费下载… · 2026/9/25 15:57:26
基于 Spring Boot 的二手车交易网站的设计与实现 温馨提示:本人主页置顶文章(点我)开头有 CSDN 平台官方提供的学长联系方式的名片!
1. 项目背景与意义
随着汽车保有量的持续增长和消费观念的转变,二手车交易市场呈现出快速发展的态势。传统的线下二手车交易存在信息不对称、车源分散、交易… · 2026/9/25 16:23:56
GEOFlow知识库搭建完整指南:pgvector向量检索让AI内容生产有据可依 GEOFlow知识库搭建完整指南:pgvector向量检索让AI内容生产有据可依 【免费下载链接】GEOFlow Open-source GEO content engineering and multi-site distribution platform with AI quality inspection, illustrated admin help, hosted sites, browser-assisted pu… · 2026/9/25 16:23:31
Agent Skills 实用指南:构建可复用智能体技能体系 "agent-skills"这个词,最近在AI圈子里被反复提起。我做智能体开发也有两三年了,从最早的提示词堆砌,到后来的函数调用,再到现在围绕技能(skills)来构建智能体,最大的感受是࿱… · 2026/9/25 16:23:31
Atlas 300V 24G推理加速卡上部署YOLO:从模型转换到性能调优全攻略 1. Atlas 300V 24G到底是个什么卡1.1 它就是热搜里问的那张“运算加速卡”先说结论:是的,Atlas 300V 24G就是一张标准的运算加速卡,但你要注意它并不是显卡,更不是用来打游戏的。它是昇腾生态里面向数据中心和边缘侧推理场景的PCI… · 2026/9/25 16:23:13
AI Agent工程化:分层交付架构设计与落地实践 1. 为什么“分层交付”是 AI Agent 工程化的第一道生死线做 AI Agent 项目最怕什么?不是模型不够聪明,而是你把所有逻辑——意图识别、工具调用、状态管理、结果渲染——全塞进一个巨大的提示词或者一个巨型函数里。我见过太多团队,Demo 阶段… · 2026/9/25 16:23:07
昇腾Atlas 300V 24G部署YOLOv8推理实战与排障 1. 先搞明白Atlas 300V 24G到底是什么1.1 一张“推理加速卡”而不是“图形卡”我最初拿到Atlas 300V 24G这张卡的时候,也跟不少刚接触昇腾生态的朋友一样,第一反应是“它是不是跟游戏显卡一样,插上去就能跑图形渲染”。这个理解其实是错的&am… · 2026/9/25 16:23:00
创维E900V22D刷机全攻略:S905L3SB芯片兼容性解析与救砖实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:31
MQTT协议原理与Broker服务器搭建实战:从Mosquitto到EMQX /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 1:00:37