北京 – 2024年2月5日 – 在人工智能应用开发领域,字节跳动近日重磅开源了其内部使用的大模型应用开发框架——Eino。这款框架旨在降低AI智能体的开发门槛,提升开发效率,让开发者能够像指挥一支足球队一样,轻松构建基于大模型的软件应用。
Eino框架的开源,无疑为Go语言开发者带来了一大利好。它不仅提供了稳定的内核、灵活的扩展性、完善的工具生态,还拥有可靠且易于维护的特性。更重要的是,Eino框架背后有着豆包、抖音等大型应用的实践经验支撑,这使得它在实际应用中更具参考价值。
正如机器之心AIxiv专栏所描述的:“开发基于大模型的软件应用,就像指挥一支足球队:组件是能力各异的队员,编排是灵活多变的战术,数据是流转的足球。” Eino框架正是基于这一理念,将AI应用开发解构为组件、编排和数据三个核心要素。
Eino框架的核心概念:组件、编排与数据
-
组件 (Components): Eino框架将各种AI功能抽象为一个个独立的组件,例如文本生成、对话模型、工具调用等。每个组件都定义了明确的输入输出类型、Option类型和方法签名,开发者可以像使用Go interface一样灵活地使用这些组件。这种模块化的设计,极大地提高了代码的可重用性和可维护性。
go
type ChatModel interface {
Generate(ctx context.Context, input []*schema.Message, opts ...Option) (*schema.Message, error)
Stream(ctx context.Context, input []*schema.Message, opts ...Option) ( *schema.StreamReader[*schema.Message], error)
BindTools(tools []*schema.ToolInfo) error
}
-
编排 (Orchestration): Eino框架允许开发者通过灵活的编排方式,将各个组件连接起来,构建复杂的工作流程。框架提供了两种主要的编排模式:Chain和Graph。Chain模式适用于简单的线性流程,而Graph模式则适用于更复杂的、包含分支和循环的流程。这种编排能力,使得开发者能够根据不同的业务需求,定制化AI应用的行为。
-
Chain: 适用于简单的ChatTemplate + ChatModel的链式调用。
go
chain, _ := NewChain[map[string]any, *Message]().
AppendChatTemplate(prompt).
AppendChatModel(model).
Compile(ctx)
chain.Invoke(ctx, map[string]any{query: what's your name?})
-
Graph: 适用于更复杂的ReAct Agent场景。
go
graph := NewGraph[map[string]any, *schema.Message]()
_ = graph.AddChatTemplateNode(node_template, chatTpl)
_ = graph.AddChatModelNode(node_model, chatModel)
_ = graph.AddToolsNode(node_tools, toolsNode)
_ = graph.AddLambdaNode(node_converter, takeOne)
_ = graph.AddEdge(START, node_template)
_ = graph.AddEdge(node_template, node_model)
_ = graph.AddBranch(node_model, branch)
_ = graph.AddEdge(node_tools, node_converter)
_ = graph.AddEdge(node_converter, END)
compiledGraph, err := graph.Compile(ctx)
if err != nil {
return err
}
out, err := r.Invoke(ctx, map[string]any{query:Beijing's weather this weekend})
-
- 数据 (Data): 数据在Eino框架中扮演着“足球”的角色,在各个组件之间流动。框架提供了统一的数据接口,方便开发者对数据进行处理和转换。
完善的工具生态:助力AI应用开发
Eino框架还提供了一系列强大的工具,例如Callbacks机制,允许开发者在组件运行的开始和结束时,获取输入输出及一些额外信息,从而实现横切面需求,例如日志记录、性能监控等。
Eino框架的意义与展望
Eino框架的开源,不仅降低了AI智能体的开发门槛,还为Go语言开发者提供了一个强大的工具,助力他们构建更智能、更高效的应用。可以预见,随着Eino框架的不断完善和普及,将会有越来越多的开发者加入到AI应用开发的行列中来,共同推动人工智能技术的发展。
字节跳动开源Eino框架,无疑是AI应用开发领域的一项重要举措。它不仅体现了字节跳动在技术领域的实力,也展现了其开放共享的精神。相信在Eino框架的助力下,AI智能体的开发将变得更加丝滑,开发者也将能够像指挥一支“梦之队”一样,轻松打造出令人惊艳的AI应用。
参考文献
- 机器之心. (2024). Go语言开发AI智能体有多丝滑?字节重磅开源Eino框架,内含保姆级教程. Retrieved from https://www.jiqizhixin.com/articles/2024-02-04-17
Views: 11