自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

巴塞罗那的风的专栏

欢迎大家批评指教

  • 博客(147)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 十分钟了解大模型开发Eino框架工具构建源码!

本文解析了CloudWeGo官方文档中构建AI工具节点的三种方法,重点介绍了基于Utils.NewTool的实现方式。通过一个房产经纪人案例,演示了工具构建的关键步骤:1)使用prompt模板定义系统角色;2)创建支持工具调用的模型实例;3)通过NewTool方法构造工具,定义工具信息(名称、描述、参数)和执行函数;4)将工具绑定到模型;5)创建工具节点并构建执行流程图。文中还展示了完整的代码实现,包括工具请求/响应结构体定义和回调函数处理,为开发者提供了构建AI工具节点的详细参考。

2025-08-24 19:35:38 700

原创 源码分析Eino框架工具调用--调用篇

本文详细解析了工具调用流程,分为invoke和stream两种方式。核心步骤包括:1)通过unknownToolHandler和toolArgumentsHandler确认工具;2)根据配置选择串行/并行执行工具;3)引入graph重跑机制回收结果,当工具报错时只重新运行失败工具。代码实现展示了如何通过tuple数据结构查找工具,并处理执行过程中的回调信息。文章特别指出重跑机制的具体实现条件尚待完善,将在后续补充说明。两种调用方式(invoke/stream)在核心逻辑上基本一致,主要差异在于结果处理方式。

2025-08-17 17:49:54 582

原创 ReAct架构实战:让智能体“边思考边行动”的实战范式

本文介绍了ReAct架构,一种解决复杂推理问题的动态交互范式。与传统的静态规划不同,ReAct通过"思考-行动-观察"的循环机制,使智能体能够基于环境反馈实时调整策略。文章详细解析了ReAct的工作流程,包括高层图示和代码实现,展示了其如何通过提示词工程、输出解析和工具执行等关键环节实现动态推理。ReAct特别适用于多跳问答、交互式环境导航和需要验证的研究任务,具有环境适应性强和推理过程透明化的优势。该架构代表了从静态规划到动态交互的重要范式转变,为复杂问题的探索性求解提供了新思路。

2026-01-04 09:18:35 908

原创 golang协程泄漏排查实战

摘要 线上实例出现异常CPU高占用问题,排查发现是WebSocket长连接处理协程未正确退出导致的。通过pprof分析发现大量时间消耗在协程调度上,进一步检查存活协程发现业务处理协程未随请求结束而终止。原方案依赖channel关闭通知协程退出存在缺陷,改进为使用context进行协程生命周期管理,在WebSocket关闭时触发cancel。优化后CPU利用率显著下降,问题得到解决。

2025-12-31 23:37:56 353

原创 多智能体系统:当AI学会“团队作战”的艺术

本文探讨了多智能体系统(MAS)作为AI协作的新范式。MAS通过组织多个专业化智能体分工协作,实现超越单一模型的能力。文章分析了MAS的四步工作流和典型角色分工,阐述了其在专业化、模块化和并行处理方面的优势,同时也指出协调开销、成本增加和团队内耗等挑战。重点介绍了MAS在软件开发、创意生成和研究报告等场景的应用价值,展望了动态组队、协作规则进化和人机混合团队等未来方向。文章认为MAS代表从追求强大个体到构建智慧集体的范式转变,是应对复杂世界的必然选择。

2025-12-29 23:06:36 691

原创 Agent实战:工具使用架构——从底层拆解到工程落地的核心挑战

本文探讨了大型语言模型(LLM)通过工具使用架构突破静态知识局限的核心范式。文章指出,传统LLM受限于训练数据,而工具使用架构让LLM成为认知核心与决策调度器,实现"大脑"与"手脚"协同。详细拆解了该架构的三阶段工作流:决策阶段的精准判别、行动阶段的结构化调用、合成阶段的信息整合。分析表明,该架构在增强事实性、扩展能力方面优势显著,可应用于实时信息、企业数据交互等场景,但也面临系统复杂性、工具依赖性等挑战。文章认为这是构建实用化AI智能体的必由之路,但需要精细设计系统

2025-12-25 00:10:37 541

原创 出行规划新范式:让AI智能体成为你的全能旅行管家

