Bird
Raised Fist0
LangChainframework~20 mins

RunnablePassthrough and RunnableLambda in LangChain - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

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
Challenge - 5 Problems
🎖️
Runnable Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
component_behavior
intermediate
1:30remaining
What does RunnablePassthrough output?
Given a RunnablePassthrough instance in LangChain, what will be the output when you run it with input "Hello"?
LangChain
from langchain_core.runnables import RunnablePassthrough
runnable = RunnablePassthrough()
result = runnable.invoke("Hello")
print(result)
A"Hello"
B"RunnablePassthrough"
CNone
DRaises TypeError
Attempts:
2 left
💡 Hint
RunnablePassthrough returns exactly what it receives.
📝 Syntax
intermediate
1:30remaining
Which RunnableLambda syntax correctly doubles a number?
Select the correct RunnableLambda code that doubles the input number.
LangChain
from langchain_core.runnables import RunnableLambda
ARunnableLambda(lambda x: x ** 2)
BRunnableLambda(lambda x: x + 2)
CRunnableLambda(lambda x: x * 2)
DRunnableLambda(lambda x: str(x) * 2)
Attempts:
2 left
💡 Hint
Doubling means multiplying by 2.
state_output
advanced
2:00remaining
What is the output of this RunnableLambda chain?
Consider this code snippet using RunnableLambda and RunnablePassthrough. What is printed?
LangChain
from langchain_core.runnables import RunnableLambda, RunnablePassthrough
passthrough = RunnablePassthrough()
lambda_double = RunnableLambda(lambda x: x * 2)
chain = passthrough | lambda_double
result = chain.invoke(5)
print(result)
A5
B10
CTypeError
DNone
Attempts:
2 left
💡 Hint
RunnablePassthrough passes input unchanged, then RunnableLambda doubles it.
🔧 Debug
advanced
2:00remaining
Why does this RunnableLambda code raise an error?
This RunnableLambda is defined as RunnableLambda(lambda x: x[0]). What error occurs when invoking with input 10?
LangChain
from langchain_core.runnables import RunnableLambda
runnable = RunnableLambda(lambda x: x[0])
runnable.invoke(10)
ATypeError: 'int' object is not subscriptable
BIndexError: list index out of range
CAttributeError: 'int' has no attribute 'invoke'
DNo error, output is 1
Attempts:
2 left
💡 Hint
Check if the input type supports indexing.
🧠 Conceptual
expert
2:00remaining
Which statement about RunnablePassthrough and RunnableLambda is true?
Choose the correct statement about RunnablePassthrough and RunnableLambda in LangChain.
ARunnablePassthrough runs a custom function, RunnableLambda returns input unchanged
BRunnablePassthrough modifies input, RunnableLambda always returns input unchanged
CBoth RunnablePassthrough and RunnableLambda require async functions
DRunnablePassthrough returns input unchanged, RunnableLambda runs a custom function on input
Attempts:
2 left
💡 Hint
Think about what each class is designed to do with input.

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

  1. Step 1: Understand RunnablePassthrough behavior

    RunnablePassthrough is designed to return whatever input it receives without modifying it.
  2. 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.
  3. Final Answer:

    Returns the input exactly as it is without any changes -> Option C
  4. 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

  1. Step 1: Identify the doubling function

    Doubling means multiplying the input by 2, so the function should be lambda x: x * 2.
  2. Step 2: Match with options

    RunnableLambda(lambda x: x * 2) matches the doubling function exactly; others perform addition, division, or subtraction.
  3. Final Answer:

    RunnableLambda(lambda x: x * 2) -> Option B
  4. Quick Check:

    Doubling function uses multiplication by 2 = D [OK]
Hint: Doubling means multiply input by 2 in lambda [OK]
Common Mistakes:
  • Using addition instead of multiplication
  • Confusing division or subtraction for doubling
  • Incorrect lambda syntax
3. What will be the output of this code?
passthrough = RunnablePassthrough()
lambda_runner = RunnableLambda(lambda x: x.upper())
result = lambda_runner.invoke(passthrough.invoke('hello'))
print(result)
medium
A. 'HELLO'
B. 'hello'
C. Error: RunnablePassthrough cannot be invoked
D. 'Hello'

Solution

  1. Step 1: Trace RunnablePassthrough output

    Calling passthrough.invoke('hello') returns 'hello' unchanged.
  2. Step 2: Apply RunnableLambda function

    The lambda converts input to uppercase, so 'hello'.upper() returns 'HELLO'.
  3. Final Answer:

    'HELLO' -> Option A
  4. 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

  1. Step 1: Analyze lambda operation on input

    The lambda tries to add 1 to input '5', which is a string, causing a type mismatch.
  2. Step 2: Identify error type

    Adding integer 1 to string '5' raises a TypeError in Python.
  3. Final Answer:

    TypeError because string '5' cannot be added to integer 1 -> Option A
  4. 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

  1. Step 1: Pass list unchanged with RunnablePassthrough

    RunnablePassthrough returns the list as is, so it fits the first step.
  2. Step 2: Double each number with RunnableLambda

    RunnableLambda with lambda x: [i*2 for i in x] correctly doubles each element in the list.
  3. Final Answer:

    Use RunnablePassthrough to pass the list, then RunnableLambda with lambda x: [i*2 for i in x] -> Option D
  4. 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
  • Reversing order of passthrough and lambda