LangChain create_agent 기반 미들웨어 구현
2강: 랭체인의 create_agent 기반 미들웨어 구현하기 | 만들면서 배우는 AI 에이전트 개발 입문+실전 저자 직강
강사: 공원나연 교재: 한빛미디어 『만들면서 배우는 AI 에이전트 개발 입문+실전』 영상 길이: 32분 44초
핵심 개념
create_agent 미들웨어의 3가지 팁(Tip) 타입
LangChain 6.4절에서 소개되는 create_agent는 LLM 호출의 전후 처리를 데코레이터로 제공한다:
- @wrap_model_call — LLM 입출력 스키마 변환 및 응답 후처리
- @before_model — 모델 호출 전 프롬프트 동적 수정
- @dynamic_prompt — 실행 시점의 변수 기반 프롬프트 조정
- @before_agent — 에이전트 실행 전 프롬프트 인젝션 검증
아이디어 (IDEAS)
- create_agent 미들웨어는 LLM 호출 전후 처리를 데코레이터로 제공
- LangChain 6.4절의 3가지 팁(Tip) 타입: @wrap_model_call, @before_model, @before_agent
- @wrap_model_call - LLM 입출력 스키마 변환 및 응답 후처리
- @before_model - 프롬프트 동적 수정 및 동적 프롬프트 삽입
- @dynamic_prompt - 실행 시점의 변수 기반 프롬프트 조정
- @before_agent - 에이전트 실행 전 프롬프트 인젝션 검증
- 프롬프트 인젝션은 미들웨어 단계에서 정규표현식 필터로 방어 가능
- 미들웨어 중앙화로 보안 정책을 코드로 명시적 관리
- LLM 라우팅, MCP(Model Context Protocol), A2A(Agent-to-Agent) 실전 구현까지 단계별 학습
깊은 통찰 (INSIGHTS)
통찰 1: LangChain의 미들웨어 시스템은 단순한 로깅을 넘어, 프롬프트 변조·동적 라우팅·보안 정책을 통합적으로 지원하는 아키텍처를 제공한다.
단순 로깅 → 프롬프트 검증, 스키마 변환, 동적 라우팅, 보안 정책 등을 한곳에서 관리할 수 있다는 의미다.
통찰 2: create_agent 미들웨어를 이해하면, 복잡한 LLM 애플리케이션의 요청/응답 흐름을 중앙화하고 테스트하기 쉬워진다.
각 LLM 호출 지점마다 검증 로직을 분산하는 대신, 미들웨어로 통합하면 코드 응집도와 유지보수성이 향상된다.
통찰 3: 프롬프트 인젝션 방어가 미들웨어에서 처리되어야, 개발자가 매번 수동으로 검증하는 부담에서 벗어날 수 있다.
보안 로직을 중앙화하면 일관된 방어 정책을 모든 LLM 호출에 적용할 수 있다.
참고 자료 (REFERENCES)
| 이름 | 타입 | 설명 |
|---|---|---|
| LangChain | framework | Python 기반 AI 에이전트 개발 프레임워크 |
| create_agent | tool | LangChain 6.4절의 핵심 미들웨어 구현 방식 |
| @wrap_model_call | decorator | LLM 호출 입출력 스키마 변환 |
| @before_model | decorator | 모델 호출 전 프롬프트 수정 |
| @dynamic_prompt | decorator | 실행 시점 변수 기반 프롬프트 조정 |
| @before_agent | decorator | 에이전트 실행 전 보안 검증 |
| LangGraph | framework | LangChain의 그래프 기반 에이전트 구축 도구 |
| MCP | protocol | Model Context Protocol - LLM 도구 호출 표준 |
| 공원나연 | person | 영상 강사 - AI 에이전트 개발 전문가 |
| 한빛미디어 | publisher | 『만들면서 배우는 AI 에이전트 개발』 저자 및 출판사 |
검증 가능한 사실 (FACTS)
- 영상은 2강이며, 총 32분 44초(1964초) 길이
- LangChain의 create_agent는 6.4절에 소개됨
- 미들웨어 팁은 3가지 종류: @wrap_model_call, @before_model/@dynamic_prompt, @before_agent
- 프롬프트 인젝션 방어 예제는 정규표현식 필터 기반
- 책 제목: 『만들면서 배우는 AI 에이전트 개발 입문+실전』
- 교재 출판: 한빛미디어 (YES24, 교보문고, 알라딘 판매)
실천 가능한 습관 (HABITS)
1. 미들웨어 중앙화
미들웨어로 프롬프트 변조를 중앙화하여 일관된 보안 정책을 유지하자. 각 개발자가 독립적으로 검증 로직을 구현하는 대신, 공통 미들웨어에서 관리한다.
2. 단일 책임 원칙 (SRP)
각 미들웨어 데코레이터는 단일 책임 원칙을 유지한다:
- @wrap_model_call은 스키마 변환만
- @before_agent는 보안 검증만
- @dynamic_prompt는 변수 기반 프롬프트 조정만
3. 정적/동적 부분 구분
실행 시점 변수는 @dynamic_prompt로 분리하여, 프롬프트 템플릿의 정적·동적 부분을 명확히 구분하자.
구체적 실행 권고 (RECOMMENDATIONS)
1단계: 스키마 변환부터 시작
기존 LLM 애플리케이션에 @wrap_model_call을 먼저 추가하여, 입력/출력 스키마 변환 검증을 단순화하자.
@wrap_model_call
def transform_response(response):
# 모델 응답 → 비즈니스 로직 스키마로 변환
return {
"result": response.content,
"tokens": response.usage
}2단계: 보안 필터 추가
프롬프트 인젝션이 우려된다면, @before_agent에 정규표현식 필터를 추가해 악의적 입력을 사전에 차단하자.
@before_agent
def validate_prompt(prompt: str) -> str:
# SQL 인젝션 같은 패턴 차단
dangerous_patterns = [r"'; DROP TABLE", r"<script>"]
for pattern in dangerous_patterns:
if re.search(pattern, prompt):
raise ValueError("Suspicious prompt detected")
return prompt3단계: 동적 프롬프트 분리
동적 프롬프트 구성이 필요하면 @dynamic_prompt로 분리하여, 프롬프트 템플릿의 가독성과 유지보수성을 향상시키자.
4단계: 멀티 에이전트로 확장
실전 구현을 위해 LangGraph와 MCP 문서를 함께 학습하여, 단일 미들웨어에서 멀티 에이전트 시스템으로 확장하자.
섹션별 요약
| 시간 | 섹션 | 주요 내용 |
|---|---|---|
| 00:00 | 인트로 | 강의 개요 및 학습 목표 |
| 00:39 | 6.4절 create_agent 살펴보기 | LangChain 미들웨어의 개념 소개 |
| 03:34 | 랭체인의 미들웨어가 제공하는 팁 종류 | 3가지 데코레이터 타입 설명 |
| 09:05 | 첫째 실습: @wrap_model_call | LLM 입출력 스키마 변환 실습 |
| 16:30 | 둘째 실습: @before_model, @dynamic_prompt | 프롬프트 동적 수정 실습 |
| 23:10 | 셋째 실습: 프롬프트 인젝션 차단 (@before_agent) | 보안 검증 미들웨어 구현 |
| 30:52 | 아웃트로 | 정리 및 다음 학습 가이드 |
관련 개념
학습 경로
이 강의는 다음 순서로 학습하는 것을 권장한다:
- LangChain-기초 — 기본 개념 학습
- 이 강의 — 미들웨어 시스템 이해
- LangGraph-실전 — 그래프 기반 에이전트 구축
- MCP-A2A-통신 — 에이전트 간 통신 구현
출처: 공원나연, 『만들면서 배우는 AI 에이전트 개발 입문+실전』, 한빛미디어, 2026