LangGraph is an innovative tool for building dynamic workflows using graph-based systems. One of its core features, the Send function, plays a crucial role in directing data flow between nodes. In this guide, we’ll break down how to use the Send function in LangGraph effectively to create seamless workflows.
What is the Send Function in LangGraph?
The Send function allows you to specify the target node and the message (data or state) to pass along. It’s designed to streamline communication between nodes in a graph.
Function Definition:
Send(target_node: str, message: dict)
target_node: The name of the node receiving the message.message: A dictionary containing the state or data to be sent.
Setting Up the Send Function in Your Workflow
Let’s dive into a practical example. Imagine you’re building a system to generate jokes for a list of subjects.
1. Define the State Structure
Start by outlining the structure of your application’s state using a TypedDict.
from typing import TypedDict, Annotated
import operator
class OverallState(TypedDict):
subjects: list[str]
jokes: Annotated[list[str], operator.add]Here, OverallState includes:
- A list of
subjects. - A list of
jokes, whereAnnotatedwithoperator.addindicates appending new jokes to the list.
2. Define Nodes
Create the nodes that process the data.
from langgraph.constants import Send
def continue_to_jokes(state: OverallState):
return [Send("generate_joke", {"subject": s}) for s in state['subjects']]
def generate_joke(state: OverallState):
subject = state['subject']
joke = f"Why did the {subject} cross the road? To get to the other side!"
return {"jokes": [joke]}continue_to_jokes: Sends aSendaction for each subject to thegenerate_jokenode.generate_joke: Generates a joke for the given subject.
3. Build the Graph
Construct the graph and define the edges connecting the nodes.
from langgraph.graph import StateGraph, START, END
builder = StateGraph(OverallState)
builder.add_node("continue_to_jokes", continue_to_jokes)
builder.add_node("generate_joke", generate_joke)
builder.add_conditional_edges(START, continue_to_jokes)
builder.add_edge("generate_joke", END)
graph = builder.compile()
START: The entry point of the graph.END: The endpoint of the graph.- Nodes like
continue_to_jokesandgenerate_jokeorchestrate the workflow.
4. Execute the Graph
Invoke the graph with an initial state to see the results in action.
initial_state = {"subjects": ["chicken", "cow"]}
result = graph.invoke(initial_state)
print(result)Output:
{
'subjects': ['chicken', 'cow'],
'jokes': [
'Why did the chicken cross the road? To get to the other side!',
'Why did the cow cross the road? To get to the other side!'
]
}Why Use Send Function in LangGraph?
The Send function simplifies complex workflows by:
- Dynamically routing data between nodes.
- Supporting parallel processing for tasks like batch operations.
- Keeping your workflow modular and easy to debug.
Key Takeaways
- The
Sendfunction is essential for orchestrating data flow in LangGraph. - It’s easy to implement and integrates seamlessly with your workflows.
- Whether you’re building simple data pipelines or complex applications,
Sendempowers you to design scalable solutions.
For more insights and advanced examples, visit the LangGraph documentation. Happy coding!
Also Read: Enhance LangGraph with Long-Term Memory: A Beginner’s Guide


