langchain核心组件 Model I/O(5)-chain

1.1 RunnableLambda 可运行

RunnableLambda 将 Python 可调用函数转换为 Runnable,使得函数可以在同步或异步上下文中使用。

举例:

python 复制代码
from langchain_core.runnables import RunnableLambda

chain = { 
  "text1": lambda x: x + " world", 
  "text2": lambda x: x + ", how are you",
}| RunnableLambda(lambda x: len(x["text1"])+ len(x["text2"]))

result = chain.invoke("hello")
print(result)  

也可以通过装饰器来使用:

python 复制代码
from langchain_core.runnables import RunnableLambda

@RunnableLambda
def total_len(x): 
  return len(x["text1"]) + len(x["text2"])
 
chain = { 
  "text1": lambda x: x + " world", 
  "text2": lambda x: x + ", how are you",
}| total_len
result = chain.invoke("hello")
print(result)  # 29

1.2 RunnablePassthrough 可运行透传

RunnablePassthrough 接收输入并将其原样输出。RunnablePassthrough 是 LangChain LCEL 体系中的"无操作节点",用于在流水线中透传输入或保留上下文,也可以用于向输出中添加键。

举例:保留中间结果

ini 复制代码
from langchain_core.runnablesimport RunnablePassthrough,RunnableParallel

chain = RunnableParallel(
   original=RunnablePassthrough(),
 # 保留中间结果 
  word_count=lambda x: len(x),
)
result = chain.invoke("hello world")
print(result)  # {'original': 'hello world','word_count': 11}

举例:使用 assign() 向输出中添加键

css 复制代码
from langchain_core.runnables import RunnablePassthrough
chain = { 
  "text1": lambda x: x + " world", 
  "text2": lambda x: x + ", how are you",
}| RunnablePassthrough.assign(word_count=lambda x: len(x["text1"]+ x["text2"]))
result = chain.invoke("hello")
print(result)
#{'text1': 'hello world', 'text2': 'hello, how are you', 'word_count': 29}

1.3 RunnableBranch 可运行分支

RunnableBranch 使用 (条件,Runnable) 对列表和默认分支进行初始化。对输入进行操作时,选择第一个计算结果为 True 的条件,并在输入上运行相应的 Runnable。如果没有条件为 True,则在输入上运行默认分支。

举例:

python 复制代码
from langchain_core.runnables import RunnableBranch

branch = RunnableBranch( 
  (lambda x: isinstance(x, str), lambda x: x.upper())
  (lambda x: isinstance(x, int), lambda x: x + 1), 
  (lambda x: isinstance(x, float), lambda x: x * 2) 
  lambda x: "goodbye",
) 
result = branch.invoke("hello")
print(result)  # HELLO 
result = branch.invoke(None)
print(result)  # goodbye

1.4 RunnableWithFallbacks 可运行带回退

RunnableWithFallbacks 使得 Runnable 失败后可以回退到其他 Runnable。可以直接在Runnable 上使用 with_fallbacks 方法。

举例:

ini 复制代码
import os

from langchain.chat_models import init_chat_model
from langchain_core.prompts import PromptTemplate
from langchain_core.runnables import RunnableLambda
llm = init_chat_model(
  model="openai/gpt-oss-20b:free",
  model_provider="openai",
  base_url="https://openrouter.ai/api/v1", 
  api_key=os.getenv("OPENROUTER_API_KEY"),
)
chain = PromptTemplate.from_template("hello") | llm
chain_with_fallback = chain.with_fallbacks([RunnableLambda(lambda x: "sorry")])
result = chain_with_fallback.invoke("1")  # 提示词模板中没有需要填充的变量,会报错
print(result)  # sorry
相关推荐
笨蛋不要掉眼泪13 小时前
Spring Boot集成LangChain4j:与大模型对话的极速入门
java·人工智能·后端·spring·langchain
CCPC不拿奖不改名18 小时前
RAG基础:基于LangChain 的文本分割实战+文本分块
人工智能·python·langchain·知识库·改行学it·rag·向量库
gentle coder19 小时前
【langchain】AI应用开发框架
langchain·llm·rag
OPEN-Source20 小时前
大模型实战:把 LangChain / LlamaIndex 工作流接入监控与告警体系
人工智能·langchain·企业微信·rag
重生之我要成为代码大佬1 天前
LangChain-多任务应用开发
langchain·大模型·agent
doll ~CJ1 天前
Large Language Model(LLM)应用开发学习实践(三)
langchain·llm·提示词工程·ai应用
玄同7651 天前
LangChain v1.0+ 与 FastAPI 中间件深度解析:从概念到实战
人工智能·中间件·langchain·知识图谱·fastapi·知识库·rag
猫头虎1 天前
2026全网最热Claude Skills工具箱,GitHub上最受欢迎的7大Skills开源AI技能库
langchain·开源·prompt·github·aigc·ai编程·agi
朱元禄1 天前
AI Agent 实战课程 之 《RAG 闭环实操:RAG 闭环实操(讲师逐字稿)DeepSeek + LangChain》
人工智能·langchain
伊甸31 天前
基于LangChain4j从0到1搭建自己的的AI智能体并部署上线-1
java·langchain·prompt