AI Agent
LLM이 도구를 사용하여 자율적으로 추론하고 행동하는 시스템
1. Agent란
1.1 LLM vs Agent
| LLM (단독) | Agent | |
|---|---|---|
| 동작 | 입력 → 출력 (1회) | 관찰 → 추론 → 행동 → 반복 |
| 도구 | ❌ | ✅ API, 코드 실행, 웹 검색, 파일 조작 |
| 외부 데이터 | ❌ (학습 데이터만) | ✅ 실시간 검색/조회 |
| 자율성 | 없음 | 목표를 향해 자율적으로 단계 수행 |
1.2 Agent 동작 패턴
2. 핵심 패턴
2.1 ReAct (Reasoning + Acting)
Question: Proxmox 클러스터의 노드별 디스크 사용량을 확인해줘
Thought: 노드 목록을 먼저 확인해야 함
Action: api_call("GET /nodes")
Observation: [pve1, pve2, pve3]
Thought: 각 노드의 디스크 상태를 확인해야 함
Action: api_call("GET /nodes/pve1/status")
Observation: {disk: 75%, ...}
Thought: 모든 노드 정보를 수집했음. 정리하여 답변
Answer: pve1: 75%, pve2: 92%, pve3: 45%. pve2가 임계값 초과.
2.2 Plan-and-Execute
복잡한 태스크를 먼저 계획을 세우고 단계별로 실행.
3. Tool Use / Function Calling
3.1 Function Calling이란
LLM이 "이 도구를 이 파라미터로 호출해야 한다"고 구조화된 형태로 출력하면, 시스템이 실제로 도구를 실행하는 방식.
// LLM 출력 (Function Call)
{
"function": "get_server_status",
"arguments": {
"hostname": "pve1",
"metric": "disk_usage"
}
}
// 시스템이 실행 후 결과를 LLM에 전달
{"disk_usage": "75%", "total": "500GB", "used": "375GB"}
3.2 대표 API
| 플랫폼 | 명칭 | 특징 |
|---|---|---|
| OpenAI | Function Calling / Tools | JSON Schema 기반 도구 정의 |
| Anthropic | Tool Use | XML + JSON 하이브리드 |
| Function Calling | Gemini API |
4. Agent 프레임워크
4.1 LangChain / LangGraph
| 컴포넌트 | 역할 |
|---|---|
| LangChain | LLM + 도구 + 체인을 연결하는 프레임워크 |
| LangGraph | LangChain 위에 그래프 기반 워크플로우 구축. 상태 관리, 분기, 반복 |
| LangSmith | 관찰/디버깅/평가 플랫폼 |
4.2 CrewAI
멀티 에이전트 협업 프레임워크. 여러 Agent가 역할을 나누어 협력.
4.3 프레임워크 비교
| LangChain/LangGraph | CrewAI | AutoGen | |
|---|---|---|---|
| 초점 | 체인/그래프 오케스트레이션 | 멀티 에이전트 협업 | 대화 기반 멀티 에이전트 |
| 난이도 | 중간~높음 | 쉬움 | 중간 |
| 유연성 | ✅ 최고 | 중간 | 중간 |
| 프로덕션 | ✅ (LangGraph) | 성장 중 | 실험적 |
5. MCP (Model Context Protocol)
5.1 MCP란
Anthropic이 제안한 LLM과 외부 도구를 연결하는 표준 프로토콜.
5.2 핵심 구조
| 컴포넌트 | 역할 |
|---|---|
| MCP Client | LLM 측. 도구 발견, 호출, 결과 수신 |
| MCP Server | 도구 제공 측. 도구 목록, 실행, 결과 반환 |
| Transport | 통신 채널 (stdio, SSE) |
5.3 왜 MCP인가
| 기존 방식 | MCP |
|---|---|
| 각 LLM마다 다른 도구 연결 방식 | 표준화된 프로토콜 |
| 도구 추가마다 코드 수정 | MCP Server 추가만 하면 됨 |
| LLM 교체 시 도구 연동 재구축 | 프로토콜이 같으므로 호환 |
6. 메모리 관리
| 유형 | 설명 | 구현 |
|---|---|---|
| 단기 메모리 | 현재 대화의 히스토리 | 컨텍스트 윈도우 내 메시지 |
| 장기 메모리 | 과거 대화에서 추출한 요약/사실 | Vector DB, 요약 저장 |
| 작업 메모리 | 현재 태스크의 중간 결과 | 상태 변수, scratchpad |
7. Agent 안전성
| 위험 | 설명 | 대응 |
|---|---|---|
| 무한 루프 | Agent가 목표를 달성하지 못하고 반복 | 최대 반복 횟수 제한 |
| 위험한 행동 | 파일 삭제, 무단 API 호출 | 허용 도구 화이트리스트, 확인 단계 |
| 환각 기반 행동 | 잘못된 추론으로 엉뚱한 도구 호출 | Human-in-the-loop |
| 비용 폭발 | 반복 호출로 API 비용 급증 | 비용 상한 설정 |