eino — 基于go语言的大模型应用开发框架(一)

简介: Eino 是一个受开源社区优秀LLM应用开发框架(如LangChain和LlamaIndex)启发的Go语言框架,强调简洁性、可扩展性和可靠性。它提供了易于复用的组件、强大的编排框架、简洁明了的API、最佳实践集合及实用的DevOps工具,支持快速构建和部署LLM应用。Eino不仅兼容多种模型库(如OpenAI、Ollama、Ark),还提供详细的官方文档和活跃的社区支持,便于开发者上手使用。

背景介绍

它从开源社区中的诸多优秀 LLM 应用开发框架,如 LangChain 和 LlamaIndex 等获取灵感,同时借鉴前沿研究成果与实际应用,提供了一个强调简洁性、可扩展性、可靠性与有效性,且更符合 Go 语言编程惯例的 LLM 应用开发框架。Eino 提供的价值如下:

  • 精心整理的一系列 组件(component) 抽象与实现,可轻松复用与组合,用于构建 LLM 应用。
  • 强大的 编排(orchestration) 框架,为用户承担繁重的类型检查、流式处理、并发管理、切面注入、选项赋值等工作。
  • 一套精心设计、注重简洁明了的 API。
  • 以集成 流程(flow) 和 示例(example) 形式不断扩充的最佳实践集合。
  • 一套实用 工具(DevOps tools),涵盖从可视化开发与调试到在线追踪与评估的整个开发生命周期。



eino和langchian确实很相似,不同的组件对应不同的功能,组件列表如下所示:

组件名 组件功能
ChatModel 与大模型交互,输入 Message 上下文,得到模型的输出 Message
Tool 与世界交互,根据模型的输出,执行对应的动作
Retriever 获取相关的上下文,让模型的输出基于高质量的事实
ChatTemplate 接收外界输入,转化成预设格式的 prompt 交给模型
Document Loader 加载指定的文本
Document Transformer 按照特定规则转化指定的文本
Indexer 存储文件并建立索引,供后续 Retriever 使用
Embedding Retriever 和 Indexer 的共同依赖,文本转向量,捕获文本语义
Lambda 用户定制 function

ChatModel interface定义了了 StreamBindToolsGenerate 流式传输、Tool模型基本对话

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
}


基本调用可以如下图所示:

image.png

当然,除了openai库之外,官方同样支持ollama和ark库等。所以无论是调用本地运行的模型,还是服务商提供的模型,都可以迅速上手。


初步感受

这个项目我才接触不久,目前第一感觉是和langchain很像,基于chain的模式实现agent和RAG,但是官方也支持基于graph的编排,目前还不懂,继续学(*∩_∩*)


引用资源:

eino官方文档: https://www.cloudwego.io/zh/docs/

eino github链接: https://github.com/cloudwego/einohttps://github.com/cloudwego/eino-ext

ps:官方的飞书群还挺好的,有啥疑问,回答都挺快的,氛围也不错,点赞!

目录
相关文章
|
5月前
|
机器学习/深度学习 人工智能 机器人
黑箱与具身之间的因子框架( Prompt大模型的自我描述 系列五)
本文探讨大模型的“量子式黑箱”困境,指出其虽强大却缺乏可解释性。作者提出“因子框架”,以结构性推理替代概率坍缩,实现因果可控;并重新定义多模态,从“模态互通”走向“因子统一”。最终指向具身智能的真正起点:让AI在逻辑中融合感知,走出语言,迈向真实世界。
204 9
|
4月前
|
消息中间件 缓存 NoSQL
Redis各类数据结构详细介绍及其在Go语言Gin框架下实践应用
这只是利用Go语言和Gin框架与Redis交互最基础部分展示;根据具体业务需求可能需要更复杂查询、事务处理或订阅发布功能实现更多高级特性应用场景。
321 86
|
4月前
|
人工智能 Java 开发者
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
JManus是阿里开源的Java版OpenManus,基于Spring AI Alibaba框架,助力Java开发者便捷应用AI技术。支持多Agent框架、网页配置、MCP协议及PLAN-ACT模式,可集成多模型,适配阿里云百炼平台与本地ollama。提供Docker与源码部署方式,具备无限上下文处理能力,适用于复杂AI场景。当前仍在完善模型配置等功能,欢迎参与开源共建。
1920 58
阿里出手!Java 开发者狂喜!开源 AI Agent 框架 JManus 来了,初次见面就心动~
|
3月前
|
JavaScript 前端开发 Java
【GoWails】Go做桌面应用开发?本篇文章带你上手Wails框架!一步步带你玩明白前后端双端的数据绑定!
wails是一个可以让你使用Go和Web技术编写桌面应用的项目 可以将它看作Go的快并且轻量级的Electron替代品。可以使用Go的功能,并结合现代化UI完成桌面应用程序的开发
759 4
|
3月前
|
开发框架 前端开发 Go
【GoGin】(0)基于Go的WEB开发框架,GO Gin是什么?怎么启动?本文给你答案
Gin:Go语言编写的Web框架,以更好的性能实现类似Martini框架的APInet/http、Beego:开源的高性能Go语言Web框架、Iris:最快的Go语言Web框架,完备的MVC支持。
411 1
|
3月前
|
存储 安全 Java
【Golang】(4)Go里面的指针如何?函数与方法怎么不一样?带你了解Go不同于其他高级语言的语法
结构体可以存储一组不同类型的数据,是一种符合类型。Go抛弃了类与继承,同时也抛弃了构造方法,刻意弱化了面向对象的功能,Go并非是一个传统OOP的语言,但是Go依旧有着OOP的影子,通过结构体和方法也可以模拟出一个类。
243 1
|
4月前
|
人工智能 云栖大会
2025云栖大会大模型应用开发与部署|门票申领
2025云栖大会大模型应用开发与部署门票申领
231 9
|
4月前
|
监控 数据可视化 Linux
LangSmith:大模型应用开发的得力助手
LangSmith 是大模型应用开发的高效助手,提供从调试、追踪到评估的全流程支持。通过可视化追踪树,清晰展现 LLM 应用每一步执行逻辑,提升可观察性;支持提示词优化、实时监控与自动化评估,助力开发者快速定位问题、迭代优化,构建稳定可靠的智能应用。
459 0
LangSmith:大模型应用开发的得力助手
|
3月前
|
缓存 API 调度
70_大模型服务部署技术对比:从框架到推理引擎
在2025年的大模型生态中,高效的服务部署技术已成为连接模型能力与实际应用的关键桥梁。随着大模型参数规模的不断扩大和应用场景的日益复杂,如何在有限的硬件资源下实现高性能、低延迟的推理服务,成为了所有大模型应用开发者面临的核心挑战。