# 효과적인 "Agents" 구축 방법

> Clean Markdown view of GeekNews topic #18376. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=18376](https://news.hada.io/topic?id=18376)
- GeekNews Markdown: [https://news.hada.io/topic/18376.md](https://news.hada.io/topic/18376.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2024-12-21T15:33:14+09:00
- Updated: 2024-12-21T15:33:14+09:00
- Original source: [anthropic.com](https://www.anthropic.com/research/building-effective-agents)
- Points: 21
- Comments: 2

## Summary

에이전트는 LLM이 작업을 수행하고 도구를 동적으로 제어하는 시스템으로, 유연성과 자율성이 필요한 대규모 작업에 적합합니다. 에이전트 시스템은 증강된 LLM, 프롬프트 체이닝, 라우팅, 병렬화, 오케스트레이터-워커, 평가자-최적화 등의 워크플로우 패턴을 통해 다양한 작업을 처리할 수 있습니다. 성공적인 에이전트 구축을 위해서는 단순성 유지, 투명성 우선, 에이전트-컴퓨터 인터페이스 품질 개선 등의 원칙을 따르고, 필요에 맞는 적합한 시스템을 만드는 것이 중요합니다.

## Topic Body

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

## Comments



### Comment 32617

- Author: savvykang
- Created: 2024-12-23T15:16:07+09:00
- Points: 1

로우코드에 낮설게 하기가 적용된 것 같은데 데이터 스키마, 버전관리 없이는 변경추적이 안될겁니다

### Comment 32615

- Author: curiousotter
- Created: 2024-12-23T15:07:25+09:00
- Points: 1

얕은 경험으로는 외관상 함수형 프로그래밍의 함수를 결합하는 느낌인데, 함수의 I/O (파라미터, 리턴 타입)이 뭐가 될지 모르는 혼돈의 프로그래밍? 같았습니다..  
하면서 끊임 없이 드는 생각은 이걸 굳이 해야하나..? 이렇게까지 지원해야 하나..  
아직까진 에이전틱 시스템이 꼭 필요한 분야가 뭘지 확 체감되진 않네요
