▶️25

[영상] LangChain Agent 업무자동화 적용

Day 4: 설비 조회 Agent

학습 목표

LangChain Agent에서 @tool 데코레이터로 설비 조회 Tool을 정의하고 에이전트에 연결할 수 있다 AgentExecutor의 verbose=True 모드로 Thought-Action-Observation 로그를 추적한다 여러 설비의 상태를 동시에 조회하는 병렬 Tool 호출을 LangGraph로 구현한다 Tool 호출 실패 시 대체 응답을 생성하는 에러 핸들링 전략을 적용한다

영상 핵심 정리 — LangChain Agent로 설비 조회 자동화

이 영상은 @tool 데코레이터로 설비 조회 Tool을 정의하고, LangGraph ReAct 에이전트에 연결해 실제 MES 연동 구조를 단계별로 구현하는 실습이다.


1. @tool 데코레이터로 Tool 정의

from langchain_core.tools import tool
from typing import Literal

@tool
def get_equipment_status(
    equipment_id: str,
    metric: Literal['temperature', 'vibration', 'rpm', 'alarm', 'all'] = 'all'
) -> dict:
    """
    제조 설비의 실시간 상태를 MES에서 조회합니다.
    설비 번호(예: CNC-A320, PRESS-B102)와 조회 지표를 지정하세요.
    """
    mock_data = {
        'CNC-A320': {
            'temperature': 68.5, 'vibration': 2.1,
            'rpm': 8500, 'alarm': 'E-1042'
        }
    }
    data = mock_data.get(equipment_id, {'error': '설비를 찾을 수 없습니다'})
    return data if metric == 'all' else {metric: data.get(metric)}

2. LangGraph 에이전트 연결

from langgraph.prebuilt import create_react_agent
from langchain_google_genai import ChatGoogleGenerativeAI

llm = ChatGoogleGenerativeAI(model='gemini-2.0-flash', temperature=0)
tools = [get_equipment_status, list_active_alarms]
agent = create_react_agent(model=llm, tools=tools)

3. 개발 단계 Mock → 프로덕션 MES 전환

단계Tool 구현목적
1 (Mock)하드코딩 딕셔너리 반환에이전트 로직 검증
2 (Stub)랜덤 값 반환엣지 케이스 테스트
3 (Staging)테스트 MES API실제 연동 검증
4 (Production)실제 MES API실 운영

함정 주의: @tool 함수의 반환 타입이 문자열이 아니면 LangChain이 자동으로 str() 변환을 한다. 복잡한 딕셔너리는 json.dumps(result, ensure_ascii=False)로 명시적 직렬화해야 한국어가 깨지지 않는다.


다음 task와의 연결

다음 'LangChain Agent로 설비 조회 Tool 만들기' 실습에서 이 코드를 실제 Neon PostgreSQL 기반 설비 DB에 연결하고 실시간 조회 기능을 완성한다.

AI로 학습하기 — 꿀팁
🤖@tool docstring 초안 생성 요청AI 학습 팁

LangChain @tool 데코레이터의 docstring을 AI 에이전트에게 작성하게 하고, 에이전트가 설비 5대를 동시 조회하는 병렬 ToolNode 시나리오에서 각 도구가 올바로 선택되는지 확인하세요.

LangChain @tool 데코레이터를 사용해 제조 현장 설비 5대(CNC·프레스·컨베이어·용접기·검사기)의 상태를 조회하는 도구 5개를 설계해줘. 각 도구의 docstring이 LLM이 올바른 도구를 선택하기에 충분히 구체적이고 명확하도록 작성하고, LangGraph ToolNode로 병렬 호출할 때의 코드 구조도 보여줘.
이 팁이 도움이 됐나요?
핵심 포인트
  • @tool 데코레이터의 docstring이 LLM이 도구를 선택하는 근거가 된다 — 정확하고 구체적인 docstring 작성이 에이전트 성능의 핵심이다
  • LangGraph의 ToolNode는 병렬 Tool 호출을 자동 처리해 설비 5대를 동시 조회해도 코드 변경 없이 작동한다
  • Tool 호출 결과에 에러 메시지가 포함되면 LLM이 자동으로 재시도하거나 대안을 찾는 복원력을 발휘한다
  • 실제 MES API 연동 전에 Mock 함수로 에이전트 로직을 먼저 검증하면 개발 사이클이 10배 이상 빨라진다