Hexo

Hexo

eino-chap3-store
Created2026-04-07
“框架层概念” vs “业务层概念”一句话总结 框架层概念 = Eino 框架已经帮你写好的代码和抽象,你直接 import 来用 业务层概念 = 你自己写的(或示例项目帮你写的)代码,用来满足你的具体业务需求 用一个生活类比来理解想象你在用微信开发框架做一个聊天应用: 框架层(微信SDK提供) 业务层(你自己写) 谁提供的 微信团队 你(开发者) 举例 发送消息API、接收消息API 聊天记录保存到数据库、用户管理 能不能换 不能换(框架就是这样设计的) 随便换(用MySQL还是Redis你自己决定) 所有人都一样吗 是的,所有开发者用同一套API 不是,每个项目的业务逻辑都不同 在 Eino 项目中的具体对应框架层概念(Eino 框架提供的)这些是你 import 进来就能用的,所有使用 Eino 的项目都一样: 1234import ( "github.com/cloudwego/eino/adk" // 框架层 "github.com/cloudwego/eino/...
eino-chap2-chatmodelagent
Created2026-04-07
Ch02 main.go 逐段详解整体架构总览先用一张图看清整个程序的结构: 123456789101112graph TD A[main 函数] --> B[解析命令行参数] B --> C[创建 ChatModel] C --> D[创建 ChatModelAgent] D --> E[创建 Runner] E --> F[进入多轮对话循环] F --> G[读取用户输入] G --> H[追加到 history] H --> I[runner.Run 执行] I --> J[printAndCollectAssistantFromEvents<br/>消费事件流并打印] J --> K[追加 assistant 回复到 history] K --> G 第一部分:导入包(第 18~32 行)123456789101112131415import ( "bufio" "context" &q...
eino-chap1
Created2026-04-07
12var instruction string flag.StringVar(&instruction, "instruction", "You are a helpful assistant.", "") string 确实是不可变的,但变量可以被重新赋值这是两个不同的概念: 1. string 值不可变 — 你不能修改一个 string 内部的某个字节,比如不能做 s[0] = 'A',这在 Go 中会编译报错。 2. string 变量可以重新赋值 — 变量 instruction 只是一个”盒子”,你随时可以往里放一个新的 string 值。 123s := "hello&...
go-基于指针对象的方法-map深度理解
Created2026-04-06
代码如下,请分析为何值接收器方法可以直接改变原变量? 123456789101112131415161718package url// Values maps a string key to a list of values.type Values map[string][]string// Get returns the first value associated with the given key,// or "" if there are none.func (v Values) Get(key string) string { if vs := v[key]; len(vs) > 0 { return vs[0] } return ""}// Add adds the value to key.// It appends to any existing values associated with key.func (v Values) Add(key...
go-基于指针对象的方法-编译器隐式取地址
Created2026-04-06
⏺ Go 编译器隐式取地址的完整细节 场景回顾 ScaleBy 是指针接收器方法,按理说只有 *Point 才能调用: 1234func (p *Point) ScaleBy(factor float64) { p.X *= factor p.Y *= factor} 但你可以这样写: 12p := Point{1, 2}p.ScaleBy(2) // p 是 Point,不是 *Point,居然能调用? 这是因为编译器帮你做了隐式转换,实际执行的是: 1(&p).ScaleBy(2) // 编译器自动取地址 隐式转换其实有两个方向 方向一:值调用指针方法 → 自动取地址 & 12345p := Point&#...
go-方法声明-方法定义和函数定义对比
Created2026-04-06
包级别的函数(Package-level Function) 就是普通的、不属于任何类型的函数,定义在包内,通过 包名.函数名 调用: 123456789package geometry // 这就是包级别的函数func Distance(p, q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y)}// 调用时需要带包名geometry.Distance(p, q) 接收器(Receiver) 在函数名前面多加一个参数,这个函数就变成了该类型的方法,这个参数就叫接收器: 1234567// ┌── 接收器 ──┐func (p Point) Distance(q Point) float64 { return math.Hypot(q.X-p.X, q.Y-p.Y)}// 调用时是...
go-panic代码分析
Created2026-04-06
go 代码如下: 1234567891011121314151617181920func main() { ret := practice() fmt.Println(ret) } func practice() (result int) { defer...
go-defer
Created2026-04-05
Go 语言:defer 核心知识点总结 🔹 知识点 1:defer 是什么?defer 让一个函数调用延迟到当前函数返回时才执行,无论是正常返回还是 panic: 123456789func readFile(filename string) { f, err := os.Open(filename) if err != nil { return } defer f.Close() // ← 不管从哪里 return,都会执行 f.Close() // ... 处理文件(可能有多个 return)} 🎯 核心价值 场景 不用 defer 用 defer 多出口函数 每个 return 前都要手动 Close(),易遗漏 只需写一次,自动跟随所有出口 panic 场景 资源可能无法释放 defer 仍会执行,保证清理 代码可维护性 清理逻辑分散 打开/关闭写在一起,逻辑内聚 💡 一句话:defer 是 Go 中实现 RAII(资源获取即初始化) 模式的...
go-字符串本质
Created2026-04-04
Go 语言:字符串的内存本质🔹 字符串在内存中的存储1str := "eat" 在内存中,str 存储的就是这 3 个字节: 12str → [ 'e' 'a' 't' ] 101 97 116 ← 每个字符的 ASCII 值,各占 1 byte (uint8) 📐 字节与字符的对应关系 字符 ASCII 码(十进制) ASCII 码(二进制) 占用内存 'e' 101 01100101 1 byte 'a' 97 01100001 1 byte 't' 116 01110100 1 byte 💡 结论:对于纯 ASCII 字符串,len(str) 等于字符个数,也等于字节数。 🔹 string 的底层结构(源码视角)12345// Go 源码 reflect/value.gotype StringHeader struct { Data uintptr // �...
eino-ReAct模式
Created2026-04-02
ReAct 模式(Reasoning + Acting)详解 ⚠️ 注意:这里的 ReAct 不是前端框架 React.js,而是 LLM Agent 领域的一个经典范式,全称 Reasoning + Acting,出自 2022 年论文 ReAct: Synergizing Reasoning and Acting in Language Models。 🔹 核心思想LLM 在一个循环中交替进行 思考(Reasoning) 和 行动(Acting): 12345678910111213141516循环开始 │ ├─ 🤔 Thought: "用户要提取 CSV 第一列,我先看看文件结构" ← 推理 ├─ 🛠️ Action: read_file(path="questions.csv", n_rows=5) ← 调用工具 ├─ 👁️ Observation: "type,question,options,answer,..." ← 工具返回 │ ├─ 🤔 Th...
12…6
avatar
John Doe
Articles
55
Tags
0
Categories
0
Follow Me
Announcement
This is my Blog
Recent Posts
eino-chap3-store2026-04-07
eino-chap2-chatmodelagent2026-04-07
eino-chap12026-04-07
go-基于指针对象的方法-map深度理解2026-04-06
go-基于指针对象的方法-编译器隐式取地址2026-04-06
Archives
  • April 2026 13
  • March 2026 17
  • February 2026 2
  • January 2026 4
  • December 2025 8
  • November 2025 4
  • October 2025 7
Website Info
Article Count :
55
Unique Visitors :
Page Views :
Last Update :
© 2025 - 2026 By John DoeFramework Hexo 8.0.0|Theme Butterfly 5.5.1