Runnables 与执行链路

研究目标

回答这些问题:

  • Runnable 的核心定义在哪里?
  • 输入是如何被封装、传递、组合的?
  • 执行、streaming、callback、parser 如何串起来?
  • 旧版 Chain 和新版 Runnable/LCEL 有什么差异?

待读内容

  • libs/core/ 中与 Runnable 相关的定义
  • libs/langchain_v1/ 中对 Runnable 的高层使用
  • 测试中对执行链路的示例

第一轮已确认

  • Runnable 基类定义在 libs/core/langchain_core/runnables/base.py:124
  • invoke 是执行核心,ainvoke 默认走 run_in_executor
  • batch 默认通过线程池并行调用 invoke
  • RunnableConfigconfig.py 中定义,是 tracing / callbacks / concurrency / runtime configurable 的统一入口
  • RunnableSequence 是最核心的链式组合原语
  • RunnableParallel 是 fan-out 并发组合原语
  • streaming 是否端到端贯通,与各 step 是否实现 transform 强相关
  • RunnableLambda 默认不支持 transform,是 streaming 链路中的一个关键注意点

重点测试入口

  • libs/core/tests/unit_tests/runnables/test_runnable.py
  • libs/core/tests/unit_tests/runnables/test_runnable_events_v2.py

记录模板

  • 入口:
  • 关键类型:
  • 核心文件:
  • 执行步骤:
  • streaming 路径:
  • callback 插入点:
  • 与 Agent/Tool 的关系: