Phase 5 · Agent란 무엇인가¶
예상 소요 3시간 · 난이도 ⭐⭐⭐
스토리¶
회의실. 커피가 식어가는 오후. CTO가 화면에 본사 이메일 한 통을 띄웁니다.
본사 CTO
"요즘 Agentic AI라는 게 유행입니다. 본사에서는 이걸 쿠버네티스 운영 자동화에 써볼 수 있을지 각 지사에 검토를 요청합니다. 답변 기한 다음 주. 한밭푸드는 여러분이 주력이 되어 답변을 준비해주세요."
박대리가 손을 듭니다.
박대리
"저... Agent랑 LLM이랑 뭐가 다른 거죠?"
김팀장
"그게 정확히 오늘 배울 주제예요."
핵심 질문¶
- LLM(단순 챗봇)과 Agent는 무엇이 다른가?
- ReAct 패턴이란 무엇이며, 왜 중요한가?
- Tool calling으로 Agent가 외부 세계와 상호작용하는 방식은?
- 우리가 만들 Agent는 어떤 일을 할 수 있는가?
학습 목표¶
- LLM 호출과 Agent의 구조적 차이를 생각 → 행동 → 관찰 → 생각 루프로 설명한다
- Azure OpenAI Python SDK로 기본 Chat Completion을 호출한다
- Tool calling(Function calling)으로 LLM이 외부 함수를 호출하게 만든다
- Pod 로그를 조회하는 간단한 운영 Agent를 완성한다
세부 단원¶
Phase 5-1 · LLM vs Agent, ReAct 패턴 (1시간)¶
| 소단원 | 활동 |
|---|---|
| 정의 비교 | LLM = 텍스트 입력 → 텍스트 출력 / Agent = 루프 있는 LLM |
| ReAct 패턴 | Reasoning + Acting. 생각(Thought) → 행동(Action) → 관찰(Observation) → 다시 생각 |
| 사례 분석 | "서울 오늘 날씨 알려줘" 질문에 LLM vs Agent가 각각 어떻게 답하는지 비교 |
| 토론 | 어떤 업무에 Agent가 적합하고, 어떤 업무는 부적합한가? |
ReAct 이해하기 좋은 비유
- LLM: 눈 감고 떠오르는 대로 답하는 사람
- Agent: 질문 → 관련 자료 검색 → 자료 읽고 → 메모하고 → 다시 검색 → 답변하는 사람
Phase 5-2 · Azure OpenAI 기본 호출 (1시간)¶
| 소단원 | 활동 |
|---|---|
| Python SDK 설정 | pip install openai 확인, 환경변수 로드 |
| 기본 Chat Completion | system + user 메시지로 기본 호출 |
| 대화 맥락 유지 | messages 배열에 대화 이력 누적 |
| 파라미터 실험 | temperature, max_tokens, top_p 변화 관찰 |
| 한계 체감 | 질문: "이 클러스터의 Pod 상태 알려줘" → LLM은 모른다 |
이 단계에서 깨달아야 할 것
LLM 단독으로는 한밭푸드 클러스터 상태를 절대 알 수 없습니다. 자체 지식(훈련 데이터)만으로 답하기 때문입니다. 이게 Agent가 필요한 이유입니다.
Phase 5-3 · Tool calling으로 Agent 만들기 (1시간)¶
이 단계에서 첫 번째 진짜 Agent를 만듭니다.
| 소단원 | 활동 |
|---|---|
| Tool 정의 | JSON Schema로 get_pod_logs(namespace, pod_name) 함수 명세 작성 |
| Tool 구현 | Python 함수로 kubectl logs 실행 (subprocess) 후 결과 반환 |
| Agent 루프 구현 | LLM 응답에서 tool_call 감지 → Tool 실행 → 결과를 다시 LLM에 전달 → 최종 답변 |
| 실전 실험 | "order-api 파드의 최근 에러 로그 3개 요약해줘" → Agent가 스스로 명령어 결정 후 실행 |
agent.py 구조 (개념)
# 의사 코드
while True:
response = llm.complete(messages, tools=[get_pod_logs])
if response.has_tool_call():
result = execute_tool(response.tool_call)
messages.append(result)
else:
print(response.content)
break
예상 결과물¶
-
phase5/basic_chat.py— 기본 Azure OpenAI 호출 스크립트 -
phase5/log_agent.py—get_pod_logsTool을 가진 운영 Agent - Agent가 실제 Pod 로그를 분석해서 한국어 요약을 출력한 터미널 캡처
토론 주제 (Phase 내)¶
| 주제 | 예시 질문 |
|---|---|
| Agent의 위험성 | 잘못된 명령어를 실행하면 어떻게 막나? (kubectl delete...) |
| 비용 | 매 호출마다 토큰 사용료가 발생. 어떤 작업에 쓰는 게 타당한가? |
| 신뢰도 | LLM이 환각(hallucination)으로 틀린 로그 분석을 하면? |