完整文章: https://www.boundaryml.com/blog/sota-function-calling
使用BAML,我们几乎解决了伯克利函数调用基准(BFCL),所有模型(gpt-3.5+)都适用。
关键发现
- BAML在函数调用方面更准确且成本更低,比任何原生函数调用API都容易快2-4倍。
- BAML的技术与模型无关,无需修改即可与任何模型(包括开源模型)配合使用。
- gpt-3.5-turbo、gpt-4o-mini和claude-haiku与BAML配合使用几乎与结构化输出的gpt4o一样好(不到2%)。
- 使用FC-strict比原始函数调用改进了所有旧的OpenAI模型,但
gpt-4o-2024-08-06
表现更差。
背景
迄今为止,从LLM中获得更好结果的唯一方法是:
- 用更长更复杂的提示进行大量提示工程
- 训练一个更好的模型
BAML的不同之处
用类似TypeScript的定义替换JSON模式。例如,
string[]
比{"type": "array", "items": {"type": "string"}}
更容易理解。使用一种新颖的解析技术(模式对齐解析)代替JSON.parse。SAP允许输出中使用更少的令牌且不会因JSON解析而产生错误。例如,即使键周围没有引号,也可以解析。PARALLEL-5
[ { streaming_service: “Netflix”, show_list: [“Friends”], sort_by_rating: true }, { streaming_service: “Hulu”, show_list: [“The Office”, “Stranger Things”], sort_by_rating: true } ]
我们使用我们的提示DSL(BAML)实现了这一点[2],没有使用JSON模式或任何类型的约束生成。我们还与OpenAI的结构化输出进行了比较,后者使用了我们称之为“FC-strict”的“工具”API。
对未来的思考
模型在语义理解方面非常出色。
模型在需要完美的事物上表现很差,如完美的JSON、完美的SQL、编译代码等。
我们相信,与其努力训练模型处理结构化数据或在生成时约束令牌,不如将工程努力应用于稳健地处理模型输出等领域,这些领域有未被开发的潜力。
讨论总结
本次讨论主要聚焦于BAML技术在函数调用方面的应用,特别是其与OpenAI结构化输出的比较。参与者对BAML的性能提升、输出有效性以及处理复杂结构的能力表示了浓厚兴趣。讨论中涉及的主要话题包括BAML的DSL(领域特定语言)、模型适用性、异常处理以及与OpenAI的可靠性比较。总体上,讨论呈现出对新技术的好奇与探索,同时也对其实际应用中的挑战和潜在优势进行了深入探讨。
主要观点
- 👍 BAML在减少令牌使用方面的性能提升
- 支持理由:评论者正在生产环境中使用JSON模式,并注意到其冗长性,因此对BAML是否能以更少的令牌提供更好的性能感到好奇。
- 反对声音:无
- 🔥 BAML是否能保证输出始终有效
- 正方观点:BAML保证输出有效,如果无法解析则抛出异常。
- 反方观点:对于更复杂的结构,BAML的表现如何,特别是在小型模型上是否会出现更多解析错误。
- 💡 BAML使用的新型DSL可能比标准JSON更有效
- 解释:评论者对BAML的DSL表示好奇,认为LLMs可能更熟悉这种类型的描述,且BAML的DSL转换返回类型的方式展示了其灵活性和实用性。
金句与有趣评论
- “😂 I am using json schema in production and noticed it’s rather verbose so very interested to see if this can offer better performance for less tokens.”
- 亮点:评论者对BAML在减少令牌使用方面的性能提升表示兴趣。
- “🤔 Nice work! Sorry if I’m misunderstanding, but does BAML guarantee a valid output, in the same way a constrained generation algorithm does?”
- 亮点:用户对BAML的输出有效性提出了疑问,引发了关于BAML在复杂结构处理上的讨论。
- “👀 This is very interesting. I would have expected that standard (but verbose as you say) JSON spec would work better than a newly invented DSL.”
- 亮点:评论者对BAML使用的新型DSL表示好奇,探讨了其可能的优势。
情感分析
讨论的总体情感倾向是积极和好奇的,参与者对BAML技术表示了浓厚的兴趣和探索欲望。主要分歧点在于BAML的输出有效性和处理复杂结构的能力,特别是与OpenAI的结构化输出进行比较时。这些分歧主要源于对新技术的不确定性和对其潜在优势的期待。
趋势与预测
- 新兴话题:BAML在开源模型如llama 3.1上的应用可能会引发后续讨论。
- 潜在影响:BAML技术在提高函数调用性能和有效性方面的应用可能会对相关领域产生积极影响,特别是在处理复杂结构和减少令牌使用方面。
详细内容:
标题:《关于超越 OpenAI 结构化输出的 BAML 引发的热烈讨论》
近日,Reddit 上一篇题为“Beating OpenAI structured outputs on cost, latency, and accuracy”的帖子引起了广泛关注。该帖子获得了众多点赞和大量评论。
原帖主要介绍了使用BAML在处理结构化输出方面相对于 OpenAI 的优势,包括更高的准确性、更低的成本和更快的速度等。还提到了 BAML 具有模型无关性,能与各种模型兼容。
帖子引发的讨论主要围绕 BAML 的性能、工作原理、与 OpenAI 结构化输出的差异以及在实际应用中的表现等方面展开。
文章将要探讨的核心问题包括:BAML 能否在复杂场景中持续保持优势,以及它如何确保输出的有效性和准确性。
讨论焦点与观点分析
有用户表示在生产中使用 JSON 模式时发现其较为冗长,对 BAML 的性能提升很感兴趣。
对于 BAML 是否能保证有效输出,存在不同观点。有人认为 BAML 能保证有效输出,若无法解析则会抛出异常;也有人担心在使用较小模型时可能会出现较多异常。
关于 BAML 与标准 JSON 规范及 OpenAI 结构化输出的比较,有观点认为尽管 JSON 规范常见,但 BAML 因灵活性和熟悉度可能更具优势;还有用户认为 OpenAI 的结构化输出采用约束生成技术,虽能保证解析性,但不一定保证准确性和有用性。
特别有见地的观点如,BAML 通过将返回类型转换为对 LLM 更有意义的模式并创建动态解析器,来实现其优势。同时,BAML 保证的有效输出是指输出匹配预期结构,否则抛出异常,这能让用户清楚模型对任务和输入的理解情况。
总的来说,讨论中的共识是 BAML 在结构化输出方面展现出了一定的创新性和潜力,但在实际应用中的稳定性和广泛适用性还有待进一步观察和验证。
感谢您的耐心阅读!来选个表情,或者留个评论吧!