Tag: llm

  • Agentic Orchestration Pattern: Capability Pattern

    
        """
    Pattern 12.04: Capability
    Dynamic capability discovery and composition
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class CapabilityState(TypedDict):
        """State for Capability pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: CapabilityState) -> CapabilityState:
        """Capability agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Capability: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Capability", "status": "completed"}
        return state
    
    
    def create_capability():
        """Create Capability workflow."""
        workflow = StateGraph(CapabilityState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_capability()
        result = workflow.invoke({"input": "Test Capability", "output": "", "metadata": {}})
        print(f"\n=== Capability Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Capability Pattern

    04 Capability Pattern – Detailed Documentation

    Overview

    File: 12_specialization/04_capability.py
    Pattern Category: 12 Specialization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 12.04: Capability Dynamic capability discovery and composition


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class CapabilityState(TypedDict):
        """State for Capability pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: CapabilityState) -> CapabilityState:
    

    CapabilityState: State for Capability pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Capability: Stores prompt = f”Process using Capability – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Capability agent implementation.

    def agent_function(state: CapabilityState) -> CapabilityState:
        """Capability agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Capability: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Capability", "status": "completed"}
        return state
    
    
    def create_capability():
    

    create_capability()

    Line: 28
    Arguments: “

    Create Capability workflow.

    def create_capability():
        """Create Capability workflow."""
        workflow = StateGraph(CapabilityState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class CapabilityState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Capability pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: CapabilityState) -> CapabilityState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Capability agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_capability definition

    def create_capability():
    

    Defines the create_capability function that processes the workflow state.

    Line 29: Module docstring

        """Create Capability workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_capability()
        result = workflow.invoke({"input": "Test Capability", "output": "", "metadata": {}})
        print(f"\n=== Capability Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Skill-Based Routing

    
        """
    Pattern 12.03: Skill-Based Routing
    Match tasks to agent capabilities
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class SkillBasedRoutingState(TypedDict):
        """State for Skill-Based Routing pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: SkillBasedRoutingState) -> SkillBasedRoutingState:
        """Skill-Based Routing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Skill-Based Routing: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Skill-Based Routing", "status": "completed"}
        return state
    
    
    def create_skill_based_routing():
        """Create Skill-Based Routing workflow."""
        workflow = StateGraph(SkillBasedRoutingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_skill_based_routing()
        result = workflow.invoke({"input": "Test Skill-Based Routing", "output": "", "metadata": {}})
        print(f"\n=== Skill-Based Routing Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Skill-Based Routing

    03 Skill Based Routing Pattern – Detailed Documentation

    Overview

    File: 12_specialization/03_skill_based_routing.py
    Pattern Category: 12 Specialization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 12.03: Skill-Based Routing Match tasks to agent capabilities


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class SkillBasedRoutingState(TypedDict):
        """State for Skill-Based Routing pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: SkillBasedRoutingState) -> SkillBasedRoutingState:
    

    SkillBasedRoutingState: State for Skill-Based Routing pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Skill-Based Routing: Stores prompt = f”Process using Skill-Based Routing – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Skill-Based Routing agent implementation.

    def agent_function(state: SkillBasedRoutingState) -> SkillBasedRoutingState:
        """Skill-Based Routing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Skill-Based Routing: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Skill-Based Routing", "status": "completed"}
        return state
    
    
    def create_skill_based_routing():
    

    create_skill_based_routing()

    Line: 28
    Arguments: “

    Create Skill-Based Routing workflow.

    def create_skill_based_routing():
        """Create Skill-Based Routing workflow."""
        workflow = StateGraph(SkillBasedRoutingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class SkillBasedRoutingState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Skill-Based Routing pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: SkillBasedRoutingState) -> SkillBasedRoutingState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Skill-Based Routing agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_skill_based_routing definition

    def create_skill_based_routing():
    

    Defines the create_skill_based_routing function that processes the workflow state.

    Line 29: Module docstring

        """Create Skill-Based Routing workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_skill_based_routing()
        result = workflow.invoke({"input": "Test Skill-Based Routing", "output": "", "metadata": {}})
        print(f"\n=== Skill-Based Routing Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Role-Based Pattern

    
        """
    Pattern 12.02: Role-Based
    Agents assigned specific roles and permissions
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class RoleBasedState(TypedDict):
        """State for Role-Based pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: RoleBasedState) -> RoleBasedState:
        """Role-Based agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Role-Based: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Role-Based", "status": "completed"}
        return state
    
    
    def create_role_based():
        """Create Role-Based workflow."""
        workflow = StateGraph(RoleBasedState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_role_based()
        result = workflow.invoke({"input": "Test Role-Based", "output": "", "metadata": {}})
        print(f"\n=== Role-Based Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Role-Based Pattern

    02 Role Based Pattern – Detailed Documentation

    Overview

    File: 12_specialization/02_role_based.py
    Pattern Category: 12 Specialization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 12.02: Role-Based Agents assigned specific roles and permissions


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class RoleBasedState(TypedDict):
        """State for Role-Based pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: RoleBasedState) -> RoleBasedState:
    

    RoleBasedState: State for Role-Based pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Role-Based: Stores prompt = f”Process using Role-Based – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Role-Based agent implementation.

    def agent_function(state: RoleBasedState) -> RoleBasedState:
        """Role-Based agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Role-Based: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Role-Based", "status": "completed"}
        return state
    
    
    def create_role_based():
    

    create_role_based()

    Line: 28
    Arguments: “

    Create Role-Based workflow.

    def create_role_based():
        """Create Role-Based workflow."""
        workflow = StateGraph(RoleBasedState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class RoleBasedState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Role-Based pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: RoleBasedState) -> RoleBasedState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Role-Based agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_role_based definition

    def create_role_based():
    

    Defines the create_role_based function that processes the workflow state.

    Line 29: Module docstring

        """Create Role-Based workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_role_based()
        result = workflow.invoke({"input": "Test Role-Based", "output": "", "metadata": {}})
        print(f"\n=== Role-Based Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Expert Pattern

    
        """
    Pattern 12.01: Expert
    Route to specialized domain experts
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class ExpertState(TypedDict):
        """State for Expert pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: ExpertState) -> ExpertState:
        """Expert agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Expert: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Expert", "status": "completed"}
        return state
    
    
    def create_expert():
        """Create Expert workflow."""
        workflow = StateGraph(ExpertState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_expert()
        result = workflow.invoke({"input": "Test Expert", "output": "", "metadata": {}})
        print(f"\n=== Expert Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Expert Pattern

    01 Expert Pattern – Detailed Documentation

    Overview

    File: 12_specialization/01_expert.py
    Pattern Category: 12 Specialization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 12.01: Expert Route to specialized domain experts


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class ExpertState(TypedDict):
        """State for Expert pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: ExpertState) -> ExpertState:
    

    ExpertState: State for Expert pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Expert: Stores prompt = f”Process using Expert – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Expert agent implementation.

    def agent_function(state: ExpertState) -> ExpertState:
        """Expert agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Expert: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Expert", "status": "completed"}
        return state
    
    
    def create_expert():
    

    create_expert()

    Line: 28
    Arguments: “

    Create Expert workflow.

    def create_expert():
        """Create Expert workflow."""
        workflow = StateGraph(ExpertState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class ExpertState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Expert pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: ExpertState) -> ExpertState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Expert agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_expert definition

    def create_expert():
    

    Defines the create_expert function that processes the workflow state.

    Line 29: Module docstring

        """Create Expert workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_expert()
        result = workflow.invoke({"input": "Test Expert", "output": "", "metadata": {}})
        print(f"\n=== Expert Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Streaming Pattern

    
        """
    Pattern 11.04: Streaming
    Continuous data flow with real-time processing
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class StreamingState(TypedDict):
        """State for Streaming pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: StreamingState) -> StreamingState:
        """Streaming agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Streaming: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Streaming", "status": "completed"}
        return state
    
    
    def create_streaming():
        """Create Streaming workflow."""
        workflow = StateGraph(StreamingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_streaming()
        result = workflow.invoke({"input": "Test Streaming", "output": "", "metadata": {}})
        print(f"\n=== Streaming Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Streaming Pattern

    04 Streaming Pattern – Detailed Documentation

    Overview

    File: 11_communication/04_streaming.py
    Pattern Category: 11 Communication
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 11.04: Streaming Continuous data flow with real-time processing


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class StreamingState(TypedDict):
        """State for Streaming pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: StreamingState) -> StreamingState:
    

    StreamingState: State for Streaming pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Streaming: Stores prompt = f”Process using Streaming – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Streaming agent implementation.

    def agent_function(state: StreamingState) -> StreamingState:
        """Streaming agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Streaming: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Streaming", "status": "completed"}
        return state
    
    
    def create_streaming():
    

    create_streaming()

    Line: 28
    Arguments: “

    Create Streaming workflow.

    def create_streaming():
        """Create Streaming workflow."""
        workflow = StateGraph(StreamingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class StreamingState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Streaming pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: StreamingState) -> StreamingState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Streaming agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_streaming definition

    def create_streaming():
    

    Defines the create_streaming function that processes the workflow state.

    Line 29: Module docstring

        """Create Streaming workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_streaming()
        result = workflow.invoke({"input": "Test Streaming", "output": "", "metadata": {}})
        print(f"\n=== Streaming Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Request-Response Pattern

    
        """
    Pattern 11.03: Request-Response
    Synchronous direct agent-to-agent interaction
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class RequestResponseState(TypedDict):
        """State for Request-Response pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: RequestResponseState) -> RequestResponseState:
        """Request-Response agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Request-Response: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Request-Response", "status": "completed"}
        return state
    
    
    def create_request_response():
        """Create Request-Response workflow."""
        workflow = StateGraph(RequestResponseState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_request_response()
        result = workflow.invoke({"input": "Test Request-Response", "output": "", "metadata": {}})
        print(f"\n=== Request-Response Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Request-Response Pattern

    03 Request Response Pattern – Detailed Documentation

    Overview

    File: 11_communication/03_request_response.py
    Pattern Category: 11 Communication
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 11.03: Request-Response Synchronous direct agent-to-agent interaction


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class RequestResponseState(TypedDict):
        """State for Request-Response pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: RequestResponseState) -> RequestResponseState:
    

    RequestResponseState: State for Request-Response pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Request-Response: Stores prompt = f”Process using Request-Response – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Request-Response agent implementation.

    def agent_function(state: RequestResponseState) -> RequestResponseState:
        """Request-Response agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Request-Response: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Request-Response", "status": "completed"}
        return state
    
    
    def create_request_response():
    

    create_request_response()

    Line: 28
    Arguments: “

    Create Request-Response workflow.

    def create_request_response():
        """Create Request-Response workflow."""
        workflow = StateGraph(RequestResponseState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class RequestResponseState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Request-Response pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: RequestResponseState) -> RequestResponseState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Request-Response agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_request_response definition

    def create_request_response():
    

    Defines the create_request_response function that processes the workflow state.

    Line 29: Module docstring

        """Create Request-Response workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_request_response()
        result = workflow.invoke({"input": "Test Request-Response", "output": "", "metadata": {}})
        print(f"\n=== Request-Response Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Publish-Subscribe Pattern

    
        """
    Pattern 11.02: Publish-Subscribe
    Publishers emit events, subscribers receive
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class PublishSubscribeState(TypedDict):
        """State for Publish-Subscribe pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: PublishSubscribeState) -> PublishSubscribeState:
        """Publish-Subscribe agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Publish-Subscribe: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Publish-Subscribe", "status": "completed"}
        return state
    
    
    def create_publish_subscribe():
        """Create Publish-Subscribe workflow."""
        workflow = StateGraph(PublishSubscribeState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_publish_subscribe()
        result = workflow.invoke({"input": "Test Publish-Subscribe", "output": "", "metadata": {}})
        print(f"\n=== Publish-Subscribe Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Publish-Subscribe Pattern

    02 Publish Subscribe Pattern – Detailed Documentation

    Overview

    File: 11_communication/02_publish_subscribe.py
    Pattern Category: 11 Communication
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 11.02: Publish-Subscribe Publishers emit events, subscribers receive


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class PublishSubscribeState(TypedDict):
        """State for Publish-Subscribe pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: PublishSubscribeState) -> PublishSubscribeState:
    

    PublishSubscribeState: State for Publish-Subscribe pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Publish-Subscribe: Stores prompt = f”Process using Publish-Subscribe – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Publish-Subscribe agent implementation.

    def agent_function(state: PublishSubscribeState) -> PublishSubscribeState:
        """Publish-Subscribe agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Publish-Subscribe: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Publish-Subscribe", "status": "completed"}
        return state
    
    
    def create_publish_subscribe():
    

    create_publish_subscribe()

    Line: 28
    Arguments: “

    Create Publish-Subscribe workflow.

    def create_publish_subscribe():
        """Create Publish-Subscribe workflow."""
        workflow = StateGraph(PublishSubscribeState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class PublishSubscribeState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Publish-Subscribe pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: PublishSubscribeState) -> PublishSubscribeState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Publish-Subscribe agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_publish_subscribe definition

    def create_publish_subscribe():
    

    Defines the create_publish_subscribe function that processes the workflow state.

    Line 29: Module docstring

        """Create Publish-Subscribe workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_publish_subscribe()
        result = workflow.invoke({"input": "Test Publish-Subscribe", "output": "", "metadata": {}})
        print(f"\n=== Publish-Subscribe Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Message Passing Pattern

    
        """
    Pattern 11.01: Message Passing
    Asynchronous communication with message queues
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class MessagePassingState(TypedDict):
        """State for Message Passing pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: MessagePassingState) -> MessagePassingState:
        """Message Passing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Message Passing: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Message Passing", "status": "completed"}
        return state
    
    
    def create_message_passing():
        """Create Message Passing workflow."""
        workflow = StateGraph(MessagePassingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_message_passing()
        result = workflow.invoke({"input": "Test Message Passing", "output": "", "metadata": {}})
        print(f"\n=== Message Passing Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Message Passing Pattern

    01 Message Passing Pattern – Detailed Documentation

    Overview

    File: 11_communication/01_message_passing.py
    Pattern Category: 11 Communication
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 11.01: Message Passing Asynchronous communication with message queues


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class MessagePassingState(TypedDict):
        """State for Message Passing pattern."""
        input: str
        output: str
        metadata: dict
    
    
    def agent_function(state: MessagePassingState) -> MessagePassingState:
    

    MessagePassingState: State for Message Passing pattern.

    State Fields: – input: Stores input – output: Stores output – metadata: Stores metadata – def agent_function(state: Stores def agent function(state – prompt = f"Process using Message Passing: Stores prompt = f”Process using Message Passing – state["metadata"] = {"pattern": Stores state[“metadata”] = {“pattern”


    Functions

    agent_function()

    Line: 18
    Arguments: state

    Message Passing agent implementation.

    def agent_function(state: MessagePassingState) -> MessagePassingState:
        """Message Passing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process using Message Passing: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        state["metadata"] = {"pattern": "Message Passing", "status": "completed"}
        return state
    
    
    def create_message_passing():
    

    create_message_passing()

    Line: 28
    Arguments: “

    Create Message Passing workflow.

    def create_message_passing():
        """Create Message Passing workflow."""
        workflow = StateGraph(MessagePassingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class MessagePassingState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Message Passing pattern."""
    

    Describes the pattern and its purpose.

    Line 18: Function agent_function definition

    def agent_function(state: MessagePassingState) -> MessagePassingState:
    

    Defines the agent_function function that processes the workflow state.

    Line 19: Module docstring

        """Message Passing agent implementation."""
    

    Describes the pattern and its purpose.

    Line 28: Function create_message_passing definition

    def create_message_passing():
    

    Defines the create_message_passing function that processes the workflow state.

    Line 29: Module docstring

        """Create Message Passing workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_message_passing()
        result = workflow.invoke({"input": "Test Message Passing", "output": "", "metadata": {}})
        print(f"\n=== Message Passing Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Load Balancing Pattern

    
        """
    Pattern 10.04: Load Balancing
    Distribute work evenly across agents
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class LoadBalancingState(TypedDict):
        """State for Load Balancing pattern."""
        input: str
        output: str
    
    
    def agent_function(state: LoadBalancingState) -> LoadBalancingState:
        """Load Balancing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process this using Load Balancing pattern: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        return state
    
    
    def create_load_balancing():
        """Create Load Balancing workflow."""
        workflow = StateGraph(LoadBalancingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_load_balancing()
        result = workflow.invoke({"input": "Test Load Balancing", "output": ""})
        print(f"\n=== Load Balancing Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Load Balancing Pattern

    04 Load Balancing Pattern – Detailed Documentation

    Overview

    File: 10_optimization/04_load_balancing.py
    Pattern Category: 10 Optimization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 10.04: Load Balancing Distribute work evenly across agents


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class LoadBalancingState(TypedDict):
        """State for Load Balancing pattern."""
        input: str
        output: str
    
    
    def agent_function(state: LoadBalancingState) -> LoadBalancingState:
    

    LoadBalancingState: State for Load Balancing pattern.

    State Fields: – input: Stores input – output: Stores output – def agent_function(state: Stores def agent function(state – prompt = f"Process this using Load Balancing pattern: Stores prompt = f”Process this using Load Balancing pattern – def create_load_balancing(): Stores def create load balancing()


    Functions

    agent_function()

    Line: 17
    Arguments: state

    Load Balancing agent implementation.

    def agent_function(state: LoadBalancingState) -> LoadBalancingState:
        """Load Balancing agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process this using Load Balancing pattern: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        return state
    
    
    def create_load_balancing():
    

    create_load_balancing()

    Line: 26
    Arguments: “

    Create Load Balancing workflow.

    def create_load_balancing():
        """Create Load Balancing workflow."""
        workflow = StateGraph(LoadBalancingState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class LoadBalancingState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Load Balancing pattern."""
    

    Describes the pattern and its purpose.

    Line 17: Function agent_function definition

    def agent_function(state: LoadBalancingState) -> LoadBalancingState:
    

    Defines the agent_function function that processes the workflow state.

    Line 18: Module docstring

        """Load Balancing agent implementation."""
    

    Describes the pattern and its purpose.

    Line 26: Function create_load_balancing definition

    def create_load_balancing():
    

    Defines the create_load_balancing function that processes the workflow state.

    Line 27: Module docstring

        """Create Load Balancing workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_load_balancing()
        result = workflow.invoke({"input": "Test Load Balancing", "output": ""})
        print(f"\n=== Load Balancing Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships
  • Agentic Orchestration Pattern: Scatter-Gather Pattern

    
        """
    Pattern 10.03: Scatter-Gather
    Broadcast request to multiple agents
    """
    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    
    
    class ScatterGatherState(TypedDict):
        """State for Scatter-Gather pattern."""
        input: str
        output: str
    
    
    def agent_function(state: ScatterGatherState) -> ScatterGatherState:
        """Scatter-Gather agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process this using Scatter-Gather pattern: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        return state
    
    
    def create_scatter_gather():
        """Create Scatter-Gather workflow."""
        workflow = StateGraph(ScatterGatherState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
        workflow = create_scatter_gather()
        result = workflow.invoke({"input": "Test Scatter-Gather", "output": ""})
        print(f"\n=== Scatter-Gather Pattern ===\nOutput: {result['output'][:200]}...")
    
        

    Agentic Orchestration Pattern: Scatter-Gather Pattern

    03 Scatter Gather Pattern – Detailed Documentation

    Overview

    File: 10_optimization/03_scatter_gather.py
    Pattern Category: 10 Optimization
    Implementation: LangGraph/CrewAI

    Pattern Description

    Pattern 10.03: Scatter-Gather Broadcast request to multiple agents


    Code Structure

    Imports

    from typing import TypedDict
    from langgraph.graph import StateGraph, END
    from langchain_openai import ChatOpenAI
    from langchain_core.messages import HumanMessage
    

    Purpose of imports: – TypedDict: For type-safe state definitions – StateGraph: LangGraph’s graph-based workflow orchestration – ChatOpenAI: OpenAI LLM integration – HumanMessage: LangChain message formatting

    State Definition

    class ScatterGatherState(TypedDict):
        """State for Scatter-Gather pattern."""
        input: str
        output: str
    
    
    def agent_function(state: ScatterGatherState) -> ScatterGatherState:
    

    ScatterGatherState: State for Scatter-Gather pattern.

    State Fields: – input: Stores input – output: Stores output – def agent_function(state: Stores def agent function(state – prompt = f"Process this using Scatter-Gather pattern: Stores prompt = f”Process this using Scatter-Gather pattern – def create_scatter_gather(): Stores def create scatter gather()


    Functions

    agent_function()

    Line: 17
    Arguments: state

    Scatter-Gather agent implementation.

    def agent_function(state: ScatterGatherState) -> ScatterGatherState:
        """Scatter-Gather agent implementation."""
        llm = ChatOpenAI()
        prompt = f"Process this using Scatter-Gather pattern: {state['input']}"
        response = llm.invoke([HumanMessage(content=prompt)])
        state["output"] = str(response.content)
        return state
    
    
    def create_scatter_gather():
    

    create_scatter_gather()

    Line: 26
    Arguments: “

    Create Scatter-Gather workflow.

    def create_scatter_gather():
        """Create Scatter-Gather workflow."""
        workflow = StateGraph(ScatterGatherState)
        workflow.add_node("agent", agent_function)
        workflow.set_entry_point("agent")
        workflow.add_edge("agent", END)
        return workflow.compile()
    
    
    if __name__ == "__main__":
    

    Line-by-Line Explanation

    Line 5: Import statement

    from typing import TypedDict
    

    Imports TypedDict for creating type-safe state dictionaries.

    Line 6: Import statement

    from langgraph.graph import StateGraph, END
    

    Imports StateGraph – the core LangGraph class for building workflows.

    Line 7: Import statement

    from langchain_openai import ChatOpenAI
    

    Imports ChatOpenAI for LLM interactions.

    Line 8: Import statement

    from langchain_core.messages import HumanMessage
    

    Imports HumanMessage for formatting prompts to the LLM.

    Line 11: Class definition

    class ScatterGatherState(TypedDict):
    

    Defines the state structure using TypedDict for type safety.

    Line 12: Module docstring

        """State for Scatter-Gather pattern."""
    

    Describes the pattern and its purpose.

    Line 17: Function agent_function definition

    def agent_function(state: ScatterGatherState) -> ScatterGatherState:
    

    Defines the agent_function function that processes the workflow state.

    Line 18: Module docstring

        """Scatter-Gather agent implementation."""
    

    Describes the pattern and its purpose.

    Line 26: Function create_scatter_gather definition

    def create_scatter_gather():
    

    Defines the create_scatter_gather function that processes the workflow state.

    Line 27: Module docstring

        """Create Scatter-Gather workflow."""
    

    Describes the pattern and its purpose.


    Usage Example

    if __name__ == "__main__":
        workflow = create_scatter_gather()
        result = workflow.invoke({"input": "Test Scatter-Gather", "output": ""})
        print(f"\n=== Scatter-Gather Pattern ===\nOutput: {result['output'][:200]}...")
    

    Key Concepts

    1. State Management: Uses TypedDict to maintain workflow state
    2. Graph-Based Flow: LangGraph orchestrates execution flow
    3. Agent Functions: Each node processes and updates state
    4. LLM Integration: Uses ChatOpenAI for intelligent processing

    Pattern Benefits

    • ✅ Type-safe state management
    • ✅ Clear workflow visualization
    • ✅ Modular and reusable components
    • ✅ Easy to test and debug
    • ✅ Scalable architecture

    Related Patterns

    • See other patterns in the same category
    • Explore combination possibilities
    • Check the main documentation for pattern relationships