Runnables 与执行链路
研究目标
回答这些问题:
- Runnable 的核心定义在哪里?
- 输入是如何被封装、传递、组合的?
- 执行、streaming、callback、parser 如何串起来?
- 旧版 Chain 和新版 Runnable/LCEL 有什么差异?
待读内容
libs/core/中与 Runnable 相关的定义libs/langchain_v1/中对 Runnable 的高层使用- 测试中对执行链路的示例
第一轮已确认
Runnable基类定义在libs/core/langchain_core/runnables/base.py:124invoke是执行核心,ainvoke默认走run_in_executorbatch默认通过线程池并行调用invokeRunnableConfig在config.py中定义,是 tracing / callbacks / concurrency / runtime configurable 的统一入口RunnableSequence是最核心的链式组合原语RunnableParallel是 fan-out 并发组合原语- streaming 是否端到端贯通,与各 step 是否实现
transform强相关 RunnableLambda默认不支持transform,是 streaming 链路中的一个关键注意点
重点测试入口
libs/core/tests/unit_tests/runnables/test_runnable.pylibs/core/tests/unit_tests/runnables/test_runnable_events_v2.py
记录模板
- 入口:
- 关键类型:
- 核心文件:
- 执行步骤:
- streaming 路径:
- callback 插入点:
- 与 Agent/Tool 的关系: