Eino初学

前言

此时是已经初步学习了go中的各个主流框架(其实也就gozero、grpc),主要是为了更加深入的了解Sim,我还需学习为go量身打造的agent框架—-Eino,可以粗糙的理解为把langchain工程落地的go版本

此博客搭配笔记https://mirage-thought-d06.notion.site/Eino-21d747825dae807ca9b3ff601c655f4a食用更佳

这里放一幅图,现在我还看的不是很通透,也许后面回顾时再来看就通透了。

image-20260704172456731

React Agent

React(Reasoning+Acting)并不是一个框架,而是一种agent设计思想,也就上让agent不断思考并调用工具再思考,直到完成最终目标的过程。

//接下来介绍构建agent的各个组件

ChatModel

也就是基础的大模型api,能够返回回复、调整参数、多模态交互

关于ChatModel的使用,和我当时python调用讯飞差不多:

准备好.env

引入库,然后实例化模型,传参传入config,设置好返回模式

同时定义好message结构体,也就是用户输入,定义还系统提示此,然后把该结构体当作input参数传入generate函数,得到返回,如果是流式返回,还得for chunk啥的

ChatTemplate

也就是先写一个消息模板,然后后面就只需要传入参数,例如{role}、{task},就能够嵌入模板形成一份完整的提示词

//然后是RAG的一些介绍,由于之前学过,这里不做赘述,接下来讲编排相关内容

Chain

编排分为链式编排和图式编排,链式是图式的一种

1
2
3
4
5
6
7
8
9
10
11
12
13
//注册链条
chain := compose.NewChain[string, *schema.Message]()//这里泛型用[]
//连接起各个节点
chain.AppendLambda(lambda).AppendChatModel(model)
r, err := chain.Compile(ctx)
if err != nil {
panic(err)
}
answer, err := r.Invoke(ctx, "你好,请告诉我你的名字")
if err != nil {
panic(err)
}
fmt.Println(answer.Content)

以上是一个极简链式编排,我还能往里面加工具调用节点,也就是需要我先写好工具函数,定义好工具描述,并注入大模型的可调用工具列表中,然后当我输入一段话时,大模型会思考它是否需要调用工具,要的话就会提取我输入中的参数作为工具函数的参数传入工具函数,然后返回结果再发送给大模型,给出回答。所以可以得到这个过程中大模型是思考了两下的。

Graph

图可以添加更多的东西,与链的初步区别就是加入了分支,我可以创建多个分支节点,然后用一个分支控制节点来决定流程要往哪个分支走,类似于多个if else。代码流程是需要在创建好节点后把节点加入图,然后再把节点加入分支,才算组成图完毕,我上面所说的这些是不加入大模型的情况,后面还能加入大模型、状态、回调,这些就是 graph编排的高级特性了。

state

主要用于记忆功能,让各节点共享state

callback

让经过每个节点时可以做一次例如打印当前节点名称、输入输出的功能。实时监控的感觉

graph

同样的,图也可以作为一个节点嵌入另一个图中

开发工具

vscode插件eino dev是一个可视化的agent工作流编排工具:

image-20260712143608639

编写好后可以生成相应的代码;而且也支持很多debug功能

CozeLoop

这是个字节推出的适配eino的低代码agent开发平台,具体得用用才知道能干啥,总之看起来功能也很多很详细。

Icon
致谢名单
本作品由 Hafsun 于 2026-07-04 17:16:13 发布
作品地址:Eino初学
除特别声明外,本站作品均采用 CC BY-NC-SA 4.0 许可协议,转载请注明来自 欢迎回家
Logo
上一篇关于效率下一篇八股探索