Jump into concepts and practice - no test required
or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Using RunnablePassthrough and RunnableLambda in Langchain
📖 Scenario: You are building a simple text processing pipeline using Langchain. You want to pass data through unchanged in one step, and then transform it with a custom function in the next step.
🎯 Goal: Create a Langchain pipeline that first uses RunnablePassthrough to pass input text unchanged, then uses RunnableLambda to convert the text to uppercase.
📋 What You'll Learn
Import RunnablePassthrough and RunnableLambda from langchain_core.runnables
Create a RunnablePassthrough instance named passthrough
Create a RunnableLambda instance named to_upper that converts input text to uppercase
Call invoke on passthrough with the string 'hello world'
Call invoke on to_upper with the output from passthrough
💡 Why This Matters
🌍 Real World
RunnablePassthrough and RunnableLambda help build flexible data pipelines where some steps pass data unchanged and others apply custom transformations.
💼 Career
Understanding these runnables is useful for building modular, reusable components in Langchain workflows, common in AI and automation jobs.
Progress0 / 4 steps
1
Import RunnablePassthrough and RunnableLambda
Import RunnablePassthrough and RunnableLambda from langchain_core.runnables.
LangChain
Hint
Use a single import statement to import both classes from langchain_core.runnables.
2
Create RunnablePassthrough instance
Create a RunnablePassthrough instance named passthrough.
LangChain
Hint
Create the instance by calling RunnablePassthrough() and assign it to passthrough.
3
Create RunnableLambda instance to uppercase text
Create a RunnableLambda instance named to_upper that converts input text to uppercase using a lambda function.
LangChain
Hint
Use RunnableLambda with a lambda that calls upper() on the input string.
4
Invoke passthrough and then to_upper
Call invoke on passthrough with the string 'hello world' and assign the result to passed_text. Then call invoke on to_upper with passed_text and assign the result to upper_text.
LangChain
Hint
Use invoke method on both instances and assign their outputs to variables as instructed.
Practice
(1/5)
1. What does RunnablePassthrough do with the input it receives?
easy
A. Ignores the input and returns a fixed value
B. Transforms the input using a custom function
C. Returns the input exactly as it is without any changes
D. Throws an error if input is not a string
Solution
Step 1: Understand RunnablePassthrough behavior
RunnablePassthrough is designed to return whatever input it receives without modifying it.
Step 2: Compare options with behavior
Only Returns the input exactly as it is without any changes matches this behavior exactly; others describe transformations or errors which RunnablePassthrough does not do.
Final Answer:
Returns the input exactly as it is without any changes -> Option C
Quick Check:
RunnablePassthrough returns input unchanged = A [OK]
Hint: RunnablePassthrough just passes input through unchanged [OK]
Common Mistakes:
Thinking RunnablePassthrough modifies input
Confusing RunnablePassthrough with RunnableLambda
Assuming it throws errors on certain inputs
2. Which of the following is the correct way to create a RunnableLambda that doubles a number input?
easy
A. RunnableLambda(lambda x: x + 2)
B. RunnableLambda(lambda x: x * 2)
C. RunnableLambda(lambda x: x / 2)
D. RunnableLambda(lambda x: x - 2)
Solution
Step 1: Identify the doubling function
Doubling means multiplying the input by 2, so the function should be lambda x: x * 2.
Step 2: Match with options
RunnableLambda(lambda x: x * 2) matches the doubling function exactly; others perform addition, division, or subtraction.
Final Answer:
RunnableLambda(lambda x: x * 2) -> Option B
Quick Check:
Doubling function uses multiplication by 2 = D [OK]
Hint: Doubling means multiply input by 2 in lambda [OK]
The lambda converts input to uppercase, so 'hello'.upper() returns 'HELLO'.
Final Answer:
'HELLO' -> Option A
Quick Check:
Passthrough returns input, lambda uppercases it = C [OK]
Hint: Passthrough returns input, lambda transforms it [OK]
Common Mistakes:
Expecting passthrough to modify input
Confusing case conversion result
Assuming runtime error on invoke
4. Identify the error in this code snippet:
lambda_runner = RunnableLambda(lambda x: x + 1)
result = lambda_runner.invoke('5')
print(result)
medium
A. TypeError because string '5' cannot be added to integer 1
B. SyntaxError in lambda function
C. RunnableLambda cannot be invoked with strings
D. No error; output will be '51'
Solution
Step 1: Analyze lambda operation on input
The lambda tries to add 1 to input '5', which is a string, causing a type mismatch.
Step 2: Identify error type
Adding integer 1 to string '5' raises a TypeError in Python.
Final Answer:
TypeError because string '5' cannot be added to integer 1 -> Option A
Quick Check:
Adding int to string causes TypeError = B [OK]
Hint: Adding int to string causes TypeError in Python [OK]
Common Mistakes:
Assuming implicit string to int conversion
Thinking output is string concatenation
Confusing error types
5. You want to create a LangChain workflow that takes a list of numbers, passes it unchanged, then doubles each number. Which combination of RunnablePassthrough and RunnableLambda is correct?
hard
A. Use RunnablePassthrough twice, no lambda needed
B. Use RunnableLambda with lambda x: x, then RunnablePassthrough to double numbers
C. Use RunnableLambda with lambda x: x*2, then RunnablePassthrough to pass list
D. Use RunnablePassthrough to pass the list, then RunnableLambda with lambda x: [i*2 for i in x]
Solution
Step 1: Pass list unchanged with RunnablePassthrough
RunnablePassthrough returns the list as is, so it fits the first step.
Step 2: Double each number with RunnableLambda
RunnableLambda with lambda x: [i*2 for i in x] correctly doubles each element in the list.
Final Answer:
Use RunnablePassthrough to pass the list, then RunnableLambda with lambda x: [i*2 for i in x] -> Option D
Quick Check:
Passthrough passes list, lambda doubles elements = A [OK]
Hint: Passthrough passes input; lambda transforms list elements [OK]
Common Mistakes:
Trying to double list with passthrough
Using lambda that multiplies list object, not elements