- 博客(137)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 十分钟了解大模型开发Eino框架工具构建源码!
本文解析了CloudWeGo官方文档中构建AI工具节点的三种方法,重点介绍了基于Utils.NewTool的实现方式。通过一个房产经纪人案例,演示了工具构建的关键步骤:1)使用prompt模板定义系统角色;2)创建支持工具调用的模型实例;3)通过NewTool方法构造工具,定义工具信息(名称、描述、参数)和执行函数;4)将工具绑定到模型;5)创建工具节点并构建执行流程图。文中还展示了完整的代码实现,包括工具请求/响应结构体定义和回调函数处理,为开发者提供了构建AI工具节点的详细参考。
2025-08-24 19:35:38
670
原创 源码分析Eino框架工具调用--调用篇
本文详细解析了工具调用流程,分为invoke和stream两种方式。核心步骤包括:1)通过unknownToolHandler和toolArgumentsHandler确认工具;2)根据配置选择串行/并行执行工具;3)引入graph重跑机制回收结果,当工具报错时只重新运行失败工具。代码实现展示了如何通过tuple数据结构查找工具,并处理执行过程中的回调信息。文章特别指出重跑机制的具体实现条件尚待完善,将在后续补充说明。两种调用方式(invoke/stream)在核心逻辑上基本一致,主要差异在于结果处理方式。
2025-08-17 17:49:54
550
原创 golang程序内存泄漏怎么办?看这一篇就够了!!
本文介绍了使用pprof工具排查Go服务内存问题的过程。作者通过获取两个时间点的内存快照(heap1.pb.gz和heap2.pb.gz),使用go tool pprof -diff_base命令对比分析内存变化情况。虽然未发现内存泄漏,但定位到了一处内存频繁分配的热点问题。文章还列举了常用的pprof采集命令(CPU、堆内存、goroutine等)和分析命令,包括top查看内存变化、-inuse_space分析使用中内存以及可视化查看方法。该案例展示了pprof在性能优化中的实用价值。
2025-11-16 17:53:20
117
原创 golang eino框架从零开始快速搭建一个出行Agent(一)
本文介绍如何利用eino框架快速构建一个基于百度千帆平台的简易出行agent,用于解决同学聚会时选择合适的中间地点的问题。通过调用百度地图MCP工具和支持tool call的模型,作者实现了React模式的流程,包括MCP初始化、工具获取和主函数实现。文章提供了完整的代码示例,包含流式调用和非流式调用两种方式,并指出后续将继续优化该agent以更好地利用eino框架构建智能体。核心是借助eino的react框架快速集成模型和工具。
2025-11-02 20:50:52
369
原创 一文搞懂Eino中模型和工具如何密切配合?
本文通过Eino框架的官方Demo,详细演示了模型与工具的协作流程。示例中首先创建了包含系统提示的ChatTemplate节点,然后初始化ChatModel节点并绑定API密钥,接着定义了一个用户信息查询工具userInfoTool。通过构建由模板节点、模型节点和工具节点组成的工作流图(Graph),展示了如何将用户查询("我叫zhangsan...")传递给模型处理,并调用工具获取用户信息,最终生成房产推荐。整个过程体现了Eino框架中模型调用、工具执行和提示工程的整合方式,为开发者提
2025-10-26 22:02:20
289
1
原创 一文读懂大模型开发框架Eino的Prompt构造大法
本文介绍了Eino框架中的ChatTemplate组件,该组件用于将变量填充到消息模板中生成标准化的LLM交互消息。文章分析了ChatTemplate接口的定义和作用,通过官方示例展示了如何构造Prompt模板并使用变量填充。重点解析了DefaultChatTemplate.Format方法的实现逻辑,包括回调函数处理和模板格式化过程,指出其本质是通过内部模板的Format方法拼接最终消息。最后比较了不同模板格式化方式的差异,特别说明了历史消息追加的实现原理。该组件在单独使用和编排使用时主要区别在于变量来源
2025-08-28 00:19:20
832
原创 源码分析Eino框架工具调用--创建篇
本文分析了Eino框架中Tool Node组件的底层实现机制,重点探讨了工具调用过程的核心实现。文章指出调用工具需要名称、描述、参数说明和实现方式(本地或MCP),并详细解析了Tool Node的创建过程,包括info方法检测、invoke/stream方法实现、元数据打包等步骤。通过代码示例展示了NewToolNode函数如何创建ToolNode结构体,该结构体包含核心的toolsTuple、未知工具处理器等关键组件。toolsTuple通过索引映射和切片存储工具元信息及可执行包,实现了根据工具名快速查找
2025-08-11 20:10:27
354
原创 Benchmark优化小计
参考1:https://www.cnblogs.com/yahuian/p/go-benchmark.html#%E5%BF%AB%E9%80%9F%E5%BC%80%E5%A7%8B参考2:https://blog.youkuaiyun.com/YouMing_Li/article/details/135888953。
2024-04-25 16:58:39
300
原创 记一个有趣的bug:panic执行时机
msg在算子不报错误的情况下不被赋值,所以这里不会打印错误日志,后面收拢了该模块的错误码,导致msg在retuen的时候被赋值,defer执行时检测到msg不为空所以出了一条错误信息。其实这并不是一个Bug,只是在收拢一个后端模块的错误日志和错误码时发现在请求成功时始终会多一条错误日志。关于defer执行时间和为什么会出现这个问题可以参考下面。
2024-01-29 19:01:45
304
原创 vscode,go get后import爆红却可以运行
问题描述:重启了一下vscode之后发现之前通过go get下载的第三方库在import时飘红,但是可以运行飘红发现这些包在pkg/mod目录下,虽然可以运行但是强迫症害死人终于找到了同样的问题并成功解决解法这里我直接通过vscode进入helloworld01这个文件夹,飘红消失,并可以正常运行...
2022-05-02 18:37:06
2280
原创 设计模式汇总(未完待续)【Go基础】
package mainimport "fmt"type Fruit interface { grant() pick()}type Apple struct { name string}func (a *Apple) grant() { fmt.Println("种植", a.name, "苹果")}func (a *Apple) pick() { fmt.Println("采摘", a.name, "苹果")}type Orange struct { name
2022-05-02 17:23:58
426
原创 方法[Go基础]
文章目录方法普通写法值接收者和指针接收者类似手动实现深拷贝问题举例1解决方法方法调用一般调用方法值方法表达式方法个人理解:函数只是为了实现某一功能,而方法是针对某一数据结构实现特定的方法Go语言的类型方法本质上就是一个函数方法的接收者类型并非一定要是struct类型,type定义的类型别名,slice,mao,channel,func都可以struct和方法不一定要在一个文件,但要在一个包中//类型方法接收者是值类型func (t TypeName) 方法名(参数列表) (返回参数) {
2022-04-04 12:57:43
633
原创 类型转换【Go基础】
文章目录问题引出未命名类型命名类型注意点问题引出先看一段代码package mainimport "fmt"type Map map[string]stringtype iMap Mapfunc main() { mp := make(map[string]string, 10) var ma Map = mp fmt.Printf("ma: %v\n", ma) //下面的语句编译会报错 var im iMap = ma fmt.Printf("im: %v\n", im)
2022-03-30 19:38:49
499
原创 变量和常量【Go基础】
文章目录变量标准声明批量声明短变量声明匿名变量变量赋值常量iota常见示例变量标准声明var 变量名 变量类型var studentName string变量声明可以写在函数外,但是全局变量不能和函数体内的局部变量重名,并且声明的变量必须使用(全局变量除外),变量声明采用小驼峰命名批量声明var ( name strig age int)短变量声明只能写在函数内部name := "messi"匿名变量匿名变量用_表示,匿名变量不会被分配内存,也不占用命名空间,例
2022-03-18 23:27:56
525
原创 Go:dlv dap --check-go-version=false的一种解决方案
问题描述:隔了很久,当我再次打开vscode去写go的代码时,一运行,报的错误如标题所示,此时程序无法运行,也无法debug,通过如下命令解决之go install github.com/go-delve/delve/cmd/dlv@latest希望对大家有帮助...
2022-03-11 10:15:44
2409
原创 ubuntu根目录空间爆满的排查方法
ubuntu根目录空间爆满的排查方法起因排查方法起因系统登陆之后提示我说,根目录可用空间过少,我查看之后发现,装系统时分了20G,现在只有不到1G可用,当时人就麻了排查方法确定那个文件首先进入根目录中,输入命令sudo du --max-depth=1 -h,之后看一下哪个文件的大小最离谱,我这边是var目录,于是 cd var再次输入上面的du 命令,发现是lib目录比较大进入lib,发现dockr目录占用了特别大的空间,再次进入之发现是volumes目录占用了8g空间,百度删除之相关
2021-11-15 10:16:53
3794
Elecard StreamEye Tools1.zip
2020-12-04
java查询数据库 数据库可以查到数据,但resultSet.next 一直为false
2017-11-05
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