- 博客(15)
- 资源 (189)
- 收藏
- 关注
原创 2.langchain中间件之常用内置中间件的使用
触发 → 裁剪 → 总结 → 保留最近消息 → 用摘要替换早期历史内置类型只覆盖通用场景。真实业务里的敏感信息——API Key、手机号、身份证号、内部订单号、病历号——都需要自己定义。detector函数形态的价值在于——可以做校验逻辑,不只是模式匹配。下面的例子会剔除掉"看起来像但不是真 SSN"的号码。import re# 校验:前三位不能是 000、666,也不能落在 900-999"start": match.start(), # ← 必填:命中位置。
2026-09-02 17:17:07
原创 1.langchain中间件之中间件概述
中间件(Middleware)是一组挂在执行流程固定位置的钩子函数(hook),用于在 Agent 运行的各个阶段拦截、检查、修改行为。它以列表形式传给*,middleware: Sequence[AgentMiddleware] = (), # ← 就是这里...# 官方释义:A sequence of middleware instances to apply to the agent.middleware=[ # ← 一串中间件,顺序很重要(第 4 章讲)
2026-09-02 17:01:51
1
原创 9. 实战:多功能智能助手
外部 API 调用、纯计算、联网检索、读写状态。注意每个工具的 docstring 都写清了"什么时候用"。# tools.py# ---------- 工具 1:天气查询(模拟外部 API,可能失败)----------@tool"""查询指定城市的当前天气。当用户询问任何城市的天气、气温、是否下雨/下雪、穿衣建议时使用。参数 city 为中文城市名,如'杭州'、'北京'。
2026-09-02 16:48:11
2
原创 8. Agent 的高级用法 4:流式输出及模式
官方定义:——在工具或节点内部主动推送任意数据(进度、日志、部分结果)。这是最灵活的一种,常用于长时间运行的工具。# ① 在 Agent 的工具里用 runtime.stream_writer 推送进度@toolwriter(f"正在查询 {city} 的数据...") # ← 立即推送给用户# ... 耗时操作 ...writer(f"数据获取完成,正在解析")# ② 消费端print("进度:", chunk["data"])# 进度: 正在查询 杭州 的数据...
2026-09-02 16:39:42
原创 7.Agent 的高级用法 3:结构化输出
结构化输出走工具调用路径,所以会在对话历史里留下一条 ToolMessage。默认内容是——这对用户毫无意义,还占据上下文。让你把它换成一句人话。tools=[],",),# ===== 设置了 tool_message_content 的历史 =====# ✅ 语义清晰# ===== 未设置(默认)的历史 =====# ⚠ 结果被重复写进了历史,白白多占 token① 用了做多轮会话时——历史会被反复重放,这条消息每次都占 token;
2026-09-02 15:06:07
1
原创 6. Agent 的高级用法 2:系统提示词
系统提示词是 Agent 的。它在每次调用模型时被放在消息列表最前面,——这跟"用户提示词"只在第一轮出现是完全不同的。实践中,它是性价比最高的一处调优点。如果提示词需要依赖(用户姓名、当前时间、会员等级),用中间件实现——LangChain 提供了装饰器,按装饰的函数接收一个1. 基于用户等级/身份动态调整语气2. 基于当前时间/日期动态调整3. 基于会话历史动态注入上下文4. 基于用户偏好动态调整输出格式。
2026-09-02 14:35:54
原创 5. Agent 的高级用法 1:设置 Agent 名称
一个请求会经过多个 Agent(主管 → 研究员 → 撰稿人)。没有名字,trace 里全是 "agent" 节点,排查时根本分不清是谁慢、谁错。:主管 Agent(supervisor)把各个专家 Agent 包装成工具来调用。当一个 Agent 作为节点嵌入更大的图时,元组返回,名字让你能区分事件来自哪一层。这是 v1 官方推荐的。——名字起得不好,路由就会错。给编译出来的图起个名字。流式输出时,事件会以。会成为其状态与事件的。
2026-09-02 14:21:30
原创 4.Agent 的基本用法 3:绑定工具
ToolRetryMiddleware 是一个“防故障”层级,它负责在 AI 调用外部工具(如 API、数据库)失败时,自动、安静地重新尝试调用,直到成功或达到最大重试次数,从而提升系统的稳定性和用户体验。max_retries=3, # 首次失败后再试 3 次(共 4 次)backoff_factor=2.0, # 每次等待 ×2initial_delay=1.0, # 第一次等 1 秒max_delay=60.0, # 退避上限,防止等太久。
2026-09-02 14:12:10
1
原创 3. Agent 的基本用法 2:如何调用 Agent
元素含义类比invoke()执行一个封装好的复杂任务按下一个“启动”按钮input你要问的问题或要处理的数据你放进机器里的原材料config控制这次执行过程的额外设置机器面板上的旋钮和开关(如速度、模式、记录日志)意思是:“启动这个任务,传入我的数据(input),并按照这些额外设置(config)来执行它。这个模式通常出现在一些现代 AI 框架或库中(比如 LangChain、某些 LLM API 封装库、或者自定义的流式处理框架),用于实现流式(streaming)数据生成。参数。
2026-09-02 10:51:55
1
原创 1. 开篇:Agent 不是“会聊天的模型“,而是“会干活的系统“
—Agent 是一个能够调用工具、观察结果、并自行决定下一步的模型。Agent 循环的完整流程(以"查天气 + 发邮件"为例)注意关键分支:模型自己决定"再调一个工具"还是"给最终答案"——这就是 Agent 与普通链路的本质区别。
2026-09-02 09:46:01
1
原创 LangChain 结构化输出
LLM 天生输出的是自然语言文本——为聊天而生,却不适合被程序消费。从一段简历文本里抽出姓名/邮箱/技能列表把用户评价分类成 positive/negative生成一份可入库的订单对象。结构化输出就是让模型"按契约输出",直接返回可以被程序使用的类型化数据。最小可运行示例(模型层)# ① 定义数据契约:我要什么形状的数据"""一个人的基本信息。""" # ← 类文档字符串会被送进模型的 schema 描述name: str = Field(description="姓名")
2026-08-31 15:26:37
391
原创 LangChain Tools 实践经验总结
前面四章讲的是「能做什么」,这一章讲「怎么做才不会在生产环境翻车」。全部来自真实项目的经验教训,可以直接当 Code Review 清单用。
2026-08-31 10:29:41
3
原创 LangChain Tools 完全讲义
从「工具是什么」到「怎么写好一个工具」,再到「如何让模型必须用某个工具」—— 一份可以直接当教程、也可以当检索手册的中文讲义。所有 API 与示例均对照 LangChain 官方文档最新版(v1.2+)编写。
2026-08-30 08:49:47
7
原创 LangChain 消息与提示词模板
历史越长,token 越贵、延迟越高、还会撞上下文窗口上限。(滑窗裁剪)、摘要压缩(summary)、(精确删除)。是一个用于管理 LLM 对话历史长度的实用工具/函数。它通过自动删除列表中较早的消息,确保总 Token 数不超过模型限制,同时尽量保留对当前对话最重要的信息(通常是最近的消息和系统提示)。如果你是在某个具体框架(如chainlit)或代码中看到这个函数,欢迎告诉我具体上下文,我可以为你进一步分析。
2026-08-28 22:43:30
456
REST in Practice.pdf
2012-01-21
悟透JavaScript
2012-01-14
跟老男孩学linux运维 核心系统命令实战-高清-完整-带目录
2018-06-04
新书 Oracle SQL高级编程(中文版 完整版 英文名 Pro Oracle SQL)
2013-03-01
EXT江湖_12867169_北京市:电子工业出版社_2012.01_大漠穷秋著_Pg779
2013-03-11
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