- 博客(32)
- 收藏
- 关注
原创 LangChain框架下,钩子函数,中间件接受的request究竟是什么?是怎么产生的?包含哪些内容?
request是框架自动构造,自动传给你的钩子函数,你不用手动实例化。内容来源:agent.invoke 输入context、model、messages,进行context校验、messages请求LLM,然后在 Agent 准备调用 LLM 的瞬间(想要调用但还未调用),框架拼装成 ModelRequest。每一次 LLM 调用,都会生成一份独立全新 request。request 里包含两部分:request 本体:给大模型的参数 messages/model/temperature。
2026-10-20 23:50:07
208
原创 LangChain中动态选择提示词
举例切换: 方案 A(你当前代码):动态选模型 → 依据 messages 长度(读 messages,不用 context);动态 prompt → 依据 user_role(读 context) 方案 B:也可以反过来:动态选模型根据 context 里。,这个角色不是存在 messages 对话消息里,而是存在会话 context 里面(后端元数据,不占 token),所以才读取 context。,不需要读取 context,所以代码没写 context 相关代码。= Agent 会话的。
2026-10-19 17:39:44
144
原创 LangChain Agent 里的 context(context_schema)作用是什么?什么时候需要定义?
不能随便新增字段你用 Pydantic 定义,就相当于锁死了 context 里面允许存在的 key:只允许user_levelcall_count。✅ 可以修改已有字段的值:比如call_count从 0 → 1 → 2❌不能动态新增别的字段,比如你想临时塞一个city="北京"进去,直接会报错。这是和普通 Python 字典最大的区别!普通字典可以随时加新 key,但这里是 Pydantic 模型(强类型 schema 约束),字段结构固定。结构固定,值可变;不能新增字段。
2026-10-19 13:01:02
364
原创 LangChain 1.0 Agent 中间件
类比:快递分拣流水线 Agent 本身是一条流水线:收到用户消息 → 交给大模型思考 → 调用工具 → 返回结果 中间件就是流水线上面加装的。执行顺序: A 前置 → B 前置 → C 前置 → 【原生逻辑:调用模型 / 工具】 → C 后置 → B 后置 → A 后置。洋葱模型: 进入钩子前置逻辑 → 执行原始模型 / 工具 → 回到钩子,拿到返回结果,执行后置逻辑。:同时监听模型调用、工具调用、Agent 启动、Agent 结束。Agent 在跑循环(思考→调用 LLM→调用工具→再思考)的途中,在。
2026-10-19 11:38:56
368
原创 Agent回复的response是什么数据类型?为什么可以被打印?什么样的数据可以被打印?
一定是 AIMessage;流式有可能是 ToolMessage;写通用健壮代码,仍然推荐增加类型判断,防止后续逻辑改动导致异常。
2026-10-18 23:00:57
297
原创 skill agent workflow的区别
Skill = 工具,只会干活,不会思考Agent = 会思考的智能体,可以按需调用 SkillWorkflow = 流程编排,规定 Agent/Skill 先后执行顺序你之前那个串行小说多 Agent 例子,就是Workflow 编排了多个 Agent,每个 Agent 内部也可以挂载自己的 Skill(比如文本统计 Skill、查重 Skill)。
2026-10-17 15:51:29
137
原创 火山引擎上传图片到TOS
选择哪种方式,核心取决于你的需求:如果你只是临时分析一张图,用完即弃,用File API最省事。如果你想长期保存图片,并希望自己完全掌控数据,用TOS + 图片 URL更合适。你之前已经成功把图片上传到 TOS 了,这属于第二种方式。如果需要反复用同一张图,可以考虑用 File API 上传一次,之后只传file_id来节省流量。
2026-10-16 16:06:25
230
原创 显卡 显存 硬盘 内存 算力 CPU GPU名词区分
CPU:通用计算总管(适用于复杂的逻辑运算);GPU:并行计算加速器(跑模型主力)(适用于简单的并行计算,例如矩阵计算)内存 (RAM):CPU 使用的临时空间,存放数据集、代码、模型元信息GPU 专属内存,存放神经网络权重、中间张量(训练最吃它)硬盘:永久存储,放数据集、模型文件、环境安装包,读写速度影响加载快慢算力:GPU 每秒能做的浮点运算数量,决定前向 / 反向传播计算快慢类比: CPU = 餐厅店长,什么杂活都能干,但一次处理任务数量少;
2026-09-24 00:04:02
259
原创 装饰器代码的执行顺序(内含_call_魔法方法)
核心原因:代码是从上到下逐行执行的,print 的执行时机由代码位置决定,不是看代码书写的先后排版。把那段测试代码再贴一遍,我标注每一行什么时候跑:执行时序逐行梳理 运行 →打印 1 号分割线 碰到 target_function = decorator_function(target_function): 把原始传入 执行 →输出【A】 执行 :仅仅定义 wrapper 函数,wrapper 里面所有代码完全不执行,包括里面的 print【C】只是被存起来,不会打印!
2026-08-10 16:21:15
538
原创 python中的迭代器与生成器
只要 Python 看到函数定义体内存在 yield,它就把这个函数标记为生成器函数。,这个 1 只是变量状态,不会自动跑出来,必须等。写在代码里 ≠ 程序已经跑到这行执行了。打印出来的是对象描述、内存地址,只是做初始化、返回迭代器;负责驱动工具产出数据。
2026-08-09 12:57:26
644
原创 LangChain中的提示词模板
字符串拼接的prompt,在工程化应用中有诸多不便,故而引入提示词模板,提示词模板的价值在于:参数化,可维护,标准化。
2026-08-04 20:45:05
265
原创 VS code中用docker创建数据库
MilvusMySQL启动方式:独立docker run命令,无 yml 文件两个服务互相独立,分开启动,不用整合在同一个 compose,维持你原来的使用习惯。
2026-08-04 00:15:17
891
原创 git仓库相关命令
作用:标记当前文件夹下的所有文件为待提交状态。如果有不需要提交的文件(如虚拟环境、大体积数据),建议先创建。请将末尾的「你的仓库名」替换为你在 GitHub 上创建的实际仓库名称。作用:在当前文件夹生成本地 Git 版本管理环境,一个项目仅需执行一次。作用:生成本地的第一条版本记录,引号内为提交说明,可根据实际内容自定义。参数会自动绑定本地分支与远程分支,后续提交可简化命令。无需再填写远程别名和分支名,Git 会自动匹配已绑定的。作用:将本地代码推送到远程仓库的。作用:给远程仓库绑定本地别名。
2026-08-03 20:13:26
199
原创 LangChain中的结构化输出
强制返回 JSON 字符串,杜绝多余文字,但不控制内部字段;如果想要【规定必须有 title、year、rating 这些固定字段】: 单纯 response_format 不够,需要搭配 Pydantic(也就是方案);对比记忆:只想要纯净 JSON 文本 → 使用原生 response_format想要纯净 JSON + 自动校验字段、自动转为对象 → LangChain structured_output。
2026-07-30 17:02:19
471
原创 类的方法和属性
LangChain 内部拿到这个类,等 LLM 返回 JSON 后,2. Pydantic 的特殊魔法:BaseModel 重写了底层的。Pydantic 类依然需要实例化!1.所有 Python 类默认自带隐藏父类方法。这一步,但实际是有实例化的步骤的。是一个高度封装的父类,它。,没有预置初始化逻辑,
2026-07-30 16:57:02
268
原创 LangChain 中的模型分类及初始化
对象类来源接口类型是否需要 base_urllangchain_community 阿里专用类DashScope 原生接口❌ 不需要,地址内置ChatOpenAIlangchain_openai 通用类DashScope OpenAI 兼容接口✅ 必须手动指定 base_url。
2026-07-28 23:53:03
435
原创 路由是什么
路由(Routing)是一种通用的架构设计思想,核心是根据既定规则或实时决策,将输入请求精准分发到对应的处理单元,实现「请求入口」与「处理能力」的匹配解耦。输入请求:需要被处理的原始输入(网络数据包、HTTP 请求、用户自然语言问题等)路由决策逻辑:判断规则 / 决策模型,用来给请求分类、匹配目标处理节点处理节点:承接请求的具体执行单元(服务器、后端函数、Agent、工具等)职责分离、统一入口、流程可控、提升执行效率与准确率。
2026-07-22 10:18:19
728
原创 RAG实战中的文本清洗规则
在 RAG 开发中,文本清洗一般放在执行,核心目的是去除噪声、统一格式,减少无效 token 消耗,提升向量化准确率和检索质量。
2026-07-20 11:25:25
729
原创 调用大模型的两种方法
需要稳定、精准、自定义解析→ 用原生调用需要简洁、快速、和框架生态联动→ 用封装调用两者底层最终发往大模型的 HTTP 请求,本质是完全一样的。
2026-07-15 11:53:14
269
原创 函数定义的规范
不是 “描述不同所以内容不同”,而是功能决定步骤,步骤决定代码。需要和大模型交互 → 就会写提示词prompt需要调用外部接口 / API → 就会有请求和response需要分情况处理 → 就会用if/else分支需要做复杂计算 → 就会有运算逻辑需要串联多个步骤 → 就会依次调用多个子函数这些都是实现功能的工具,不是函数定义的强制要求。先明确:输入是什么、要完成什么事、输出是什么(先写文档字符串)把完成这件事拆成一步步的执行步骤把步骤逐行翻译成代码。
2026-07-15 11:52:19
179
原创 Python 保留关键字
更多 Python 保留关键字参考:https://www.runoob.com/python3/python3-keyword.html。
2026-07-13 22:39:40
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1