커스텀 워크플로
커스텀 워크플로 (Custom workflow)
커스텀 워크플로 아키텍처에서는 LangGraph를 사용해 여러분 자신이 만든 맞춤형 실행 흐름을 정의해요. 그래프 구조에 대한 완전한 제어권을 갖습니다 — 순차 단계, 조건 분기, 루프, 병렬 실행까지 모두요. 다른 패턴들이 표준 부품 조립식이라면, 커스텀 워크플로는 부품부터 직접 설계하는 공방이라고 할 수 있죠.
graph LR
A([Input]) --> B{{Conditional}}
B -->|path_a| C[Deterministic step]
B -->|path_b| D((Agentic step))
C --> G([Output])
D --> G([Output])
classDef trigger fill:#F6FFDB,stroke:#6E8900,stroke-width:2px,color:#2E3900
classDef process fill:#E5F4FF,stroke:#006DDD,stroke-width:2px,color:#030710
classDef decision fill:#FDF3FF,stroke:#7E65AE,stroke-width:2px,color:#504B5F
class A,G trigger
class C,D process
class B decision
핵심 특징 (Key characteristics)
- 그래프 구조에 대한 완전한 제어
- 결정적 로직과 에이전트적 동작의 혼합
- 순차 단계, 조건 분기, 루프, 병렬 실행 지원
- 다른 패턴을 워크플로의 노드로 내장 가능
언제 쓰나요? (When to use)
표준 패턴(서브에이전트, 스킬 등)이 요구사항에 맞지 않을 때, 결정적 로직과 에이전트적 동작을 섞어야 할 때, 또는 복잡한 라우팅이나 다단계 처리가 필요한 사용 사례라면 커스텀 워크플로를 쓰면 돼요.
워크플로의 각 노드는 단순한 함수일 수도, LLM 호출일 수도, 도구를 가진 완전한 에이전트일 수도 있습니다. 커스텀 워크플로 안에서 다른 아키텍처를 합성할 수도 있어요 — 예를 들어 멀티 에이전트 시스템을 하나의 노드로 내장하는 식이죠.
기본 구현 (Basic implementation)
핵심 통찰은 이거예요. 어떤 LangGraph 노드 안에서도 LangChain 에이전트를 직접 호출할 수 있다는 겁니다. 커스텀 워크플로의 유연성과 미리 만들어진 에이전트의 편의성을 동시에 얻는 셈이죠.
from langchain.agents import create_agent
from langgraph.graph import StateGraph, START, END
agent = create_agent(model="openai:gpt-5.5", tools=[...])
def agent_node(state: State) -> dict:
"""A LangGraph node that invokes a LangChain agent."""
result = agent.invoke({
"messages": [{"role": "user", "content": state["query"]}]
})
return {"answer": result["messages"][-1].content}
# Build a simple workflow
workflow = (
StateGraph(State)
.add_node("agent", agent_node)
.add_edge(START, "agent")
.add_edge("agent", END)
.compile()
)
예시: RAG 파이프라인 (Example: RAG pipeline)
흔한 사용 사례는 검색(retrieval)과 에이전트를 결합하는 거예요. 다음 예시는 지식 베이스에서 검색하고 실시간 뉴스도 가져올 수 있는 WNBA 통계 어시스턴트를 만드는 커스텀 RAG 워크플로입니다.
이런 커스텀 RAG 워크플로는 세 가지 유형의 노드를 보여줘요. 사용자 입력을 받는 노드, 관련 문서를 검색하는 검색 노드, 그 검색 결과를 바탕으로 에이전트가 답을 생성하는 노드입니다. 검색과 생성이 결정적으로 연결되는 지점과, 도구 호출이 필요한 지점에서 에이전트가 개입하는 지점이 분명히 나뉘어요. 이렇게 결정적 단계와 에이전트적 단계를 한 그래프에 섞는 것이 커스텀 워크플로의 힘입니다.
튜토리얼: 라우팅이 있는 멀티 소스 지식 베이스 (Tutorial: Build a multi-source knowledge base with routing)
Router 패턴은 커스텀 워크플로의 한 예시예요. GitHub, Notion, Slack을 병렬로 질의한 뒤 결과를 합성하는 라우터를 만드는 튜토리얼이 준비되어 있습니다. 자세한 내용은 Router 지식 베이스 튜토리얼을 참고하세요.