摘要: 本文介绍了如何利用Eino框架构建智能出行管家,通过集成多工具协同能力,实现自然语言指令下的全流程出行规划。传统出行规划存在信息孤岛、决策依赖等问题,而该方案通过动态连接12306、百度地图等MCP服务,将车次查询、路线计算、餐饮推荐等任务自动化串联。实测显示,用户只需提出“午饭前抵达天津站附近”等复合需求,智能体即可生成包含车次、时间、餐饮的完整方案。Eino框架的灵活架构支持工具动态扩展,未来可结合实时数据与用户偏好,实现更个性化的智能规划服务,重塑出行体验。

2025-12-22 23:24:28 444

原创 从蓝图到执行:智能体中的“战略家思维

规划架构智能体采用"先谋定而后动"的策略,将复杂任务预先分解为有序子任务序列,与即时反应的ReAct架构形成鲜明对比。该架构适用于结构化明确的多步骤任务,具有全局可控、执行高效等优势,但存在环境适应性差、缺乏灵活性等局限。规划智能体代表系统化的问题解决思维,常与ReAct结合形成混合模式以取长补短,是处理确定性任务的有力工具。其核心价值在于将人类缜密构思的智慧编码化,实现复杂任务的高效执行。

2025-12-21 23:10:13 724

原创 ReAct:当AI学会“三思而后行”的动态推理架构

ReAct代表Reason(推理)与Act(行动)。这是一种让智能体在“推理步骤”和“行动步骤”之间动态交替的架构模式。它不同于一次性规划,而是允许智能体基于新获取的信息实时调整策略,形成一个持续的“思考 -> 行动 -> 观察 -> 再思考”循环。ReAct架构的核心价值,在于它模拟了人类解决问题的自然过程——我们通常不是瞬间得出答案,而是通过持续的思考、尝试、学习和调整来找到解决方案。它标志着AI从“知晓答案”向“知晓如何寻找答案”的深刻转变。

2025-12-19 22:08:06 855

原创 MCP、Agent与RAG:现代AI应用的三位一体架构

摘要(148字): 现代AI应用架构由RAG、Agent和MCP三大技术构成协同体系。RAG通过检索外部知识增强模型回答的实时性与准确性;Agent赋予模型规划执行能力,实现从问答到行动的跨越;MCP则标准化模型与工具间的连接协议。三者协同工作流程表现为:Agent分解任务→RAG检索上下文→MCP调用工具执行→Agent整合输出。该架构解决了知识更新、执行力和工具集成三大挑战,推动AI向专业化、自主化发展,在科研助手、决策支持等场景展现1+1+1>3的协同效应,成为下一代智能系统的核心范式。

2025-12-18 23:14:23 810

原创 经典Agent架构实战之工具使用 (Tool Use)

本文介绍了工具使用架构在大型语言模型(LLM)中的应用。该架构通过调用外部API或函数,克服了LLM知识的静态局限性,使其能够获取实时信息。文章详细阐述了工具使用架构的工作流程:接收查询、决策是否需要工具、执行工具调用、整合结果并生成最终回答。与React架构相比,工具使用架构适合一次性操作或简单工作流。作者还提供了Go语言实现的核心代码,包括prompt模板和编排逻辑,并指出了开发过程中需要注意的关键点,如prehandler的作用和工具绑定的正确方式。完整代码已开源在GitHub上。

2025-12-14 14:50:39 583

原创 经典Agent架构实战之反思模型(Reflection)

本文介绍了如何使用Golang实现反射式Agent架构,该架构通过生成-批评-完善的迭代过程提升LLM输出的质量。文章展示了基于Eino框架的核心实现代码,包括状态管理、流程编排和Prompt模板设计。该架构适用于代码生成、复杂总结和内容创作等场景,能显著提高输出结果的准确性和可靠性。

2025-12-07 23:45:13 381

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

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

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

2025-11-09 21:59:24 347

原创 golang eino框架从零开始快速搭建一个出行Agent(一)

本文介绍如何利用eino框架快速构建一个基于百度千帆平台的简易出行agent,用于解决同学聚会时选择合适的中间地点的问题。通过调用百度地图MCP工具和支持tool call的模型,作者实现了React模式的流程,包括MCP初始化、工具获取和主函数实现。文章提供了完整的代码示例,包含流式调用和非流式调用两种方式,并指出后续将继续优化该agent以更好地利用eino框架构建智能体。核心是借助eino的react框架快速集成模型和工具。

2025-11-02 20:50:52 426

