에이전트란 무엇인가?
- 에이전트의 정의는 다양하지만 두 가지로 나눌 수 있음:
-
워크플로우(Workflows): 사전 정의된 코드 경로를 통해 LLM과 도구가 조율됨
-
에이전트(Agents): LLM이 작업 수행 및 도구 사용을 동적으로 제어
- Anthropic에서는 이 두 가지를 모두 **에이전트 시스템(Agentic Systems)**으로 분류하며, 유연성과 자율성에서 중요한 차이를 둠
언제 에이전트를 사용해야 하는가?
- 단순한 솔루션이 가능하다면 복잡성을 최소화하는 것이 중요함
-
워크플로우: 예측 가능한 작업을 처리할 때 유용하며, 일관성과 안정성 제공
-
에이전트: 대규모에서 유연성과 모델 중심 의사결정이 필요할 때 적합
- 대부분의 경우, 단순히 LLM 호출을 최적화하거나 컨텍스트 예제를 활용하는 것으로 충분함
프레임워크 사용 가이드
-
대표 프레임워크:
- 프레임워크의 장점:
- 단점:
- 복잡성을 추가하거나 디버깅을 어렵게 할 수 있음
-
추천: 직접 LLM API로 시작하고, 프레임워크를 사용하더라도 기저 코드를 이해해야 함
에이전트 시스템 구성 요소
증강된 LLM (Augmented LLM)
-
특징: 검색, 도구 사용, 메모리 기능을 추가로 갖춤
-
구현 방법:
주요 워크플로우 패턴
- 프롬프트 체이닝(Prompt Chaining)
- 작업을 고정된 하위 단계로 나눠 순차적으로 처리
-
사용 사례:
- 마케팅 문구 생성 후 번역
- 문서 초안 작성 후 검토
- 라우팅(Routing)
- 입력 데이터를 분류해 적합한 작업으로 전달
-
사용 사례:
- 고객 지원 문의 분류 (일반 질문, 환불 요청, 기술 지원)
- 간단한 질문은 작은 모델로, 복잡한 질문은 더 강력한 모델로 라우팅
- 병렬화(Parallelization)
- 작업을 분리하거나 동일 작업을 여러 번 실행
-
사용 사례:
- 코드 취약점 검토 시 여러 프롬프트 사용
- 사용자 입력을 분리하여 필터링 및 응답
- 오케스트레이터-워커(Orchestrator-Workers)
- 중앙 LLM이 작업을 분해해 워커 LLM에 할당하고 결과를 종합
-
사용 사례:
- 복잡한 코딩 작업에서 파일 수정
- 다중 정보 검색 작업
- 평가자-최적화(Evaluator-Optimizer)
- LLM 응답을 평가하고 피드백을 제공해 반복적으로 개선
-
사용 사례:
- 문학 번역에서 번역 품질 개선
- 다중 검색 및 분석 작업
에이전트
- 에이전트는 작업을 계획하고 독립적으로 실행, 필요 시 인간과 상호작용
-
특징:
- 도구 사용을 통해 환경으로부터 "진실"을 얻어 진행 상황 평가
- 작업 중 검사 및 중단 조건 설정 가능
-
사용 사례:
- 복잡한 코딩 에이전트
- Claude가 컴퓨터에서 작업을 수행하는 구현
패턴 결합 및 사용자 정의
- 위 패턴은 특정 상황에 맞게 조정 및 결합 가능
- 복잡성은 결과 개선이 입증될 때만 추가해야 함
요약
- LLM 분야에서 성공은 가장 복잡한 시스템을 구축하는 것이 아니라, 필요에 맞는 적합한 시스템을 만드는 것에 달려 있음
-
간단한 프롬프트로 시작해 평가를 통해 최적화하며, 단순한 솔루션으로 부족할 때만 다단계 에이전트 시스템 추가를 고려해야 함
- 에이전트 구현 시 핵심 원칙
-
단순성 유지: 에이전트의 설계를 간단하게 유지
-
투명성 우선: 에이전트의 계획 단계를 명확히 드러냄
-
에이전트-컴퓨터 인터페이스(ACI) 품질 개선: 도구 문서화와 테스트를 철저히 수행
- 프레임워크 활용과 구현 전략
- 프레임워크는 초기 구현에 유용하나, 추상화 계층을 줄이고 기본 구성 요소로 시스템을 구축하는 것도 고려해야 함
- 위 원칙을 따르면, 강력하면서도 신뢰할 수 있고 유지관리 가능한 에이전트를 만들 수 있음
고객 사례: 실무에서의 에이전트 활용
- A. 고객 지원
- 자연스러운 대화 흐름과 외부 데이터 통합을 통해 효과적인 해결책 제공
-
장점:
- 성공적 해결 비율로 측정 가능
- 사용량 기반 가격 모델 적용 가능
- B. 코딩 에이전트
- 코드 솔루션은 자동화된 테스트를 통해 검증 가능
-
장점:
- 테스트 결과를 피드백으로 활용
- 문제 공간이 명확하고 구조적임
- C. 도구 설계 및 최적화
- LLM의 도구 사용 방식을 고려해 설계
-
추천 방법:
- 직관적이고 간결한 매개변수 이름 사용
- 테스트 및 반복적 개선
- 도구 정의에 예제, 가장자리 사례 포함