Workflow → Agent 전환하기
Workflow vs Agent 개념
Anthropic 블로그 정의 (2024년 12월)
•
Workflow: 개발자가 지정한 단계에 따라 흐름
•
Agent: AI가 스스로 다음 단계 결정
시각적 비교
Workflow 흐름
•
질문 입력 → FAQ 확인 → 답변 생성 or 문서명 추출 → 벡터 스토어 검색 → 답변 생성
•
개발자 지정 순서: 정확히 설정된 대로 진행
Agent 흐름
•
질문 입력 → AI가 주어진 도구들을 자율적으로 사용하여 답변 결정
•
AI 자율 판단: 충분하다고 생각할 때까지 도구 사용
개발 접근법 변화
MCP 등장 이후 트렌드
•
도구 개발 집중: 프롬프트보다 도구 개발에 집중
•
프롬프트 중요도 감소: 모델 성능 향상으로 복잡한 프롬프트 불필요
•
AI 자율성 활용: 도구를 최대한 잘 사용하는 것이 핵심
코드 전환 과정
파일 설정
•
기존 workflow 복사: 동일한 작업을 다른 방식으로 구현
•
파일명 변경: workflow → agent
State 변경
MessageState 도입
•
메시지 리스트: System, Human, AI, Tool 메시지 포함
•
add_message: 리스트 뒤에 메시지 추가
•
AgentState → MessageState: 상속 관계로 단순화
노드를 도구로 전환
CheckFAQ Tool
•
@tool 데코레이터: 함수를 도구로 변환
•
파라미터 변경: state 대신 question 파라미터
•
docstring: 도구 설명 추가
GetDocumentName Tool
•
문자열 반환: 문서명 반환
•
docstring: 상세한 도구 설명
RetrieveDocs Tool 구현 방식
방식 1: 직접 구현
•
@tool 데코레이터: question과 document_name 파라미터
•
필터링 기능: 문서명 기반 필터링 가능
방식 2: createRetrieverTool
•
LangChain 함수: 기존 retriever를 도구로 변환
•
한계: 문서 필터링 기능 부족
•
권장하지 않음: 직접 구현이 더 효율적
Agent 생성
create_react_agent 사용
•
LangGraph 제공: 성능 향상된 에이전트
•
자체 구현 대비: 권장되는 방식
•
시스템 프롬프트: "주어진 도구를 사용하여 답변"
그래프 구조 변화
•
Edge 불필요: AI가 자율적으로 도구 순서 결정
•
단일 노드: 에이전트 하나만 존재
•
도구 통신: 연속적인 도구 사용
실행 및 테스트
Message 입력 방식
•
리스트 형태: 기존 question 대신 메시지 리스트
•
HumanMessage: 사용자 질문을 메시지로 변환
스트리밍 실행
•
사고 과정 확인: AI의 판단 과정 실시간 관찰
•
도구 사용 순서: FAQ → 문서명 → 검색 → 답변
성능 비교
자율적 판단
•
순서 지정 없음: 개발자가 순서를 명시하지 않음
•
효율적 처리: AI가 스스로 최적 경로 선택
도구 활용
•
필터링 기능: 커스텀 도구가 더 효율적
•
createRetrieverTool 한계: 문서명 필터링 미지원
장단점 비교
Agent의 장점
•
개발 용이성: 순서 지정 불필요
•
유연성: AI의 자율적 판단
•
확장성: 도구 추가 시 자동 활용
Agent의 단점
•
토큰 소비 증가: 메시지와 도구 메시지로 인한 비용 상승
•
예측 어려움: AI 판단에 의존
Workflow의 특징
•
명확한 순서: 담당자가 업무 순서를 정확히 알고 있는 경우
•
반복 작업: 자동화된 반복 업무에 적합
•
토큰 효율성: 정해진 경로로 토큰 절약
전략적 선택 기준
사용 사례별 판단
•
반복 업무: Workflow 권장
•
창의적 작업: Agent 권장
•
비용 고려: 토큰 사용량 vs 개발 효율성
미래 트렌드
MCP 활용 확산
•
호스팅 서비스: 다양한 회사에서 MCP 제공
•
팀 간 공유: 개발팀뿐만 아니라 다른 팀에서도 활용
•
도구 중심: 도구 개발이 주요 트렌드
비용 효율성 개선
•
모델 성능 향상: GPT-4o mini > GPT-3.5 성능
•
비용 감소: 전체적인 AI 사용 비용 하락
•
장기적 관점: 에이전트의 확장성이 더 유리