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"])