baml

2025-12-11 0 930

baml :基本上是一种化妆的语言

主页|文档| baml AI聊天|不和谐

baml是一种简单的提示语言,用于构建可靠AI工作流程和代理

baml通过将其转变为模式工程(主要专注于提示的模型)来使及时的工程变得容易,以获取更可靠的输出。您不需要在baml中编写整个应用程序,只需要提示!您可以使用您选择的任何语言来连接LLM功能!请参阅我们的Python,TypeScript,Ruby和Go等的Quickstarts。

baml附带包括所有电池 – 具有完整类型的AFTETY,流媒体,重试,广泛的模型支持,即使它们不支持本机工具呼叫API

尝试baml :提示小提琴•交互式应用程序示例

核心baml原理:LLM提示是功能

baml中的基本构建块是一个功能。每个提示都是一个函数,该函数接收参数并返回类型。

function ChatAgent ( message : Message [ ] , tone : \"happy\" | \"sad\" ) -> string

每个功能还定义了它使用的模型及其提示。

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

    prompt # \"
        Be a {{ tone }} bot.

        {{ ctx.output_format }}

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

class Message {
    role string
    content string
}

class ReplyTool {
  response string
}

class StopTool {
  action \"stop\" @ description ( # \"
    when it might be a good time to end the conversation
  \" # )
} 

baml函数可以从任何语言中调用

在下面,我们调用了通过Python在baml中定义的聊天功能。 baml的Rust编译器生成一个“ baml _CLEINT”来访问并致电。

baml_client import b
from baml _client.types import Message, StopTool

messages = [Message(role=\”assistant\”, content=\”How can I help?\”)]

while True:
print(messages[-1].content)
user_reply = input()
messages.append(Message(role=\”user\”, content=user_reply))
tool = b.ChatAgent(messages, \”happy\”)
if isinstance(tool, StopTool):
print(\”Goodbye!\”)
break
else:
messages.append(Message(role=\”assistant\”, content=tool.response))\”>

 from baml _client import b
from baml _client . types import Message , StopTool

messages = [ Message ( role = \"assistant\" , content = \"How can I help?\" )]

while True :
  print ( messages [ - 1 ]. content )
  user_reply = input ()
  messages . append ( Message ( role = \"user\" , content = user_reply ))
  tool = b . ChatAgent ( messages , \"happy\" )
  if isinstance ( tool , StopTool ):
    print ( \"Goodbye!\" )
    break
  else :
    messages . append ( Message ( role = \"assistant\" , content = tool . response ))

您可以使用链式baml功能编写任何类型的代理或工作流。代理是一个while循环,该循环调用chat baml函数具有某种状态。

如果需要流,请添加几行:

 stream = b . stream . ChatAgent ( messages , \"happy\" )
# partial is a Partial type with all Optional fields
for tool in stream :
    if isinstance ( tool , StopTool ):
      ...
    
final = stream . get_final_response ()

并获取流中每个块的完全类型安全输出。

测试提示快10倍,就在您的IDE中

baml配备了VSCODE的本机工具(Jetbrains + Neovim即将推出)。

可视化完整提示(包括任何多模式资产)和API请求。 baml为您提供了全部透明度和提示的控制。

原毛

使用AI是关于迭代速度的。

如果测试管道需要2分钟,则只能在20分钟内测试10个想法。

如果将其减少到5秒钟,则可以在相同的时间内测试240个想法。 remume-atempt2-smaller2

操场还允许您并行运行测试 – 甚至更快的迭代速度。

无需登录网站,也无需手动定义JSON模式。

使用任何型号启用可靠的工具称呼

即使模型不支持本机工具接听API, baml可以工作。我们创建了SAP(模式一致的解析)算法,以支持LLM可以提供的灵活输出,例如在回答之前在JSON BLOB或经过思考的链条中降低。阅读有关SAP的更多信息

使用baml ,您的结构化输出在模型释放的第1天工作。无需弄清楚模型是否支持并行工具调用,还是支持递归模式,或任何一个或单位。

与以下操作看到: DeepSeek-R1和Openai O1。

从几行从100型型号切换

function Extract() -> Resume {
+  client openai/o3-mini
  prompt #\"
    ....
  \"#
}

重试策略•后备•型号旋转。所有静态定义。想在运行时选择型号吗?查看客户端注册表。

我们支持:Openai•人类•双子座•顶点•基岩•Azure Openai•任何openai兼容的东西(Ollama,OpenRouter,vllm,vllm,lmstudio,ferederai等)

建立美丽的流媒体UI

baml为NextJ,Python(和任何语言)生成了大量的实用程序,以使流媒体UI变得容易。 食谱生成器

baml的流界接口是完全类型的安全性。查看流文档,我们的React钩子

完全开源和离线

  • 100%开源(Apache 2)
  • 100%私人。 AGI不需要互联网连接, baml也不会
    • 除了模型之外,没有网络请求您明确设置
    • 未存储或用于任何培训数据
  • baml文件可以在本地保存在您的计算机上,并将其检查到GitHub中以获取易于差异。
  • 内置生锈。这么快,你甚至都无法分辨它在那里。

baml的设计理念

制作新语法时,一切都是公平的游戏。如果可以编码,则可以是您的。这是我们帮助限制思想的设计理念:

  • 1:尽可能避免发明
    • 是的,提示需要版本操作 – 我们有一个很棒的版本控制工具:git
    • 是的,您需要保存提示 – 我们有一个很好的存储工具:文件系统
  • 2:任何文件编辑器和任何终端都足以使用它
  • 3:
  • 4:一年级的大学生应该能够理解

为什么一种新的编程语言

我们曾经以这样的方式编写网站:

 def home ():
    return \"<button onclick= \\\" () => alert( \\\\ \\\" hello! \\\\ \\\" ) \\\" >Click</button>\"

现在我们这样做:

 function Home ( ) {
  return < button onClick = { ( ) => setCount ( prev => prev + 1 ) } >
          { count } clicks!
         </ button >
}

新的语法在表达新想法方面可能令人难以置信。再加上维持数百个f弦的想法,以提示我们的厌恶。字符串对可维护的代码库不利。我们更喜欢结构化的字符串。

baml的目的是为您提供英语的表现力,但代码的结构。

我们的完整博客文章。

结论

随着模型变得更好,我们将继续期望它们更多。但是,永远不会改变的是,我们将需要一种编写使用这些模型的可维护代码的方法。当前我们所有人都组装字符串的方式让人想起了早期的Web开发中PHP/HTML汤。我们希望我们今天分享的一些想法可以使我们大家明天都塑造我们所有人的方式,从而有很小的凹痕。

常问问题

我需要用baml写整个应用吗? 不,只有提示! baml将定义转化为您选择的语言! Python,打字稿,Ruby等。
baml稳定吗? 是的,许多公司在生产中使用它!我们每周运送更新!
为什么要一种新语言? 跳到部分

贡献

结帐我们有关入门的指南

引用

您可以引用baml回购如下:

baml,
author = {Vaibhav Gupta, Aaron Villalpando and Boundary ML team},
title = { baml },
url = {https://git*hu*b.*com/boundaryml/baml},
year = {2024}
}\”>

 @software { baml ,
  author = { Vaibhav Gupta, Aaron Villalpando and Boundary ML team } ,
  title = { baml } ,
  url = { https://gi*t*hub*.com/boundaryml/baml } ,
  year = { 2024 }
}

用边界制成的❤️

华盛顿州西雅图的总部

PS我们正在雇用喜欢Rust的软件工程师。给我们发送电子邮件或与Discord接触!

下载源码

通过命令行克隆项目:

git clone https://github.com/BoundaryML/baml.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 编程相关 baml https://www.zuozi.net/34433.html

aws toolkit vscode
上一篇: aws toolkit vscode
vscode icons
下一篇: vscode icons
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务