自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

巴塞罗那的风的专栏

欢迎大家批评指教

  • 博客(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

原创 Eino框架快速搭建出行agent(二)引入12306 mcp

如何让AI学会结合票务信息制定旅行攻略?Eino框架快速接入mcp带你一键搞定

2025-11-09 21:59:24 319

原创 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框架的模型调用方法

Eino框架如何使用chatModel调用模型

2025-10-19 23:24:00 677

原创 一文读懂大模型开发框架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

原创 golang设置http代理

golang设置http代理,访问duckduckgo

2025-07-27 19:19:16 450

原创 如何手搓一个查询天气的mcp server

从0开始手搓一个查询天气的mcp server

2025-05-28 23:23:59 446

原创 roo code调用手搓mcp server

roo code调用手搓mcp server的第一步

2025-05-27 23:42:37 563

原创 源码角度分析 sync.map

什么情况适合使用sync.map?

2025-04-29 15:20:59 439

原创 golang关于slice map函数传参的小问题

golang 切片 map的函数值传递问题

2024-09-02 20:57:49 853

原创 golang sync.Map真的全场景适用吗?

工作中遇到的map并发读写问题的解决思路

2024-06-05 17:33:15 582

原创 once.Do如何保证只执行一次

【代码】once.Do如何保证只执行一次(勿喷。

2024-05-16 12:49:59 197

原创 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

原创 pprof火焰图排查问题小计

golang pprof排查问题记录

2024-04-22 19:24:56 618 1

原创 记一个有趣的bug:panic执行时机

msg在算子不报错误的情况下不被赋值,所以这里不会打印错误日志,后面收拢了该模块的错误码,导致msg在retuen的时候被赋值,defer执行时检测到msg不为空所以出了一条错误信息。其实这并不是一个Bug,只是在收拢一个后端模块的错误日志和错误码时发现在请求成功时始终会多一条错误日志。关于defer执行时间和为什么会出现这个问题可以参考下面。

2024-01-29 19:01:45 304

原创 关于理解反射的记录

记录自己学习反射的过程,起步阶段

2023-12-20 14:58:02 432

原创 记一个有趣的bug:修改结构体中的切片不生效

记工作中的有趣bug

2023-08-30 16:32:52 217

原创 ptorobuffer go生成pb.go文件报错

go生成pb.go文件报错

2022-06-07 10:42:10 498

原创 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

原创 接口 interface

接口

2022-03-24 15:54:37 524

原创 结构体【Go基础】

结构体(居然没有类!!! 那对象去哪找!!!!)

2022-03-21 20:35:27 993

原创 函数,闭包,defer

函数,闭包,defer

2022-03-21 16:49:28 637

原创 指针,make,new,map

指针,make,newmap后续会补充

2022-03-21 16:47:45 301

原创 切片 []type,形似C++ vector【Go基础】

slice[]type,底层是数组

2022-03-21 16:46:37 1011

原创 数组 [length] type

数组,长度不可变长度和变量类型都属于数组的属性

2022-03-21 16:44:50 309

原创 流程控制【Go基础】

if,for,switch

2022-03-21 16:43:28 395

原创 字符串【Go基础】

Go中的string,简单总结,后续会补充

2022-03-21 16:34:36 381

原创 基础数据类型和占位符 【Go基础】

基础数据类型和占位符的 简单总结

2022-03-21 16:32:46 939

原创 变量和常量【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

原创 Mac M1芯片,VSCode配置Go开发环境及遇到的问题

本文仅用于记录在自己的Mac(M1芯片)上配置Go开发环境的过程

2021-12-08 16:28:24 1429

原创 编译swarmkit记录以及遇到的问题

go get超时,go get警告,go:cannot find main module原因

2021-11-23 20:43:55 525 2

原创 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

rabbitmq-c vs2019工程

关于vs2019 rabbitmq-c工程,大家不用自己编译源码,直接下载导入vs,结合我的博客和rabbitmq-c源码即可使用

2020-07-01

Elecard StreamEye Tools1.zip

ESEye+ Elecard Stream Analyzer +VideoQE+BAnalyzer+pyuv 亲测可用,内附使用说明

2020-12-04

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除