Skip to main content

Sequential Workflow Example In LangGraph Using LLM

Following is an example of sequential workflow in LangGraph. In this example we have used Groq.

Install Dependencies

pip install langgraph langchain langchain-groq

Complete Program

from typing import TypedDict

from langgraph.graph import StateGraph, START, END
from langchain_groq import ChatGroq

from dotenv import load_dotenv

load_dotenv()


# --------------------------------------------------
# Create the LLM
# --------------------------------------------------

llm = ChatGroq(
model="llama-3.3-70b-versatile",
temperature=0
)


# --------------------------------------------------
# Define the Workflow State
# --------------------------------------------------

class WorkflowState(TypedDict):
question: str
understanding: str
answer: str
summary: str


# --------------------------------------------------
# Node 1
# --------------------------------------------------

def understand_question(state: WorkflowState):

print("\nExecuting Node : Understand Question")

prompt = f"""
Read the following question and explain what the user is asking.

Question:
{state["question"]}
"""

response = llm.invoke(prompt)

return {
"understanding": response.content
}


# --------------------------------------------------
# Node 2
# --------------------------------------------------

def generate_answer(state: WorkflowState):

print("\nExecuting Node : Generate Answer")

prompt = f"""
Question:
{state["question"]}

Understanding:
{state["understanding"]}

Generate a detailed answer.
"""

response = llm.invoke(prompt)

return {
"answer": response.content
}


# --------------------------------------------------
# Node 3
# --------------------------------------------------

def summarize_answer(state: WorkflowState):

print("\nExecuting Node : Summarize Answer")

prompt = f"""
Summarize the following answer in exactly three bullet points.

Answer:
{state["answer"]}
"""

response = llm.invoke(prompt)

return {
"summary": response.content
}


# --------------------------------------------------
# Build the Graph
# --------------------------------------------------

builder = StateGraph(WorkflowState)

builder.add_node("understand", understand_question)
builder.add_node("generate", generate_answer)
builder.add_node("summarize", summarize_answer)

builder.add_edge(START, "understand")
builder.add_edge("understand", "generate")
builder.add_edge("generate", "summarize")
builder.add_edge("summarize", END)

graph = builder.compile()


# --------------------------------------------------
# Execute the Workflow
# --------------------------------------------------

input_state = {
"question": "What is LangGraph and why should I use it?"
}

print("=" * 60)
print("Starting Sequential Workflow")
print("=" * 60)

result = graph.invoke(input_state)

print("\n" + "=" * 60)
print("Workflow Completed")
print("=" * 60)

print("\nUnderstanding")
print("-" * 60)
print(result["understanding"])

print("\nAnswer")
print("-" * 60)
print(result["answer"])

print("\nSummary")
print("-" * 60)
print(result["summary"])