Eino:字节跳动开源基于Golang的AI应用开发框架,组件化设计助力构建AI应用

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_基础版,每接口每天50万次
NLP自然语言处理_高级版,每接口累计50万次
简介: Eino 是字节跳动开源的大模型应用开发框架,帮助开发者高效构建基于大模型的 AI 应用。支持组件化设计、流式处理和可视化开发工具。

❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦


大家好,我是蚝油菜花,今天跟大家分享一下 Eino 这个由字节跳动开源的大模型应用开发框架。

🚀 快速阅读

Eino 是字节跳动开源的大模型应用开发框架,旨在帮助开发者高效构建基于大模型的 AI 应用。

  1. 核心功能:组件化设计、图编排引擎、流式处理机制、回调机制。
  2. 技术原理:基于 Go 语言,支持稳定的内核、灵活的扩展性和完善的工具生态。

Eino 是什么

Eino

Eino 是字节跳动开源的大模型应用开发框架,能够帮助开发者高效构建基于大模型的 AI 应用。它以 Go 语言为基础,具备稳定的内核、灵活的扩展性和完善的工具生态。Eino 的核心是组件化设计,通过定义不同的组件(如 ChatModel、Lambda 等)和编排方式(如 Chain 和 Graph),开发者可以灵活地构建复杂的业务逻辑。此外,Eino 支持流式处理,自动处理流的拼接和复制等细节,提升应用性能。Eino 还提供了可视化开发工具 EinoDev,降低了开发门槛,并结合 Langfuse 平台进行运行观测。

Eino 的目标是成为 Golang 中最好的大模型应用开发框架,借鉴了开源社区中的优秀框架(如 LangChain 和 LlamaIndex),并结合了最新的研究和实际应用场景,强调简单性、可扩展性、可靠性和高效性,更好地符合 Golang 编程规范。

Eino 的主要功能

  • 丰富的组件:将常见构建模块抽象为组件,每个组件有多种实现,支持嵌套和复杂业务逻辑。
  • 强大的编排:基于图编排实现数据流的有向、可控传输,支持类型检查、流处理、并发管理等。
  • 完善的流处理:自动处理流式与非流式数据的转换、拼接、合并和复制。
  • 高扩展性的切面(Callbacks):支持多种切面,用于日志记录、追踪、指标统计等,暴露组件实现的内部细节。

Eino 的技术原理

  • 组件化架构:Eino 将应用逻辑拆分为多个组件,每个组件负责特定的功能(如文本生成、数据检索、工具调用等)。组件基于定义好的接口进行交互,开发者根据需求选择或实现具体的组件。
  • 图编排引擎:用图(Graph)表示组件之间的依赖关系和执行顺序。每个组件是一个节点(Node),节点之间的连接关系(边 Edge)定义数据的流转路径。支持分支逻辑(Branch),根据条件动态选择不同的执行路径。
  • 流式处理机制:支持流式输入和输出,自动处理流的拼接(Concat)和流化(T -> StreamReader[T]),提升应用的实时性和性能。
  • 回调机制(Callbacks):提供 Callbacks 机制,支持开发者在组件运行的开始和结束时插入自定义逻辑。基于回调函数,开发者可以实现日志记录、性能监控等功能。
  • 向量化知识库:提供工具将知识库内容进行向量化处理,并存储到向量数据库(如 Redis)中。在应用运行时,基于语义检索从知识库中召回相关信息,增强应用的知识背景支持。
  • 可视化开发工具:提供 EinoDev 插件,支持可视化界面进行组件选择和编排。开发者可以通过拖拽组件的方式快速构建应用逻辑,并生成对应的代码。

如何运行 Eino

1. 使用组件直接调用

model, _ := openai.NewChatModel(ctx, config) // 创建一个可调用的 LLM 实例
message, _ := model.Generate(ctx, []*Message{
    SystemMessage("you are a helpful assistant."),
    UserMessage("what does the future AI App look like?")})

2. 使用编排创建简单的链

eino_simple_chain

chain, _ := NewChain[map[string]any, *Message]().
           AppendChatTemplate(prompt).
           AppendChatModel(model).
           Compile(ctx)

chain.Invoke(ctx, map[string]any{"query": "what's your name?"})

3. 使用图编排创建更复杂的逻辑

eino_tool_call_graph

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"})

资源


❤️ 如果你也关注 AI 的发展现状,且对 AI 应用开发感兴趣,我会每日分享大模型与 AI 领域的开源项目和应用,提供运行实例和实用教程,帮助你快速上手AI技术!

