[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"similar-BoundaryML--baml":3,"tool-BoundaryML--baml":62},[4,18,28,37,45,53],{"id":5,"name":6,"github_repo":7,"description_zh":8,"stars":9,"difficulty_score":10,"last_commit_at":11,"category_tags":12,"status":17},4358,"openclaw","openclaw\u002Fopenclaw","OpenClaw 是一款专为个人打造的本地化 AI 助手，旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚，能够直接接入你日常使用的各类通讯渠道，包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息，OpenClaw 都能即时响应，甚至支持在 macOS、iOS 和 Android 设备上进行语音交互，并提供实时的画布渲染功能供你操控。\n\n这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地，用户无需依赖云端服务即可享受快速、私密的智能辅助，真正实现了“你的数据，你做主”。其独特的技术亮点在于强大的网关架构，将控制平面与核心助手分离，确保跨平台通信的流畅性与扩展性。\n\nOpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者，以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力（支持 macOS、Linux 及 Windows WSL2），即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你",349277,3,"2026-04-06T06:32:30",[13,14,15,16],"Agent","开发框架","图像","数据工具","ready",{"id":19,"name":20,"github_repo":21,"description_zh":22,"stars":23,"difficulty_score":24,"last_commit_at":25,"category_tags":26,"status":17},9989,"n8n","n8n-io\u002Fn8n","n8n 是一款面向技术团队的公平代码（fair-code）工作流自动化平台，旨在让用户在享受低代码快速构建便利的同时，保留编写自定义代码的灵活性。它主要解决了传统自动化工具要么过于封闭难以扩展、要么完全依赖手写代码效率低下的痛点，帮助用户轻松连接 400 多种应用与服务，实现复杂业务流程的自动化。\n\nn8n 特别适合开发者、工程师以及具备一定技术背景的业务人员使用。其核心亮点在于“按需编码”：既可以通过直观的可视化界面拖拽节点搭建流程，也能随时插入 JavaScript 或 Python 代码、调用 npm 包来处理复杂逻辑。此外，n8n 原生集成了基于 LangChain 的 AI 能力，支持用户利用自有数据和模型构建智能体工作流。在部署方面，n8n 提供极高的自由度，支持完全自托管以保障数据隐私和控制权，也提供云端服务选项。凭借活跃的社区生态和数百个现成模板，n8n 让构建强大且可控的自动化系统变得简单高效。",184740,2,"2026-04-19T23:22:26",[16,14,13,15,27],"插件",{"id":29,"name":30,"github_repo":31,"description_zh":32,"stars":33,"difficulty_score":10,"last_commit_at":34,"category_tags":35,"status":17},10095,"AutoGPT","Significant-Gravitas\u002FAutoGPT","AutoGPT 是一个旨在让每个人都能轻松使用和构建 AI 的强大平台，核心功能是帮助用户创建、部署和管理能够自动执行复杂任务的连续型 AI 智能体。它解决了传统 AI 应用中需要频繁人工干预、难以自动化长流程工作的痛点，让用户只需设定目标，AI 即可自主规划步骤、调用工具并持续运行直至完成任务。\n\n无论是开发者、研究人员，还是希望提升工作效率的普通用户，都能从 AutoGPT 中受益。开发者可利用其低代码界面快速定制专属智能体；研究人员能基于开源架构探索多智能体协作机制；而非技术背景用户也可直接选用预置的智能体模板，立即投入实际工作场景。\n\nAutoGPT 的技术亮点在于其模块化“积木式”工作流设计——用户通过连接功能块即可构建复杂逻辑，每个块负责单一动作，灵活且易于调试。同时，平台支持本地自托管与云端部署两种模式，兼顾数据隐私与使用便捷性。配合完善的文档和一键安装脚本，即使是初次接触的用户也能在几分钟内启动自己的第一个 AI 智能体。AutoGPT 正致力于降低 AI 应用门槛，让人人都能成为 AI 的创造者与受益者。",183572,"2026-04-20T04:47:55",[13,36,27,14,15],"语言模型",{"id":38,"name":39,"github_repo":40,"description_zh":41,"stars":42,"difficulty_score":10,"last_commit_at":43,"category_tags":44,"status":17},3808,"stable-diffusion-webui","AUTOMATIC1111\u002Fstable-diffusion-webui","stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面，旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点，将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。\n\n无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师，还是想要深入探索模型潜力的开发者与研究人员，都能从中获益。其核心亮点在于极高的功能丰富度：不仅支持文生图、图生图、局部重绘（Inpainting）和外绘（Outpainting）等基础模式，还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外，它内置了 GFPGAN 和 CodeFormer 等人脸修复工具，支持多种神经网络放大算法，并允许用户通过插件系统无限扩展能力。即使是显存有限的设备，stable-diffusion-webui 也提供了相应的优化选项，让高质量的 AI 艺术创作变得触手可及。",162132,"2026-04-05T11:01:52",[14,15,13],{"id":46,"name":47,"github_repo":48,"description_zh":49,"stars":50,"difficulty_score":24,"last_commit_at":51,"category_tags":52,"status":17},1381,"everything-claude-code","affaan-m\u002Feverything-claude-code","everything-claude-code 是一套专为 AI 编程助手（如 Claude Code、Codex、Cursor 等）打造的高性能优化系统。它不仅仅是一组配置文件，而是一个经过长期实战打磨的完整框架，旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。\n\n通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能，everything-claude-code 能显著提升 AI 在复杂任务中的表现，帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略，使得模型响应更快、成本更低，同时有效防御潜在的攻击向量。\n\n这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库，还是需要 AI 协助进行安全审计与自动化测试，everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目，它融合了多语言支持与丰富的实战钩子（hooks），让 AI 真正成长为懂上",161147,"2026-04-19T23:31:47",[14,13,36],{"id":54,"name":55,"github_repo":56,"description_zh":57,"stars":58,"difficulty_score":59,"last_commit_at":60,"category_tags":61,"status":17},8272,"opencode","anomalyco\u002Fopencode","OpenCode 是一款开源的 AI 编程助手（Coding Agent），旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件，而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码，还是排查难以定位的 Bug，OpenCode 都能通过自然语言交互高效完成，显著减少开发者在重复性劳动和上下文切换上的时间消耗。\n\n这款工具专为软件开发者、工程师及技术研究人员设计，特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构，这意味着用户可以审查代码逻辑、自定义行为策略，甚至私有化部署以保障数据安全，彻底打破了传统闭源 AI 助手的“黑盒”限制。\n\n在技术体验上，OpenCode 提供了灵活的终端界面（Terminal UI）和正在测试中的桌面应用程序，支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具，安装便捷，并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客，还是渴望提升产出的独立开发者，OpenCode 都提供了一个透明、可信",144296,1,"2026-04-16T14:50:03",[13,27],{"id":63,"github_repo":64,"name":65,"description_en":66,"description_zh":67,"ai_summary_zh":68,"readme_en":69,"readme_zh":70,"quickstart_zh":71,"use_case_zh":72,"hero_image_url":73,"owner_login":74,"owner_name":75,"owner_avatar_url":76,"owner_bio":77,"owner_company":78,"owner_location":78,"owner_email":78,"owner_twitter":78,"owner_website":79,"owner_url":80,"languages":81,"stars":121,"forks":122,"last_commit_at":123,"license":124,"difficulty_score":24,"env_os":125,"env_gpu":125,"env_ram":125,"env_deps":126,"category_tags":130,"github_topics":131,"view_count":24,"oss_zip_url":78,"oss_zip_packed_at":78,"status":17,"created_at":144,"updated_at":145,"faqs":146,"releases":147},10093,"BoundaryML\u002Fbaml","baml","The AI framework that adds the engineering to prompt engineering (Python\u002FTS\u002FRuby\u002FJava\u002FC#\u002FRust\u002FGo compatible)","BAML 是一款专为构建可靠 AI 工作流和智能体设计的提示工程框架。它巧妙地将原本依赖直觉的“提示词编写”转化为严谨的“模式工程”，让开发者通过定义清晰的输入参数和输出类型来约束大模型行为，从而显著提升输出的稳定性和可预测性。\n\n传统提示工程常面临输出格式不可控、难以调试和缺乏类型安全等痛点，BAML 通过其独特的“提示即函数”理念解决了这些问题。在 BAML 中，每个提示都被定义为一个强类型的函数，支持条件逻辑、循环及工具调用。其核心亮点在于拥有独立的编译器，能生成类型安全的客户端代码，完美融入 Python、TypeScript、Go、Rust 等多种主流开发语言。此外，BAML 还内置了流式输出、自动重试、多模型兼容以及 IDE 原生测试工具，即便面对不支持原生工具调用的模型，也能实现可靠的函数调用能力。\n\n这款工具非常适合需要将 AI 功能深度集成到应用中的软件工程师、全栈开发者以及 AI 架构师。如果你希望像编写普通代码一样管理提示词，享受编译期的错误检查与高效的迭代体验，同时保持技术栈的灵活性，BAML 将是一个理想的选择。它让复杂的 AI 代理开发变得像调用普通函数一样","BAML 是一款专为构建可靠 AI 工作流和智能体设计的提示工程框架。它巧妙地将原本依赖直觉的“提示词编写”转化为严谨的“模式工程”，让开发者通过定义清晰的输入参数和输出类型来约束大模型行为，从而显著提升输出的稳定性和可预测性。\n\n传统提示工程常面临输出格式不可控、难以调试和缺乏类型安全等痛点，BAML 通过其独特的“提示即函数”理念解决了这些问题。在 BAML 中，每个提示都被定义为一个强类型的函数，支持条件逻辑、循环及工具调用。其核心亮点在于拥有独立的编译器，能生成类型安全的客户端代码，完美融入 Python、TypeScript、Go、Rust 等多种主流开发语言。此外，BAML 还内置了流式输出、自动重试、多模型兼容以及 IDE 原生测试工具，即便面对不支持原生工具调用的模型，也能实现可靠的函数调用能力。\n\n这款工具非常适合需要将 AI 功能深度集成到应用中的软件工程师、全栈开发者以及 AI 架构师。如果你希望像编写普通代码一样管理提示词，享受编译期的错误检查与高效的迭代体验，同时保持技术栈的灵活性，BAML 将是一个理想的选择。它让复杂的 AI 代理开发变得像调用普通函数一样简单直观。","\u003Cdiv align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fboundaryml.com?utm_source=github\" target=\"_blank\" rel=\"noopener noreferrer\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f90c028f5d03.png\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f90c028f5d03.png\" height=\"64\" id=\"top\">\n  \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n[![BAML Version](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbaml-py?color=006dad&label=BAML%20Version)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fbaml-py\u002F)\n\n## BAML: Basically a Made-up Language\n\u003Ch4>\n\n[Homepage](https:\u002F\u002Fwww.boundaryml.com\u002F) | [Docs](https:\u002F\u002Fdocs.boundaryml.com) | [BAML AI Chat](https:\u002F\u002Fwww.boundaryml.com\u002Fchat) | [Discord](https:\u002F\u002Fdiscord.gg\u002FBTNBeXGuaS)\n\n\n\n\u003C\u002Fh4>\n\n\n\u003C\u002Fdiv>\n\nBAML is a simple prompting language for building reliable **AI workflows and agents**.\n\nBAML makes prompt engineering easy by turning it into _schema engineering_ -- where you mostly focus on the models of your prompt -- to get more reliable outputs. \nYou don't need to write your whole app in BAML, only the prompts! You can wire-up your LLM Functions in any language of your choice! See our quickstarts for [Python](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fpython), [TypeScript](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Ftypescript), [Ruby](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fruby) and [Go, and more](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Frest-api-other-languages).\n\nBAML comes with all batteries included -- with full typesafety, streaming, retries, wide model support, even when they don't support native [tool-calling APIs](#enable-reliable-tool-calling-with-any-model)\n\n**Try BAML**: [Prompt Fiddle](https:\u002F\u002Fwww.promptfiddle.com) • [Interactive App Examples](https:\u002F\u002Fbaml-examples.vercel.app\u002F)\n\n\n## The core BAML principle: LLM Prompts are functions\n\nThe fundamental building block in BAML is a function. Every prompt is a function that takes in parameters and returns a type.\n\n```rust\nfunction ChatAgent(message: Message[], tone: \"happy\" | \"sad\") -> string\n```\n\nEvery function additionally defines which models it uses and what its prompt is.\n\n```rust\nfunction ChatAgent(message: Message[], tone: \"happy\" | \"sad\") -> StopTool | ReplyTool {\n    client \"openai\u002Fgpt-4o-mini\"\n\n    prompt #\"\n        Be a {{ tone }} bot.\n\n        {{ ctx.output_format }}\n\n        {% for m in message %}\n        {{ _.role(m.role) }}\n        {{ m.content }}\n        {% endfor %}\n    \"#\n}\n\nclass Message {\n    role string\n    content string\n}\n\nclass ReplyTool {\n  response string\n}\n\nclass StopTool {\n  action \"stop\" @description(#\"\n    when it might be a good time to end the conversation\n  \"#)\n}\n```\n\n## BAML Functions can be called from any language\nBelow we call the ChatAgent function we defined in BAML through Python. BAML's Rust compiler generates a \"baml_client\" to access and call them.\n\n```python\nfrom baml_client import b\nfrom baml_client.types import Message, StopTool\n\nmessages = [Message(role=\"assistant\", content=\"How can I help?\")]\n\nwhile True:\n  print(messages[-1].content)\n  user_reply = input()\n  messages.append(Message(role=\"user\", content=user_reply))\n  tool = b.ChatAgent(messages, \"happy\")\n  if isinstance(tool, StopTool):\n    print(\"Goodbye!\")\n    break\n  else:\n    messages.append(Message(role=\"assistant\", content=tool.response))\n```\nYou can write any kind of agent or workflow using chained BAML functions. An agent is a while loop that calls a Chat BAML Function with some state.\n\nAnd if you need to stream, add a couple more lines:\n```python\nstream = b.stream.ChatAgent(messages, \"happy\")\n# partial is a Partial type with all Optional fields\nfor tool in stream:\n    if isinstance(tool, StopTool):\n      ...\n    \nfinal = stream.get_final_response()\n```\nAnd get fully type-safe outputs for each chunk in the stream.\n\n## Test prompts 10x faster, right in your IDE\nBAML comes with native tooling for [VS Code](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fvs-code-extension) and [JetBrains IDEs](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fjetbrains), with support for [other editors](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fothers) continuing to expand.\n\n**Visualize full prompt (including any multi-modal assets), and the API request**. BAML gives you full transparency and control of the prompt.\n\n![raw-curl](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_66278b3050ed.png)\n\n**Using AI is all about iteration speed.**\n\nIf testing your pipeline takes 2 minutes, you can only test 10 ideas in 20 minutes.\n\nIf you reduce it to 5 seconds, you can test 240 ideas in the same amount of time.\n![resume-attempt2-smaller2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_806b6a722489.png)\n\nThe playground also allows you to run tests in parallel -- for even faster iteration speeds 🚀.\n\nNo need to login to websites, and no need to manually define json schemas.\n\n## Enable reliable tool-calling with any model\nBAML works even when the models don't support native tool-calling APIs. We created the SAP (schema-aligned parsing) algorithm to support the flexible outputs LLMs can provide, like markdown within a JSON blob or chain-of-thought prior to answering. [Read more about SAP](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fschema-aligned-parsing)\n\nWith BAML, your structured outputs work in Day-1 of a model release. No need to figure out whether a model supports parallel tool calls, or whether it supports recursive schemas, or `anyOf` or `oneOf` etc.\n\nSee it in action with: **[Deepseek-R1](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fdeepseek-r1-function-calling)** and [OpenAI O1](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fopenai-o1).\n\n\n\n## Switch from 100s of models in a couple lines\n```diff\nfunction Extract() -> Resume {\n+  client openai\u002Fo3-mini\n  prompt #\"\n    ....\n  \"#\n}\n```\n[Retry policies](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Fretry-policy) • [fallbacks](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Ffallback) • [model rotations](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Fround-robin). All statically defined.\n![Fallback Retry](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002F2025-01-24-ai-agents-need-a-new-syntax\u002F06-fallback-retry.gif)\nWant to do pick models at runtime? Check out the [Client Registry](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fbaml-advanced\u002Fllm-client-registry).\n\nWe support: [OpenAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopen-ai) • [Anthropic](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fanthropic) • [Gemini](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fgoogle-ai-gemini) • [Vertex](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fgoogle-vertex) • [Bedrock](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Faws-bedrock) • [Azure OpenAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopen-ai-from-azure) • [Anything OpenAI Compatible](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic) ([Ollama](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-ollama), [OpenRouter](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-open-router), [VLLM](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-v-llm), [LMStudio](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-lm-studio), [TogetherAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-together-ai), and more)\n\n## Build beautiful streaming UIs\nBAML generates a ton of utilities for NextJS, Python (and any language) to make streaming UIs easy.\n![recipe-generator](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_949e212bbe7d.png)\n\nBAML's streaming interfaces are fully type-safe. Check out the [Streaming Docs](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fbaml-basics\u002Fstreaming), and our [React hooks](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fframework-integration\u002Freact-next-js\u002Fquick-start)\n\n## Fully Open-Source, and offline\n- 100% open-source (Apache 2)\n- 100% private. AGI will not require an internet connection, neither will BAML\n    - No network requests beyond model calls you explicitly set\n    - Not stored or used for any training data\n- BAML files can be saved locally on your machine and checked into Github for easy diffs.\n- Built in Rust. So fast, you can't even tell it's there.\n\n## BAML's Design Philosophy\n\nEverything is fair game when making new syntax. If you can code it, it can be yours. This is our design philosophy to help restrict ideas:\n\n- **1:** Avoid invention when possible\n    - Yes, prompts need versioning — we have a great versioning tool: git\n    - Yes, you need to save prompts — we have a great storage tool: filesystems\n- **2:** Any file editor and any terminal should be enough to use it\n- **3:** Be fast\n- **4:** A first year university student should be able to understand it\n\n## Why a new programming language\n\nWe used to write websites like this:\n\n```python\ndef home():\n    return \"\u003Cbutton onclick=\\\"() => alert(\\\\\\\"hello!\\\\\\\")\\\">Click\u003C\u002Fbutton>\"\n```\n\nAnd now we do this:\n\n```jsx\nfunction Home() {\n  return \u003Cbutton onClick={() => setCount(prev => prev + 1)}>\n          {count} clicks!\n         \u003C\u002Fbutton>\n}\n```\n\nNew syntax can be incredible at expressing new ideas. Plus the idea of maintaining hundreds of f-strings for prompts kind of disgusts us 🤮. Strings are bad for maintainable codebases. We prefer structured strings.\n\nThe goal of BAML is to give you the expressiveness of English, but the structure of code.\n\nFull [blog post](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fai-agents-need-new-syntax) by us.\n\n\n## Conclusion\n\nAs models get better, we'll continue expecting even more out of them. But what will never change is that we'll want a way to write maintainable code that uses those models. The current way we all just assemble strings is very reminiscent of the early days PHP\u002FHTML soup in web development. We hope some of the ideas we shared today can make a tiny dent in helping us all shape the way we all code tomorrow.\n\n## FAQ\n|   |   |\n| - | - |\n| Do I need to write my whole app in BAML? | Nope, only the prompts! BAML translates definitions into the language of your choice! [Python](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fpython), [TypeScript](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Ftypescript), [Ruby](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fruby) and [more](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Frest-api-other-languages). |\n| Is BAML stable? | Yes, many companies use it in production! We ship updates weekly! |\n| Why a new language? | [Jump to section](#why-a-new-programming-language) |\n\n\n## Contributing\nCheckout our [guide on getting started](\u002FCONTRIBUTING.md)\n\n## Citation\n\nYou can cite the BAML repo as follows:\n```bibtex\n@software{baml,\n  author = {Boundary ML},\n  title = {BAML},\n  url = {https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml},\n  year = {2024}\n}\n```\n\n---\n\nMade with ❤️ by Boundary\n\nHQ in Seattle, WA\n\nP.S. We're hiring for software engineers that love rust. [Email us](mailto:founders@boundaryml.com) or reach out on [discord](https:\u002F\u002Fdiscord.gg\u002FENtBB6kkXH)!\n\n\u003Cdiv align=\"left\" style=\"align-items: left;\">\n        \u003Ca href=\"#top\">\n            \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBack%20to%20Top-000000?style=for-the-badge&logo=github&logoColor=white\" alt=\"Back to Top\">\n        \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f6730132df8e.png\" alt_text=\"hi\" \u002F>\n","\u003Cdiv align=\"center\">\n\u003Ca href=\"https:\u002F\u002Fboundaryml.com?utm_source=github\" target=\"_blank\" rel=\"noopener noreferrer\">\n  \u003Cpicture>\n    \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f90c028f5d03.png\">\n    \u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f90c028f5d03.png\" height=\"64\" id=\"top\">\n  \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n\u003C\u002Fdiv>\n\n\u003Cdiv align=\"center\">\n\n[![BAML 版本](https:\u002F\u002Fimg.shields.io\u002Fpypi\u002Fv\u002Fbaml-py?color=006dad&label=BAML%20Version)](https:\u002F\u002Fpypi.org\u002Fproject\u002Fbaml-py\u002F)\n\n## BAML：基本上是一种虚构的语言\n\u003Ch4>\n\n[主页](https:\u002F\u002Fwww.boundaryml.com\u002F) | [文档](https:\u002F\u002Fdocs.boundaryml.com) | [BAML AI 聊天](https:\u002F\u002Fwww.boundaryml.com\u002Fchat) | [Discord](https:\u002F\u002Fdiscord.gg\u002FBTNBeXGuaS)\n\n\n\n\u003C\u002Fh4>\n\n\n\u003C\u002Fdiv>\n\nBAML 是一种用于构建可靠 **AI 工作流和智能体** 的简单提示语言。\n\nBAML 通过将提示工程转变为 _模式工程_，使提示工程变得简单——你只需专注于提示的模型结构，即可获得更可靠的输出。你无需用 BAML 编写整个应用，只需编写提示部分即可！你可以使用任何你喜欢的语言来集成你的 LLM 函数！请参阅我们的快速入门指南，适用于 [Python](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fpython)、[TypeScript](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Ftypescript)、[Ruby](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fruby) 以及 [Go 等其他语言](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Frest-api-other-languages)。\n\nBAML 提供了开箱即用的功能——具备完整的类型安全、流式处理、重试机制、广泛的模型支持，即使这些模型不原生支持 [工具调用 API](#enable-reliable-tool-calling-with-any-model)。\n\n**试试 BAML**：[Prompt Fiddle](https:\u002F\u002Fwww.promptfiddle.com) • [交互式应用示例](https:\u002F\u002Fbaml-examples.vercel.app\u002F)\n\n\n## BAML 的核心原则：LLM 提示就是函数\n\nBAML 中的基本构建块是函数。每个提示都是一条函数，它接受参数并返回一个类型。\n\n```rust\nfunction ChatAgent(message: Message[], tone: \"happy\" | \"sad\") -> string\n```\n\n每个函数还会进一步定义它所使用的模型以及其具体的提示内容。\n\n```rust\nfunction ChatAgent(message: Message[], tone: \"happy\" | \"sad\") -> StopTool | ReplyTool {\n    client \"openai\u002Fgpt-4o-mini\"\n\n    prompt #\"\n        成为一个 {{ tone }} 的机器人。\n\n        {{ ctx.output_format }}\n\n        {% for m in message %}\n        {{ _.role(m.role) }}\n        {{ m.content }}\n        {% endfor %}\n    \"#\n}\n\nclass Message {\n    role string\n    content string\n}\n\nclass ReplyTool {\n  response string\n}\n\nclass StopTool {\n  action \"stop\" @description(#\"\n    当可能适合结束对话时\n  \"#)\n}\n```\n\n## BAML 函数可以从任何语言中调用\n下面我们通过 Python 调用了我们在 BAML 中定义的 ChatAgent 函数。BAML 的 Rust 编译器会生成一个“baml_client”来访问和调用这些函数。\n\n```python\nfrom baml_client import b\nfrom baml_client.types import Message, StopTool\n\nmessages = [Message(role=\"assistant\", content=\"我能帮您什么？\")]\n\nwhile True:\n  print(messages[-1].content)\n  user_reply = input()\n  messages.append(Message(role=\"user\", content=user_reply))\n  tool = b.ChatAgent(messages, \"happy\")\n  if isinstance(tool, StopTool):\n    print(\"再见！\")\n    break\n  else:\n    messages.append(Message(role=\"assistant\", content=tool.response))\n```\n你可以使用串联的 BAML 函数来编写任何类型的智能体或工作流。一个智能体就是一个循环，不断调用带有某些状态的聊天 BAML 函数。\n\n如果你需要进行流式处理，只需再添加几行代码：\n```python\nstream = b.stream.ChatAgent(messages, \"happy\")\n# partial 是一个包含所有可选字段的 Partial 类型\nfor tool in stream:\n    if isinstance(tool, StopTool):\n      ...\n    \nfinal = stream.get_final_response()\n```\n这样你就可以为流中的每一个数据块获得完全类型安全的输出。\n\n## 在 IDE 中以 10 倍速度测试提示\nBAML 配备了针对 [VS Code](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fvs-code-extension) 和 [JetBrains IDE](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fjetbrains) 的原生工具，并且对 [其他编辑器](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-editors\u002Fothers) 的支持也在不断扩展。\n\n**可视化完整的提示（包括任何多模态资源）以及 API 请求**。BAML 让你对提示拥有完全的透明度和控制力。\n\n![raw-curl](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_66278b3050ed.png)\n\n**使用 AI 的关键在于迭代速度。**\n\n如果测试你的流程需要 2 分钟，那么在 20 分钟内你只能尝试 10 种想法。\n\n如果将时间缩短到 5 秒，那么在相同的时间内你可以尝试 240 种想法。\n![resume-attempt2-smaller2](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_806b6a722489.png)\n\nPlayground 还允许你并行运行测试——从而实现更快的迭代速度 🚀。\n\n无需登录网站，也不需要手动定义 JSON 模式。\n\n## 使用任何模型实现可靠的工具调用\nBAML 即使在模型不支持原生工具调用 API 的情况下也能正常工作。我们开发了 SAP（模式对齐解析）算法，以支持 LLM 可能提供的灵活输出，例如 JSON 数据块中的 Markdown 格式，或者在回答之前的一系列思考过程。[了解更多关于 SAP 的信息](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fschema-aligned-parsing)\n\n借助 BAML，你的结构化输出可以在模型发布的第一天就生效。你无需再去研究某个模型是否支持并行工具调用，或者是否支持递归模式、`anyOf` 或 `oneOf` 等功能。\n\n实际效果请参见：**[Deepseek-R1](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fdeepseek-r1-function-calling)** 和 [OpenAI O1](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fopenai-o1)。\n\n## 在几行代码中切换数百种模型\n```diff\nfunction Extract() -> Resume {\n+  client openai\u002Fo3-mini\n  prompt #\"\n    ....\n  \"#\n}\n```\n[重试策略](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Fretry-policy) • [回退机制](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Ffallback) • [模型轮转](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-strategies\u002Fround-robin)。全部静态定义。\n![回退重试](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002F2025-01-24-ai-agents-need-a-new-syntax\u002F06-fallback-retry.gif)\n想在运行时动态选择模型吗？请查看[客户端注册表](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fbaml-advanced\u002Fllm-client-registry)。\n\n我们支持：[OpenAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopen-ai) • [Anthropic](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fanthropic) • [Gemini](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fgoogle-ai-gemini) • [Vertex](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fgoogle-vertex) • [Bedrock](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Faws-bedrock) • [Azure OpenAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopen-ai-from-azure) • [任何兼容OpenAI的模型](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic)（[Ollama](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-ollama)、[OpenRouter](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-open-router)、[VLLM](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-v-llm)、[LMStudio](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-lm-studio)、[TogetherAI](https:\u002F\u002Fdocs.boundaryml.com\u002Fref\u002Fllm-client-providers\u002Fopenai-generic-together-ai)，以及其他）\n\n## 构建美观的流式UI\nBAML为NextJS、Python（以及任何语言）生成大量实用工具，让构建流式UI变得简单。\n![recipe-generator](https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_949e212bbe7d.png)\n\nBAML的流式接口完全类型安全。请查看[流式文档](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fbaml-basics\u002Fstreaming)，以及我们的[React钩子](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Fframework-integration\u002Freact-next-js\u002Fquick-start)。\n\n## 完全开源且可离线使用\n- 100% 开源（Apache 2）\n- 100% 私密。AGI不需要互联网连接，BAML也不需要\n    - 除了您明确设置的模型调用外，不会发起任何网络请求\n    - 不会存储或用于任何训练数据\n- BAML文件可以保存在本地，并提交到Github以便于比较差异。\n- 使用Rust构建。速度极快，几乎感觉不到它的存在。\n\n## BAML的设计理念\n\n在创建新语法时，一切皆有可能。只要能用代码实现，就能成为你的工具。这是我们的设计理念，旨在帮助约束想法：\n\n- **1:** 尽可能避免重复发明\n    - 是的，提示需要版本控制——我们有很棒的版本控制工具：git\n    - 是的，你需要保存提示——我们有很棒的存储工具：文件系统\n- **2:** 任何文本编辑器和终端都足以使用它\n- **3:** 运行速度快\n- **4:** 大学一年级的学生也应该能够理解它\n\n## 为什么需要一种新的编程语言\n\n过去我们这样编写网站：\n\n```python\ndef home():\n    return \"\u003Cbutton onclick=\\\"() => alert(\\\\\\\"hello!\\\\\\\")\\\">点击\u003C\u002Fbutton>\"\n```\n\n而现在我们这样做：\n\n```jsx\nfunction Home() {\n  return \u003Cbutton onClick={() => setCount(prev => prev + 1)}>\n          {count} 次点击！\n         \u003C\u002Fbutton>\n}\n```\n\n新的语法能够以惊人的效率表达新概念。此外，维护成百上千个用于提示的f-string让我们感到非常厌恶 🤮。字符串不利于代码的可维护性。我们更倾向于结构化的字符串。\n\nBAML的目标是赋予你英语般的表达力，同时保持代码的结构化。\n\n完整[博客文章](https:\u002F\u002Fwww.boundaryml.com\u002Fblog\u002Fai-agents-need-new-syntax)由我们撰写。\n\n\n## 结论\n\n随着模型性能的不断提升，我们对它们的期望也会越来越高。但不变的是，我们需要一种方式来编写可维护的代码，以充分利用这些模型。目前我们拼接字符串的方式，让人不禁想起Web开发早期的PHP\u002FHTML混合模式。希望今天我们分享的一些想法，能够为我们共同塑造未来的编码方式带来一点小小的改变。\n\n## 常见问题解答\n|   |   |\n| - | - |\n| 我需要将整个应用都用BAML编写吗？ | 不，只需要编写提示部分！BAML会将定义转换为你选择的语言！[Python](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fpython)、[TypeScript](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Ftypescript)、[Ruby](https:\u002F\u002Fdocs.boundaryml.com\u002Fguide\u002Finstallation-language\u002Fruby)及其他语言。 |\n| BAML稳定吗？ | 是的，许多公司已经在生产环境中使用它！我们每周都会发布更新！ |\n| 为什么需要一种新语言？ | [跳转至章节](#why-a-new-programming-language) |\n\n\n## 贡献\n请查看我们的[入门指南](\u002FCONTRIBUTING.md)\n\n## 引用\n您可以按以下方式引用BAML仓库：\n```bibtex\n@software{baml,\n  author = {Boundary ML},\n  title = {BAML},\n  url = {https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml},\n  year = {2024}\n}\n```\n\n---\n\n由Boundary用心打造\n\n总部位于华盛顿州西雅图市\n\nP.S. 我们正在招聘热爱Rust的软件工程师。请发送邮件至[founders@boundaryml.com](mailto:founders@boundaryml.com)或通过[Discord](https:\u002F\u002Fdiscord.gg\u002FENtBB6kkXH)联系我们！\n\n\u003Cdiv align=\"left\" style=\"align-items: left;\">\n        \u003Ca href=\"#top\">\n            \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FBack%20to%20Top-000000?style=for-the-badge&logo=github&logoColor=white\" alt=\"返回顶部\">\n        \u003C\u002Fa>\n\u003C\u002Fdiv>\n\n\u003Cimg src=\"https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_readme_f6730132df8e.png\" alt_text=\"hi\" \u002F>","# BAML 快速上手指南\n\nBAML (Basically a Made-up Language) 是一种专为构建可靠 AI 工作流和智能体设计的提示词语言。它将提示词工程转化为“模式工程”，让你专注于定义数据模型，从而获得更稳定、类型安全的 LLM 输出。\n\n## 环境准备\n\n在开始之前，请确保你的开发环境满足以下要求：\n\n*   **操作系统**: Windows, macOS 或 Linux\n*   **编程语言**: 选择你熟悉的主语言（支持 Python, TypeScript, Ruby, Go 等）\n    *   若使用 Python: 建议版本 3.8+\n    *   若使用 Node.js: 建议版本 16+\n*   **编辑器插件 (推荐)**:\n    *   [VS Code Extension](https:\u002F\u002Fmarketplace.visualstudio.com\u002Fitems?itemName=boundary.baml)\n    *   [JetBrains IDEs Plugin](https:\u002F\u002Fplugins.jetbrains.com\u002Fplugin\u002F24668-baml)\n    *   *安装插件后可在 IDE 内直接可视化提示词、调试及并行测试。*\n*   **API Key**: 准备好你所用大模型服务商的 API Key (如 OpenAI, Anthropic, Azure 等)。\n\n## 安装步骤\n\nBAML 的核心是 `.baml` 文件，通过编译器生成对应语言的客户端代码。以下以 **Python** 为例（其他语言逻辑类似）：\n\n### 1. 安装 Python 客户端库\n\n```bash\npip install baml-py\n```\n\n> **国内加速提示**: 如果下载缓慢，可使用清华或阿里镜像源：\n> ```bash\n> pip install baml-py -i https:\u002F\u002Fpypi.tuna.tsinghua.edu.cn\u002Fsimple\n> ```\n\n### 2. 初始化 BAML 项目\n\n在项目根目录下运行初始化命令，这将创建基础的 `baml_src` 目录和配置文件：\n\n```bash\nbaml-cli init\n```\n\n### 3. 生成客户端代码\n\n每次修改 `.baml` 文件后，都需要运行生成命令来更新你的语言客户端（例如生成 `baml_client` 模块）：\n\n```bash\nbaml-cli generate\n```\n\n## 基本使用\n\nBAML 的核心原则是：**LLM 提示词即函数**。你需要定义输入参数、输出类型（Schema）以及具体的提示词内容。\n\n### 第一步：定义 BAML 函数\n\n在项目中的 `baml_src\u002Findex.baml` 文件中编写以下内容。这里定义了一个简单的聊天机器人函数，它接收消息列表和语气，返回结构化数据。\n\n```rust\n\u002F\u002F baml_src\u002Findex.baml\n\nclient openai_client {\n  provider OpenAI\n  options {\n    api_key \"YOUR_OPENAI_API_KEY\" \u002F\u002F 建议替换为环境变量\n  }\n}\n\nclass Message {\n  role string\n  content string\n}\n\nclass ReplyTool {\n  response string\n}\n\nfunction ChatAgent(message: Message[], tone: \"happy\" | \"sad\") -> ReplyTool {\n  client openai_client.gpt-4o-mini\n\n  prompt #\"\n    Be a {{ tone }} bot.\n\n    {% for m in message %}\n    {{ _.role(m.role) }}: {{ m.content }}\n    {% endfor %}\n    \n    Respond with a helpful message.\n  \"#\n}\n```\n\n### 第二步：生成并调用\n\n1.  运行生成命令：\n    ```bash\n    baml-cli generate\n    ```\n    这将在你的项目中生成 `baml_client` 目录。\n\n2.  在你的 Python 代码中调用该函数：\n\n```python\nfrom baml_client import b\nfrom baml_client.types import Message\n\n# 准备输入数据\nmessages = [\n    Message(role=\"user\", content=\"Hello, how are you?\")\n]\n\n# 调用 BAML 定义的函数\n# 第二个参数 \"happy\" 对应定义中的 tone 枚举\nresponse = b.ChatAgent(messages, \"happy\")\n\n# 获取类型安全的输出\nprint(response.response)\n```\n\n### 进阶：流式输出 (Streaming)\n\nBAML 原生支持流式传输，且保持类型安全：\n\n```python\nfrom baml_client import b\n\nmessages = [Message(role=\"user\", content=\"Tell me a story\")]\n\n# 开启流式调用\nstream = b.stream.ChatAgent(messages, \"happy\")\n\nfor partial_response in stream:\n    # partial_response 包含当前片段的类型安全数据\n    if partial_response.response:\n        print(partial_response.response, end=\"\", flush=True)\n\n# 获取完整结果\nfinal_result = stream.get_final_response()\n```\n\n通过以上步骤，你即可利用 BAML 将杂乱的字符串提示词转化为可维护、可测试且类型安全的代码模块。","某电商公司的后端团队正在开发一个多语言智能客服系统，需要让 AI 根据用户情绪动态调整回复语气，并精准识别何时结束对话。\n\n### 没有 baml 时\n- **提示词难以维护**：Prompt 散落在各个 Python 或 TypeScript 文件中，硬编码的字符串导致修改语气逻辑时需全局搜索替换，极易出错。\n- **输出结构不可靠**：依赖正则表达式或脆弱的 JSON 解析来提取 AI 回复，一旦模型输出格式微调，整个服务就会崩溃。\n- **缺乏类型安全**：开发人员无法在编写代码时预知 AI 返回的具体字段，只能等到运行时报错才发现数据结构不匹配。\n- **测试迭代缓慢**：调整 Prompt 后必须重启服务并手动构造请求才能验证效果，无法在编辑器内快速试错。\n\n### 使用 baml 后\n- **提示词工程化**：将 Prompt 定义为带参数的强类型函数（如 `ChatAgent`），集中管理语气和逻辑，修改只需调整一处定义。\n- **结构化输出保障**：通过定义 `ReplyTool` 和 `StopTool` 等类，baml 强制模型输出符合架构的数据，彻底消除解析错误。\n- **端到端类型安全**：编译器自动生成客户端代码，IDE 能实时提示 `tool.response` 等字段，让调用 AI 像调用普通函数一样安心。\n- **即时调试体验**：直接在 VS Code 插件中修改 Prompt 并运行测试用例，无需重启应用即可看到不同语气下的生成结果，效率提升十倍。\n\nbaml 通过将模糊的提示词转化为严谨的模式工程，让构建高可靠、易维护的 AI 工作流变得像传统软件开发一样规范高效。","https:\u002F\u002Foss.gittoolsai.com\u002Fimages\u002FBoundaryML_baml_66278b30.gif","BoundaryML","Boundary","https:\u002F\u002Foss.gittoolsai.com\u002Favatars\u002FBoundaryML_be5d61ce.png","",null,"https:\u002F\u002Fboundaryml.com","https:\u002F\u002Fgithub.com\u002FBoundaryML",[82,86,90,94,98,102,106,110,114,118],{"name":83,"color":84,"percentage":85},"Rust","#dea584",67.9,{"name":87,"color":88,"percentage":89},"TypeScript","#3178c6",15,{"name":91,"color":92,"percentage":93},"Python","#3572A5",4.2,{"name":95,"color":96,"percentage":97},"MDX","#fcb32c",3.6,{"name":99,"color":100,"percentage":101},"JavaScript","#f1e05a",3.3,{"name":103,"color":104,"percentage":105},"Go","#00ADD8",2.3,{"name":107,"color":108,"percentage":109},"HTML","#e34c26",1.2,{"name":111,"color":112,"percentage":113},"Jinja","#a52a22",0.9,{"name":115,"color":116,"percentage":117},"Ruby","#701516",0.3,{"name":119,"color":120,"percentage":117},"Kotlin","#A97BFF",8022,408,"2026-04-20T03:42:24","Apache-2.0","未说明",{"notes":127,"python":125,"dependencies":128},"BAML 是一个提示词工程语言，核心编译器由 Rust 编写。它不直接运行本地 AI 模型，而是作为中间层调用外部 LLM API（如 OpenAI, Anthropic, Ollama 等）。因此没有特定的 GPU、显存或大型本地模型依赖需求。支持 Python, TypeScript, Ruby, Go 等多种宿主语言，需安装对应语言的客户端库及 VS Code 或 JetBrains 插件以获得最佳开发体验。",[129],"baml-py",[36,16,27,14],[65,132,133,134,135,136,137,138,139,140,141,142,143],"llm","boundaryml","guardrails","llm-playground","playground","vscode","structured-data","prompt","prompt-config","prompt-templates","structured-generation","structured-output","2026-03-27T02:49:30.150509","2026-04-20T19:22:18.897460",[],[148,152,156,160,164,169,174,179,183,188,193,197,201,205,209,214,218,223,227,231],{"id":149,"version":150,"summary_zh":78,"released_at":151},360200,"0.221.0","2026-04-15T22:15:49",{"id":153,"version":154,"summary_zh":78,"released_at":155},360201,"0.220.0","2026-03-11T05:11:22",{"id":157,"version":158,"summary_zh":78,"released_at":159},360202,"0.219.0","2026-02-12T22:30:00",{"id":161,"version":162,"summary_zh":78,"released_at":163},360203,"0.218.1","2026-01-27T19:39:46",{"id":165,"version":166,"summary_zh":167,"released_at":168},360204,"0.218.0","\r\n\r\n## [0.218.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.217.0..0.218.0) - 2026-01-22\r\n\r\n### Bug修复\r\n- 修复Go语言中动态类型的serde解码问题 (#2978) - ([f3e48fd](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ff3e48fdc3f5f686b10ba6fa2638495ca7539fcee)) - hellovai\r\n- 修复纯动态类（@@dynamic且无静态字段）的Go代码生成问题 (#2995) - ([dcc2323](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fdcc2323639ac5b5ad777dd935f2527a3b6b97b41)) - hellovai\r\n- **(cffi)** 将结果和错误回调包裹在block_in_place中 (#2989) - ([c31ae86](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fc31ae8666c3d1a4e26d046cd6aa5b58ffc37ca18)) - Tsvetomir Bonev\r\n- **(go)** 处理可选的图像编码类型（*types.Image）(#2996) - ([d3d76dc](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fd3d76dc7634472d3673ea88a3913b938c7ea99d0)) - hellovai\r\n- **(react)** 使用NDJSON格式进行流式传输，以处理TCP分块边界问题 (#3000) - ([d4edca7](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fd4edca77c6bf7e9f2e7d898082adc4093ced7e01)) - Antonio Sarosi\r\n- **(ts)** 添加BamlError基类并改进错误层次结构 (#2993) (#3012) - ([807e702](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F807e702e8dfd8caff3acd23e4865e2b7701ced5d)) - Antonio Sarosi\r\n\r\n- 修复测试历史中的游乐场索引问题 (#3005)\r\n- 修复新用户无法显示API密钥对话框的问题 (#2999) - ([6cb3b60](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F6cb3b60efe8eb2b2fcb7a37cdf9e0a479ad41b42)) - Paulo Rossi Rodrigues","2026-01-22T08:51:46",{"id":170,"version":171,"summary_zh":172,"released_at":173},360205,"0.217.0","## [0.217.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.216.0..0.217.0) - 2026-01-10\n\n\n### 功能特性\n\n- 添加原生 Rust SDK (#2832) - ([0b4d81a](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F0b4d81a3861efe49fc41d58c7464c6ae7388ce8c)) - hellovai\n- 将 wire @description 转换为 Pydantic 模型的 Field 属性 (#2955) - ([ff4970a](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fff4970ac911243ef0f8e314d1c5103391c39d278)) - Sam Lijin\n\n### Bug 修复\n- **(zed)** 修复版本号问题 (#2953) - ([a9c4d7b](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fa9c4d7b14fd8024a373c58768f4eb943ec662838)) - Sam Lijin\n- 修复 TimeoutError 和 InvalidArgumentError 被抛出为 BamlError 的问题 (#2954)\n- 修复联合类型中的媒体类型匹配，改为使用文件扩展名启发式方法 (#2894) - ([cad717c](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fcad717cf310678fdad8dea38b708262211c764f6)) - Antonio Sarosi\n- [Studio] 不再通过 BamlValidationError 发布事件重新发送提示和原始输出 (#2914) - ([85a3b35](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F85a3b35a0ea99980ac0fc2d29b2a1b616bfb9a41)) - aaronvg\n- 添加中止错误详情 (#2921) - ([9172fbc](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F9172fbcea6405917fd751f519366ffd180d673c1)) - aaronvg\n- 修复 Jinja 过滤器验证中的反向类型检查问题 (#2942) - ([e903222](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fe903222a92d5993af33e02fa41b518a50b94b4ab)) - Kelvin\n- 添加 on_tick 回调测试，并修复 CFFI 流式回调处理问题 (#2949) - ([db206db](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fdb206dbb192bd1061438835173f2795a39c67de7)) - hellovai\n- 修复 @skip 属性在 @@dynamic 和非 dynamic 类中引发的 panic 问题 (#2952) - ([ae13652](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fae136524eff94bb364c0086e89569e3c47bc2e5d)) - Antonio Sarosi\n\n","2026-01-12T03:11:02",{"id":175,"version":176,"summary_zh":177,"released_at":178},360206,"0.216.0","\n## [0.216.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.215.2..0.216.0) - 2025-12-31\n\n### Bug修复\n\n- **(aws-bedrock)** 将区域传递给 DefaultCredentialsChain 以支持 IRSA (#2856) - ([30ff957](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F30ff9577f52f69bc3861f8bdb0cf57180d94352e)) - Benjamin Poile\n- 修复 PDF 查看器 CSS 预加载错误 (#2876) - ([fb0257b](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ffb0257bdf9ec0900be9f131a83d2e05d63c33458)) - Antonio Sarosi\n- 修复当没有 finish reason 负载时请求会超时的问题 (#2881) - ([629c14e](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F629c14e88171f89240713598a156f0a7712d6b6f)) - aaronvg\n- 修复 TypeScript x86 Alpine 的问题 (#2887) - ([5c2c6d8](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F5c2c6d844aa8a4623601dd60c829b608ede771fe)) - aaronvg\n- 修复 Vertex 凭证解析中 TypeScript arm64 Linux 的问题 (#2892) - ([6a97b69](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F6a97b69c489053ab0fe5ba84115063d31bd0a0cf)) - aaronvg\n\n### 功能\n- **(codegen)** 向 BamlCallOptions 添加 `client` 选项 (#2870) - ([3aa56df](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F3aa56df16e0f68cba1bcc76ff8cb9a43491e29d1)) - hellovai\n\n### 文档\n- 修正文档中的资历格式 (#2857) - ([3bebb8c](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F3bebb8cdce0fa7efcf0e69ac3ca995615496de5b)) - hellovai\n- 在文档中澄清 `ClientRegistry.set_primary` 的工作方式 (#2875) - ([4afec32](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F4afec32b95cf8c13ae1f895d64465a8ce3ef7a26)) - Antonio Sarosi\n","2025-12-31T18:04:56",{"id":180,"version":181,"summary_zh":78,"released_at":182},360207,"0.215.2","2025-12-23T08:31:33",{"id":184,"version":185,"summary_zh":186,"released_at":187},360208,"0.215.0","\n## [0.215.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.214.0..0.215.0) - 2025-12-18\n\n### Bug修复\n\n- Go语言类型系统修复、CFFI重构及测试基础设施改进 (#2778) - ([1afa7e8](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F1afa7e8dea1d693034a2e54f239c9378f8e091d1)) - hellovai\n- 修复索引错误 (#2742) `merge_messages` 之前使用了 `foo.len() - 1`。由于 `len` 是一个 `USIZE`（无符号整数），当长度为 0 时，减 1 会导致溢出，从而导 - ([518dc61](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F518dc610525c8fb0633fa9f63e5c8e27b6e7a78c)) - Greg Hale\n- OpenAI推理内容未文档化的空值返回问题 (#2803) - ([0012eb1](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F0012eb1a7515fc23fe7b7011060738bfaaa7c8df)) - Patrick Wadström\n- 修复生成的 Python\u002FTS 客户端中的变量遮蔽错误 (#2810) - ([5ae0010](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F5ae001011559bc29997f6dd04cbbbf65d970b12d)) - Antonio Sarosi\n- 修复当 `BOUNDARY_API_KEY` 设置时 `baml-cli test` 出现的恐慌问题 (#2779) - ([220ad19](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F220ad1901fecab2fbe90d92e2306a42c6a10bb62)) - Antonio Sarosi\n- 修复关于 SSE 数据块的一些文档，Anthropic 流中没有 SSE 事件，并在提示字符串中使用 command + \u002F 添加注释 (#2802) - ([c17c93d](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fc17c93dbeabc3a61bd3de5a101d7f1b04df89fdb)) - aaronvg\n\n### 功能特性\n\n- ts：添加对 Windows arm64 的支持；在 Linux arm64 上目标 glibc 2.17 (#2771) - ([23f367f](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F23f367f23c7538ab73284df9e2d6bda744c2c3c4)) - Sam Lijin\n- 允许用户通过从内联 BAML 文件中移除测试来优化 BAML 的启动时间和占用空间 (#2772) - ([fe72ecd](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ffe72ecd83639c36e2054569b0a2fba786948677e)) - Greg Hale\n- 添加在提示中引用类键时的 output_format 选项 (#2769) - ([969da89](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F969da89d38093afffd0abe8d30f14b70b70b9a32)) - Greg Hale\n- 在提示中添加搜索功能 (#2804) - ([4f7a46b](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F4f7a46bda53de992b6d3959779bf497e47f09e83)) - aaronvg\n- 提示优化可视化工具 (#2807) - ([9d1bf87](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F9d1bf8734887c8c0bdd6f501498bd56a6229e8c7)) - Greg Hale\n- 解析器性能改进 (#2806) - ([f44cd28](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ff44cd289e9347dd77bc06562af7e2ef4139689fa)) - aaronvg\n\n### 文档\n\n- 如何与 Microsoft Foundry 集成 (#2745) - ([83c85b4](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F83c85b46c9a8241b97e0f803845fa7ae94d3d5ac)) - aaronvg\n- 记录 baml-cffi Docker 构建缓存 (#2756) - ([fb4d00c](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ffb4d00c006f61d37e9f81938d91e79eb181a51d4)) - hellovai\n- 将项目 URL 添加到 PyPI (#2712) - ([9e8d731](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F9e8d731efcdeac2c43cb09ba7f8188812d7c9936)) - Toundra\n- 修复 React 聊天机器人文档和实现 (#2770) - ([d1f1842](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fco","2025-12-18T09:29:34",{"id":189,"version":190,"summary_zh":191,"released_at":192},360209,"0.214.0","## [0.214.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.213.0..0.214.0) - 2025-11-24\n\n我们新增了 TOON 格式！现在在序列化参数时，您可以在提示中使用 `{{ data|format(type=\"toon\") }}`，以采用更紧凑的格式。有关 TOON 的更多信息，请参阅：https:\u002F\u002Fgithub.com\u002Ftoon-format\u002Ftoon\n\n### 功能\n- **(baml)** 实现静态控制流可视化工具（我们将在近期公布）(#2716) - ([4c9d507](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F4c9d50795563748952263a1ce4423f62460e2923)) - Sam Lijin\n- **(cli)** 在 baml-cli dev 和 baml-cli serve 中加载 dotenv (#2703) - ([e6fff13](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fe6fff13b7a7685e987c4a68a626984b7495ece33)) - Sam Lijin\n- **(cli)** 默认隐藏内部子命令 (#2704) - ([a61d28c](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fa61d28c7b2e06059875605c3ea30d37aad17a7a2)) - Sam Lijin\n- **(engine)** 为 Boundary Studio 压缩序列化日志，将负载减少 10 倍 (#2729) - ([d75255a](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fd75255a2212c6662f2512a69e4ad132ebfeff020)) - hellovai\n- 添加用于节省 token 的数据序列化 TOON Jinja 过滤器 (#2720) - ([c2f31a4](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fc2f31a4c1d2264c9caca610a5f326dc3e547f8d1)) - hellovai\n\n### 错误修复\n- 减少 Playground 中的日志输出，以防止卡顿 - ([43960d4](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F43960d472466bd0ae16c73af222043f9424ed63b)) - Aaron Villalpando\n- 修复 ask baaaml (#2711) - ([ef62656](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fef6265649d8ab593527d9d7646c5c2eb41fd83fc)) - Greg Hale\n\n### 文档更新\n- 修复文档：gpt-4.1 模型的无效选项 (#2708) - ([5d45cc9](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F5d45cc9dccbf334062e60fedde140d8e69c75bd9)) - yasonk\n- 添加通过 base_url 选择 OpenAI 区域的文档\n- 修复媒体构造函数的相关文档\n- 添加 `media_url_handler` 的示例代码和说明 - ([386a5d9](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F386a5d915c6ff2c5e15f36aa76a2f9396b85a799)) - Greg Hale","2025-11-24T05:44:31",{"id":194,"version":195,"summary_zh":78,"released_at":196},360210,"0.213.0","2025-11-06T07:46:37",{"id":198,"version":199,"summary_zh":78,"released_at":200},360211,"0.212.0","2025-10-28T17:05:46",{"id":202,"version":203,"summary_zh":78,"released_at":204},360212,"0.211.2","2025-10-12T05:24:01",{"id":206,"version":207,"summary_zh":78,"released_at":208},360213,"0.211.1","2025-10-10T23:27:10",{"id":210,"version":211,"summary_zh":212,"released_at":213},360214,"0.211.0","\r\n## [0.211.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.210.0..0.211.0) - 2025-10-07\r\n\r\n### Bug修复\r\n\r\n- **(编译器)** 类型检查时出现重复诊断 (#2535) - ([5a8de50](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F5a8de50aaf42dc9cdac77e02374c8ad1396b3765)) - José Rafael Oses\r\n- 在非错误情况下正确退出 baml-cli init 后的辅助屏幕 (#2565) - ([b911a19](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fb911a1927046b7a36d43fdaee1b25ebbfbc37f31)) - Greg Hale\r\n- 修复 JSON 解析器在输出中间表示时的问题 (#2572) - ([c1a0b0e](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fc1a0b0e15fa36745a4a59d6a322f182cef034a6e)) - aaronvg\r\n- **(Python)** 导出用于 baml 日志的 set_log_max_message_length 配置项 (#2553) - ([2c689dc](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F2c689dc3341b1f8ef4030b397b5e93f46cb25b2e)) - Samuel Lijin\r\n- 为客户端中缺失的必填环境变量添加特定错误提示 (#2570) - ([5ea6adb](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F5ea6adb02f6e4246dd53cd626189ec1578d69b69)) - Antonio Sarosi\r\n- [Promptfiddle] 修复播放按钮消失的问题 (#2571) - ([7d31c37](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F7d31c37142d89758ccff805853db0855af2bd318)) - aaronvg\r\n- Boundary Studio 的大量追踪功能改进 [#2576](https:\u002F\u002Fgithub.com\u002FBoundaryML\u002Fbaml\u002Fpull\u002F2576)\r\n\r\n### 文档\r\n\r\n- 修复 @description 文档 (#2544) - ([32aec21](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F32aec21f10840d28e837216f14ffed116e9bc377)) - Samuel Lijin\r\n- 记录 Next.js 15 版本的要求 (#2540) - ([c1ce2ab](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Fc1ce2abab0bddb42a84e492ef300a4dc14129a0a)) - Greg Hale\r\n\r\n","2025-10-07T22:22:15",{"id":215,"version":216,"summary_zh":78,"released_at":217},360215,"0.210.0","2025-10-01T05:40:19",{"id":219,"version":220,"summary_zh":221,"released_at":222},360216,"0.209.0","\n## [0.209.0](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.208.5..0.209.0) - 2025-09-28\n\n\n### Bug修复\n- 使Studio的trace上传效率提升6倍，并修复了刷新逻辑 (#2531)\n- 修复了一个问题：我们直到流结束才会对其进行解析；同时修复了OpenAI响应中的PDF输入以及Vertex-Anthropic的流式处理。(#2530) - ([4bb2f33](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F4bb2f33ff908ff6a2f97fca222bc7afb5a12e8f3)) - aaronvg\n- **(语言服务器)** 对非baml-src的BAML文件进行优雅处理 (#2506) - ([613df6b](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F613df6b9398d2921b5551be4f54db4cb285ba32f)) - Samuel Lijin\n- **(游乐场)** 使Vertex在VS Code游乐场中正常工作 (#2525) - ([6a5fa73](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F6a5fa73253da89952d698cac16514d1673d84a48)) - Samuel Lijin\n\n### 功能\n- 支持Bedrock模块化API (#2526) - ([42dfef3](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F42dfef3a1e66b265858b42600fc759e330ea0f56)) - Greg Hale\n- 在收集器中暴露标签。允许通过BAML函数的baml_options传递标签 (#2528) - ([27f0694](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F27f06945727cd5354421516f9fe7183e86a6e298)) - aaronvg\n\n\n### 文档\n- 更新Vertex AI提供商文档，添加API密钥信息 (#2519) - ([f146914](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ff1469143472c041521b6c8774a01e2670397977b)) - aaronvg","2025-09-28T17:30:58",{"id":224,"version":225,"summary_zh":78,"released_at":226},360217,"0.208.5","2025-09-25T06:07:49",{"id":228,"version":229,"summary_zh":78,"released_at":230},360218,"0.208.4","2025-09-24T23:09:52",{"id":232,"version":233,"summary_zh":234,"released_at":235},360219,"0.208.3","## [0.208.3](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcompare\u002F0.208.2..0.208.3) - 2025-09-23\n\n### Bug 修复\n\n- **(lang-server)** 处理非 baml-src 的 BAML 文件 (#2486) - ([6bf3299](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002F6bf32994d9411eddd2384552822a3e50a84f790f)) - Samuel Lijin\n- 修复 WASM 集成测试，解决 Playground 不支持流式传输的问题 (#2504) - ([f892440](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ff892440721dca21c53b57e3521176bb8dc03bb38)) - aaronvg\n\n- 版本号升级至 0.208.3 - ([f983b84](https:\u002F\u002Fgithub.com\u002Fboundaryml\u002Fbaml\u002Fcommit\u002Ff983b8463db412ff469944acc16a031aa027f89d)) - Aaron Villalpando\n\n","2025-09-23T21:04:37"]