功能介绍
评论列表

详情介绍

Eino的核心理念是“编排优先”。它认为,AI应用的本质是围绕大模型的信息流,而信息流由可枚举的组件类型和它们之间的拓扑结构构成。基于此,Eino提供了一套稳定内核:

  1. 组件抽象:定义了8种核心组件类型(如ChatModel、Tool、Retriever、ChatTemplate等),每种都有清晰的输入输出、流式范式和Option定义。

  2. 编排能力:提供了Chain、Graph、Workflow三套API,分别应对从简单线性链到复杂有向图,再到字段级数据映射的不同业务场景。

  3. 流处理:内置强大的流式数据处理引擎,自动处理流的复制、合并、拼接和装箱,让开发者无需关心底层流式实现的复杂性。

  4. 横切面:通过Callback机制,支持在组件执行前后注入日志、监控、追踪等能力。

  5. 强类型保障:利用Go的编译时类型检查,在Compile阶段就确保上下游节点类型对齐,极大提升了代码的可靠性和可维护性。

Eino已成为字节跳动内部大模型应用的优选全代码开发框架,已在包括豆包、抖音、扣子等多条业务线、数百个服务中接入使用。

官网入口地址

下载地址

  • Eino是一个Go语言库,通过go get命令安装。核心库:go get github.com/cloudwego/eino。特定组件实现(如OpenAI、Ollama)需安装对应扩展包,:go get github.com/cloudwego/eino-ext/components/model/openai

功能介绍

Eino的功能覆盖了LLM应用开发的完整生命周期,从基础组件到复杂编排,再到开发工具链:

  1. 丰富的组件抽象与实现

    • ChatModel:与大模型交互的核心接口,支持Generate(完整响应)和Stream(流式响应),并已集成OpenAI、Ollama、Ark(豆包)、Claude、Gemini等多种实现。

    • Tool:让模型能够调用外部工具(如搜索引擎、内部API)与世界交互。

    • Retriever:从向量数据库(如ElasticSearch、Volc VikingDB)或知识库中检索相关上下文,实现RAG。

    • ChatTemplate:强大的提示词模板引擎,支持FStringJinja2GoTemplate三种格式,并能通过MessagesPlaceholder插入对话历史。

    • Document Loader/Transformer:用于加载和转换不同格式的文档(如WebURL、S3、HTMLSplitter)。

    • Indexer/Embedding:用于构建和更新知识库索引。

    • Lambda:允许开发者将任意自定义函数封装成符合Eino规范的组件,具备的流式处理能力,极大提升了框架的扩展性。

  2. 强大的编排能力

    • Chain:最简单的链式编排,适用于数据单向流动、无复杂分支的场景。

    • Graph:通用的有向图编排,支持节点、边、分支,可实现包含循环(如ReAct Agent)的复杂逻辑。Eino在Compile时执行严格的类型检查,确保上下游类型对齐。

    • Workflow:更高级的编排方式,支持在字段级别进行数据映射,灵活处理结构化数据在节点间的流转。

    • 预置Flow:提供开箱即用的高级编排产物,如flow/agent/react包中完整实现的ReAct Agent。

  3. 完整的流式处理

    • 自动处理不同流式范式(Invoke/Stream/Collect/Transform)之间的转换。,当下游节点只接收非流输入时,Eino会自动拼接上游的流式数据。

    • 智能管理流的复制(扇出)和合并(扇入)。

  4. 可观测性与横切面

    • Callbacks:提供OnStartOnEndOnError等钩子,方便开发者注入统一的日志、监控、链路追踪逻辑。

    • Option分配:支持全局、按组件类型、按节点名称精细地传递和控制执行参数(如temperature)。

  5. 开发工具链

    • Eino Dev:提供了可视化的开发与调试工具(如GoLand/VS Code插件),支持编排的可视化查看和调试。

    • Eino Examples:丰富的示例代码,帮助开发者快速上手。

应用场景

  • 构建企业级RAG问答系统:利用Document Loader、Retriever和ChatModel,搭建能够基于企业内部知识库回答问题的智能客服或员工助手。

  • 开发复杂的AI Agent:使用Graph编排和多模型支持,创建能够自主规划、调用工具、自我反思的智能体,如“计划-执行”多智能体系统。

  • 智能助手与Copilot:结合ChatTemplate和ChatModel,快速实现类似“程序员鼓励师”等定制化角色扮演应用。

  • 工作流自动化:串联LLM与传统业务API,实现如自动处理邮件、生成报告、数据清洗等办公自动化流程。

  • 多模型对比与融合:利用Parallel节点或Graph分支,轻松实现同一输入在不同模型上的并行处理,对比结果或进行模型集成。

定价与应用示例

  • 定价模式:Eino是免费且开源的。核心代码库及官方扩展均在GitHub上以Apache 2.0等宽松许可证开源,用户可以免费用于任何商业或非商业项目。运行Eino应用所需的成本仅来自所调用的外部服务(如大模型API、数据库)或自身硬件资源。

  • 应用示例:一家科技公司希望为内部开发团队打造一个“智能知识库助手”,能够回答关于公司技术栈、项目规范和历史决策的问题。后端工程师选择使用Eino进行开发。他通过Document Loader加载了Confluence上的所有技术文档和GitHub Wiki。接着,使用Embedding组件和Indexer将这些文档向量化存入Redis向量数据库。然后,他利用Eino的Graph编排能力,构建了一个ReAct Agent:该Agent接收开发者的问题,先通过Retriever从向量库检索相关信息,再将与问题一起通过ChatTemplate组装成提示词,发给Ark上的豆包大模型。模型可以自主判断是否需要调用额外的Tool(如执行一个内部代码搜索工具)来完善答案。整个过程在Compile时通过了类型检查,并通过Callback集成了公司的监控系统。最终,这个智能助手成功上线,大幅提升了研发团队查找信息的效率。

Eino常见问题

本文标签