原创 一文搞懂Eino中模型和工具如何密切配合?

本文通过Eino框架的官方Demo,详细演示了模型与工具的协作流程。示例中首先创建了包含系统提示的ChatTemplate节点,然后初始化ChatModel节点并绑定API密钥,接着定义了一个用户信息查询工具userInfoTool。通过构建由模板节点、模型节点和工具节点组成的工作流图(Graph),展示了如何将用户查询("我叫zhangsan...")传递给模型处理,并调用工具获取用户信息,最终生成房产推荐。整个过程体现了Eino框架中模型调用、工具执行和提示工程的整合方式,为开发者提

2025-10-26 22:02:20 316 1

原创 一文学会大模型开发Eino框架的模型调用方法

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

2025-10-19 23:24:00 722

原创 一文读懂大模型开发框架Eino的Prompt构造大法

本文介绍了Eino框架中的ChatTemplate组件,该组件用于将变量填充到消息模板中生成标准化的LLM交互消息。文章分析了ChatTemplate接口的定义和作用,通过官方示例展示了如何构造Prompt模板并使用变量填充。重点解析了DefaultChatTemplate.Format方法的实现逻辑,包括回调函数处理和模板格式化过程,指出其本质是通过内部模板的Format方法拼接最终消息。最后比较了不同模板格式化方式的差异,特别说明了历史消息追加的实现原理。该组件在单独使用和编排使用时主要区别在于变量来源

2025-08-28 00:19:20 869

原创 源码分析Eino框架工具调用--创建篇

本文分析了Eino框架中Tool Node组件的底层实现机制,重点探讨了工具调用过程的核心实现。文章指出调用工具需要名称、描述、参数说明和实现方式(本地或MCP),并详细解析了Tool Node的创建过程,包括info方法检测、invoke/stream方法实现、元数据打包等步骤。通过代码示例展示了NewToolNode函数如何创建ToolNode结构体,该结构体包含核心的toolsTuple、未知工具处理器等关键组件。toolsTuple通过索引映射和切片存储工具元信息及可执行包,实现了根据工具名快速查找

2025-08-11 20:10:27 379

原创 golang设置http代理

golang设置http代理,访问duckduckgo

2025-07-27 19:19:16 490

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

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

2025-05-28 23:23:59 467

原创 roo code调用手搓mcp server

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

2025-05-27 23:42:37 617

原创 源码角度分析 sync.map

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

2025-04-29 15:20:59 448

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

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

2024-09-02 20:57:49 862

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

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

2024-06-05 17:33:15 613

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

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

2024-05-16 12:49:59 207

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

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

golang pprof排查问题记录

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

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

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

2024-01-29 19:01:45 310

原创 关于理解反射的记录

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

2023-12-20 14:58:02 442

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

记工作中的有趣bug

2023-08-30 16:32:52 224

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

go生成pb.go文件报错

2022-06-07 10:42:10 504

原创 vscode,go get后import爆红却可以运行

问题描述:重启了一下vscode之后发现之前通过go get下载的第三方库在import时飘红,但是可以运行飘红发现这些包在pkg/mod目录下,虽然可以运行但是强迫症害死人终于找到了同样的问题并成功解决解法这里我直接通过vscode进入helloworld01这个文件夹,飘红消失,并可以正常运行...

2022-05-02 18:37:06 2293

原创 设计模式汇总(未完待续)【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 432

原创 方法[Go基础]

文章目录方法普通写法值接收者和指针接收者类似手动实现深拷贝问题举例1解决方法方法调用一般调用方法值方法表达式方法个人理解:函数只是为了实现某一功能,而方法是针对某一数据结构实现特定的方法Go语言的类型方法本质上就是一个函数方法的接收者类型并非一定要是struct类型,type定义的类型别名,slice,mao,channel,func都可以struct和方法不一定要在一个文件,但要在一个包中//类型方法接收者是值类型func (t TypeName) 方法名(参数列表) (返回参数) {

2022-04-04 12:57:43 647

原创 类型转换【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 507

原创 接口 interface

接口

2022-03-24 15:54:37 531

原创 结构体【Go基础】

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

2022-03-21 20:35:27 1000

原创 函数,闭包,defer

函数,闭包,defer

2022-03-21 16:49:28 653

原创 指针,make,new,map

指针,make,newmap后续会补充

2022-03-21 16:47:45 306

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关注的人

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