当前位置: 首页 > news >正文

with_listeners 运行流程与解析

一、前言

with_listeners() 方法的底层实现机制包含两个关键点:

​1. 回调注入逻辑​
通过以下方式将回调函数整合到配置中:

config["callbacks"] = [on_start, on_end, on_error]

(实际实现会合并而非覆盖已有回调)

​2. 事件监听原理​
本质上是通过内置的 CallbackHandler 类实现生命周期事件的监听处理,其工作流程为:

  • ✅ 注册事件钩子
  • ✅ 标准化事件格式
  • ✅ 分发回调执行

二、运行流程:在这里插入图片描述

三、资料推荐

  • 🔗 官方文档参考
  • 💡大模型中转API推荐
  • ✨中转使用教程

四、核心源码

# langchain_core/runnables/base.py -> Runnable
def with_listeners(
    self,
    *,
    on_start: Optional[
        Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]
    ] = None,
    on_end: Optional[
        Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]
    ] = None,
    on_error: Optional[
        Union[Callable[[Run], None], Callable[[Run, RunnableConfig], None]]
    ] = None,
) -> Runnable[Input, Output]:
    from langchain_core.tracers.root_listeners import RootListenersTracer

    return RunnableBinding(
        bound=self,
        config_factories=[
            lambda config: {
                "callbacks": [
                    RootListenersTracer(
                        config=config,
                        on_start=on_start,
                        on_end=on_end,
                        on_error=on_error,
                    )
                ],
            }
        ],
    )

相关文章:

  • Flask(九)邮件发送与通知系统
  • 分布式架构:Dubbo 协议如何做接口测试
  • 从振动谐波看电机寿命:PdM策略下的成本控制奇迹
  • Json快速入门
  • C++中的move操作
  • python 判断字符串是否包含关键字
  • 7.2 重复推送(每日、每周等)
  • springboot集成kafka,后续需要通过flask封装restful接口
  • 基于 Node.js 和 Spring Boot 的 RSA 加密登录实践
  • 程序化广告行业(70/89):ABTester系统助力落地页优化实践
  • 【C++篇】深入解析C/C++内存管理:从原理到实践
  • c语言 文件操作
  • MTO和MTS不同模式制造业数字化转型的“三座大山“:MES/ERP/PLM系统集成技术全解析
  • Buffer Pool 的核心作用与工作机制
  • uni-app使用web-view传参的坑
  • HOW - React Error Catch 机制
  • Three.js 系列专题 7:性能优化与最佳实践
  • TVBOX最新配置接口\直播源接口 收集整理【 2025.4】
  • Token无感刷新
  • 蓝桥杯备赛 Day 21 图论基础
  • 袁思达已任中国科学院办公厅主任
  • 当代科技拟召开债券持有人会议 ,对“H20科技2”进行四展
  • 朝着解决问题的正确方向迈进——中美经贸高层会谈牵动世界目光
  • 言短意长|西湖大学首次“走出西湖”
  • 消费维权周报|上周涉手机投诉较多,涉拍照模糊、屏幕漏液等
  • “80后”李灿已任重庆市南川区领导,此前获公示拟提名为副区长人选