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