본문으로 건너뛰기

랭체인 create_agent 기반 미들웨어 구현 및 실전 활용 가이드

LangChain의 create_agent 함수와 미들웨어 데코레이터를 활용하여 에이전트의 실행 흐름을 제어하고 프롬프트 인젝션 차단 및 모델 동적 라우팅을 구현하는 방법을 다룹니다.

챕터별 상세

00:39

create_agent의 상세 구조와 ReAct 패턴

create_agent는 추론과 도구 선택을 반복하는 ReAct 패턴을 기반으로 에이전트를 생성한다. 입력이 들어오면 모델이 도구 사용 여부를 판단하고, 액션을 취한 뒤 그 결과를 다시 모델이 받아 최종 답변을 낼지 결정하는 순환 구조이다. 이 기본 패턴만으로는 도구 결과 정제나 출력 마스킹 같은 세밀한 제어가 어렵기 때문에 미들웨어가 필요하다.

ReAct 패턴은 Reasoning과 Acting의 합성어로 LLM이 스스로 판단하고 행동하는 에이전트의 핵심 알고리즘이다.

03:34

랭체인 미들웨어 훅의 종류와 역할

에이전트 실행 흐름의 특정 지점에서 동작하는 5가지 주요 훅을 정의한다. before_agent는 에이전트 시작 전 가드레일 역할을 하며, before_model과 after_model은 모델 호출 전후의 프롬프트 변환이나 응답 후처리를 담당한다. wrap_model_call과 wrap_tool_call은 각각 모델과 도구 실행 자체를 감싸서 에러 발생 시 재시도 로직 등을 추가할 수 있게 한다.
09:05

모델 동적 라우팅 실습 (@wrap_model_call)

대화의 맥락이나 길이에 따라 사용하는 LLM 모델을 실시간으로 변경하는 기능을 구현했다. @wrap_model_call 데코레이터를 사용하여 메시지 수가 10개를 넘어가면 GPT-4o-mini에서 GPT-4o로 모델을 자동 전환하도록 설정했다. 이를 통해 간단한 질의는 저렴한 모델로 처리하고 복잡한 대화는 고성능 모델로 처리하여 비용 효율성을 극대화했다.

데코레이터는 기존 함수를 수정하지 않고 기능을 추가하거나 변경할 수 있는 파이썬의 문법적 설탕이다.

16:30

금지어 필터링 및 동적 프롬프트 적용

@before_model 위치에서 사용자의 마지막 메시지를 검사하여 금지어가 포함된 경우 에러를 발생시키는 로직을 적용했다. 또한 @dynamic_prompt를 활용해 모델 호출 시마다 랜덤하게 존댓말이나 반말 모드를 선택하도록 프롬프트를 동적으로 변경했다. 실행 결과, 금지어 입력 시 모델 호출 단계 이전에 시스템이 차단되는 것을 확인했다.
python
@wrap_model_call
def dynamic_model_selection(request: ModelRequest, handler) -> ModelResponse:
    message_count = len(request.state["messages"])
    if message_count > 10:
        model = advanced_model
    else:
        model = basic_model
    return handler(request.override(model=model))

대화 메시지 수에 따라 기본 모델과 고급 모델을 동적으로 전환하는 미들웨어 예시

23:10

프롬프트 인젝션 차단 실습 (@before_agent)

사용자가 시스템 프롬프트를 무시하라는 명령을 내리는 프롬프트 인젝션 공격을 방어하는 미들웨어를 구축했다. 별도의 보안 전용 LLM을 호출하여 입력값의 위험도를 분석하고, 인젝션 시도가 감지되면 jump_to='end' 상태를 반환하여 에이전트를 즉시 종료시킨다. 이 방식은 에이전트 로직 내부로 악의적인 명령이 전달되기 전에 입구에서 차단하므로 시스템 안정성을 크게 높인다.

jump_to는 LangGraph 기반 에이전트에서 특정 노드로 실행 흐름을 강제 이동시키는 기능이다.

python
@before_model
def content_filter_middleware(state: AgentState, runtime: Runtime) -> None:
    last_msg = state["messages"][-1]
    for word in BLOCKED_WORDS:
        if word in last_msg.content:
            raise ValueError(f"부적절한 표현이 감지되었습니다: {word}")

모델 호출 전 금지어 포함 여부를 검사하여 차단하는 미들웨어 예시

용어 해설

미들웨어(Middleware)
에이전트의 실행 흐름 중 특정 지점에서 동작을 가로채거나 조작할 수 있는 중간 처리기이다. LangChain 에이전트의 기본 패턴을 벗어나 입력 전처리, 출력 마스킹, 모델 동적 변경 등을 가능하게 하여 시스템의 유연성을 높인다.
프롬프트 인젝션(Prompt Injection)
사용자가 악의적인 입력을 통해 LLM의 원래 지침(System Prompt)을 무시하거나 우회하여 제어권을 탈취하려는 공격 방식이다. 에이전트 시스템에서는 보안을 위해 미들웨어 단계에서 이러한 시도를 사전에 감지하고 차단하는 로직이 필수적이다.
리액트 패턴(ReAct Pattern)
모델이 추론(Reasoning)과 행동(Acting)을 반복하며 문제를 해결하는 에이전트 설계 방식이다. 사용자의 질문에 대해 어떤 도구를 사용할지 판단하고 실행 결과를 다시 모델이 받아 최종 답변을 생성하는 순환 구조를 가진다.
AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 05. 11.수집 2026. 05. 11.출처 타입 YOUTUBE

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.