Bird
Raised Fist0
LangChainframework~8 mins

Custom agent logic in LangChain - Performance & Optimization

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
Performance: Custom agent logic
MEDIUM IMPACT
Custom agent logic affects how quickly and efficiently the agent processes inputs and generates outputs, impacting interaction responsiveness and overall user experience.
Implementing decision-making logic for an AI agent
LangChain
def agent_decision(input):
    cache = {}
    def get_result(key):
        if key not in cache:
            if key in ['A', 'B']:
                cache[key] = complex_call_1()
            elif key == 'C':
                cache[key] = complex_call_2()
            else:
                cache[key] = complex_call_3()
        return cache[key]
    return get_result(input)
Caches results to avoid repeated heavy calls and simplifies decision logic for faster processing.
📈 Performance GainReduces blocking time by up to 70%, improving interaction responsiveness
Implementing decision-making logic for an AI agent
LangChain
def agent_decision(input):
    # Multiple nested if-else checks with redundant calls
    if input == 'A':
        result = complex_call_1()
    elif input == 'B':
        result = complex_call_1()
    elif input == 'C':
        result = complex_call_2()
    else:
        result = complex_call_3()
    return result
Redundant calls and nested conditions cause repeated heavy computations, slowing response time.
📉 Performance CostBlocks interaction for 200-300ms per call due to repeated heavy computations
Performance Comparison
PatternDOM OperationsReflowsPaint CostVerdict
Redundant heavy calls in logicMinimal0Low[X] Bad
Cached and simplified logicMinimal0Low[OK] Good
Rendering Pipeline
Custom agent logic runs mostly in JavaScript or backend code before rendering results. Inefficient logic delays the time before the UI updates with new content.
Script Execution
Rendering
Interaction Response
⚠️ BottleneckScript Execution due to heavy or redundant computations
Core Web Vital Affected
INP
Custom agent logic affects how quickly and efficiently the agent processes inputs and generates outputs, impacting interaction responsiveness and overall user experience.
Optimization Tips
1Avoid redundant heavy computations in agent logic to reduce script blocking.
2Use caching to store and reuse results for faster responses.
3Profile script execution to find and optimize slow logic paths.
Performance Quiz - 3 Questions
Test your performance knowledge
What is a main performance issue with redundant heavy calls in custom agent logic?
AThey increase script execution time and delay UI updates
BThey cause excessive DOM reflows
CThey increase CSS paint cost
DThey reduce network bandwidth
DevTools: Performance
How to check: Record a performance profile while interacting with the agent. Look for long scripting tasks and repeated function calls.
What to look for: Long scripting blocks or repeated calls indicate inefficient logic causing interaction delays.

Practice

(1/5)
1. What is the main purpose of creating custom agent logic in Langchain?
easy
A. To define specific rules for how the agent plans and acts
B. To change the user interface of the agent
C. To improve the speed of the Langchain library
D. To add new data sources automatically

Solution

  1. Step 1: Understand the role of custom agent logic

    Custom agent logic is about controlling how the agent decides what to do next.
  2. Step 2: Identify the main purpose

    It is used to write your own rules for planning and acting, not for UI or speed improvements.
  3. Final Answer:

    To define specific rules for how the agent plans and acts -> Option A
  4. Quick Check:

    Custom agent logic = planning and acting rules [OK]
Hint: Custom logic controls agent decisions, not UI or speed [OK]
Common Mistakes:
  • Thinking it changes the user interface
  • Assuming it speeds up the library
  • Believing it adds data sources automatically
2. Which method should you override to customize how an agent decides its next action in Langchain?
easy
A. run
B. plan
C. initialize
D. execute

Solution

  1. Step 1: Identify key methods for custom logic

    Langchain agents use methods like plan and run for behavior.
  2. Step 2: Determine which controls decision making

    The plan method decides the next action, so overriding it customizes decisions.
  3. Final Answer:

    plan -> Option B
  4. Quick Check:

    Decision method = plan [OK]
Hint: Override plan() to change agent's next action [OK]
Common Mistakes:
  • Overriding run() instead of plan() for decisions
  • Using initialize() which is not for planning
  • Confusing execute() with plan()
3. Given this custom agent code snippet, what will be printed?
class MyAgent:
    def plan(self, input_text):
        if 'hello' in input_text.lower():
            return 'Greet'
        return 'Ignore'

agent = MyAgent()
print(agent.plan('Hello there!'))
medium
A. Greet
B. Ignore
C. hello
D. Error

Solution

  1. Step 1: Analyze the plan method logic

    The method checks if 'hello' is in the input text (case-insensitive). If yes, returns 'Greet'.
  2. Step 2: Apply input to the method

    Input is 'Hello there!', which contains 'hello' ignoring case, so it returns 'Greet'.
  3. Final Answer:

    Greet -> Option A
  4. Quick Check:

    Input contains 'hello' -> returns 'Greet' [OK]
Hint: Check string contains 'hello' ignoring case [OK]
Common Mistakes:
  • Ignoring case sensitivity in string check
  • Expecting the method to print input text
  • Assuming method returns 'Ignore'
4. What is wrong with this custom agent code?
class CustomAgent:
    def plan(self, input_text):
        if input_text.contains('test'):
            return 'Found'
        return 'Not Found'
medium
A. Missing return statement in plan method
B. plan method should not take input_text parameter
C. Indentation error in class definition
D. Using .contains() method which does not exist in Python strings

Solution

  1. Step 1: Check string method usage

    Python strings do not have a .contains() method; use 'in' keyword instead.
  2. Step 2: Identify correct string membership check

    Correct way is: 'test' in input_text, so .contains() causes an error.
  3. Final Answer:

    Using .contains() method which does not exist in Python strings -> Option D
  4. Quick Check:

    Python strings use 'in', not .contains() [OK]
Hint: Use 'in' keyword for substring check in Python [OK]
Common Mistakes:
  • Using .contains() instead of 'in'
  • Thinking plan method can't take parameters
  • Assuming missing return statement
5. You want to create a custom Langchain agent that first plans actions based on input, then logs each action before running it. Which approach correctly combines planning and running with logging?
hard
A. Override only run() to plan, log, and execute actions
B. Override plan() to log actions and run() to decide actions
C. Override plan() to decide actions and override run() to log and execute actions
D. Use default plan() and run(), add logging outside the agent

Solution

  1. Step 1: Understand responsibilities of plan() and run()

    plan() decides what to do next; run() executes actions.
  2. Step 2: Combine logging with correct methods

    Override plan() for custom decisions; override run() to add logging before execution.
  3. Final Answer:

    Override plan() to decide actions and override run() to log and execute actions -> Option C
  4. Quick Check:

    plan() decides, run() logs and executes [OK]
Hint: Plan decides; run executes and logs actions [OK]
Common Mistakes:
  • Putting planning logic inside run() only
  • Logging inside plan() without running actions
  • Not overriding methods and logging externally