🥦 微信公众号|搜一搜:蚝油菜花 🥦

相关文章
|
13天前
|
机器学习/深度学习 人工智能 监控
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
DiffuEraser 是阿里通义实验室推出的基于稳定扩散模型的视频修复工具,能够生成丰富的细节并保持时间一致性,适用于电影修复、监控增强等场景。
104 25
DiffuEraser:阿里通义实验室推出的视频修复模型,支持高清修复、时间一致性优化
|
3天前
|
存储 人工智能 缓存
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
DiffSplat 是由北京大学和字节跳动联合推出的一个高效 3D 生成框架,能够在 1-2 秒内从文本提示或单视图图像生成高质量的 3D 高斯点阵,并确保多视图下的一致性。
76 19
DiffSplat:输入文本或图像,2秒内生成3D建模!北大联合字节开源3D建模生成框架
|
12天前
|
机器学习/深度学习 人工智能 算法
《一文读懂!Q-learning状态-动作值函数的直观理解》
Q-learning算法是强化学习领域的核心,广泛应用于机器人控制、游戏AI和自动驾驶等领域。其关键在于理解状态-动作值函数(Q值),即智能体在特定状态下采取某动作的长期价值评估。通过不断与环境交互,智能体根据奖励信号更新Q值,逐步优化行为策略,最终实现累积奖励最大化。掌握Q值计算及其更新机制,是深入理解强化学习的基础,也是设计高效AI系统的关键。
70 25
|
15天前
|
人工智能 测试技术 定位技术
Tarsier2:字节跳动开源专注于图像和视频内容理解的视觉语言大模型
Tarsier2 是字节跳动推出的大规模视觉语言模型,支持高质量视频描述、问答与定位,在多个视频理解任务中表现优异。
94 16
|
18天前
|
Java 程序员 API
菜鸟之路Day05一一正则表达式
### 菜鸟之路Day05——正则表达式 作者:blue 日期:2025.1.23 本文学习自BV17F411T7Ao,黑马程序员。主要介绍了正则表达式的两个作用:校验字符串是否满足规则和在文本中查找内容。详细讲解了字符类、预定义字符、数量词、逻辑词等基础知识,并通过多个Java代码示例演示了正则表达式的应用,包括用户名验证、身份证号验证、文本爬取等实际场景。
122 77
|
19天前
超好看的404提示页面HTML源码
超好看的404提示页面HTML源码
154 77
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
Baichuan-Omni-1.5:百川智能开源全模态理解与生成模型,支持文本、图像、音频和视频的多模态输入和输出
Baichuan-Omni-1.5 是百川智能开源的全模态理解模型,支持文本、图像、音频和视频的多模态输入和输出,显著提升多模态交互体验。
109 22
Baichuan-Omni-1.5:百川智能开源全模态理解与生成模型,支持文本、图像、音频和视频的多模态输入和输出
|
18天前
|
人工智能 自然语言处理 API
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
UI-TARS 是字节跳动推出的新一代原生图形用户界面(GUI)代理模型,支持跨平台自动化交互,具备强大的感知、推理、行动和记忆能力,能够通过自然语言指令完成复杂任务。
278 16
UI-TARS:字节跳动开源专注于多平台 GUI 自动化交互的视觉语言模型
|
13天前
|
人工智能 自然语言处理 Java
Spring AI,搭建个人AI助手
本期主要是实操性内容,聊聊AI大模型,并使用Spring AI搭建属于自己的AI助手、知识库。本期所需的演示源码笔者托管在Gitee上(https://gitee.com/catoncloud/spring-ai-demo),读者朋友可自行查阅。
964 42
Spring AI,搭建个人AI助手
|
19天前
|
存储 开发工具 git
[Git] 深入理解 Git 的客户端与服务器角色
Git 的核心设计理念是分布式,每个仓库既可以是客户端也可以是服务器。通过 GitHub 远程仓库和本地仓库的协作,Git 实现了高效的版本管理和代码协作。GitHub 作为远程裸仓库,存储项目的完整版本历史并支持多客户端协作;本地仓库则通过 `.git` 文件夹独立管理版本历史,可在离线状态下进行提交、回滚等操作,并通过 `git pull` 和 `git push` 与远程仓库同步。这种分布式特性使得 Git 在代码协作中具备强大的灵活性和可靠性。
48 18
[Git] 深入理解 Git 的客户端与服务器角色

热门文章

最新文章