25분
Agent 실행 파이프라인 해부
Day 1: AI Agent 개념 & 제조 적용
Agent 실행 파이프라인 해부
AI Agent 기초 > Day 1: AI Agent 개념 & 제조 적용
학습 목표
Agent의 내부 실행 흐름을 단계별로 추적할 수 있다 OpenAI Function Calling의 메시지 프로토콜을 이해한다 Tool 호출 시 주고받는 데이터 구조를 파악한다
Agent 실행 파이프라인 해부
실습에서 만든 Agent가 내부적으로 어떻게 동작하는지 메시지 하나하나를 추적해보자.
질문: "CNC-003 상태 확인해줘"
Round 1: 사용자 질문 전달
에디터 로딩 중...
Round 2: LLM이 Tool 호출 결정
에디터 로딩 중...
주목할 점:
content가null이다. 텍스트 응답 대신 Tool 호출을 선택했다.arguments는 JSON 문자열이다.json.loads()로 파싱 필요.id는 이 호출의 고유 식별자. 결과를 돌려줄 때 매칭해야 한다.
Round 3: Tool 실행 결과 전달
에디터 로딩 중...
주목할 점:
role이"tool"이다 (user도 assistant도 아님).tool_call_id로 어떤 호출의 결과인지 매칭한다.content는 문자열이다. Tool 함수의 반환값.
Round 4: LLM이 최종 응답 생성
에디터 로딩 중...
tool_calls가 null이므로 루프 종료.
이 content가 사용자에게 전달되는 최종 응답이다.
전체 메시지 흐름 요약
에디터 로딩 중...
복수 Tool 호출 케이스
에디터 로딩 중...
LLM은 필요하면 여러 Tool을 동시에 호출할 수 있다. 이것이 Agent가 단순 API 호출과 다른 점이다.
흔한 실수와 디버깅
| 실수 | 증상 | 해결 |
|---|---|---|
| tool_call_id 미매칭 | "Invalid tool_call_id" 에러 | 반드시 동일한 id 사용 |
| arguments 파싱 실패 | JSON 에러 | json.loads() 사용 |
| content가 None인데 접근 | AttributeError | tool_calls 먼저 확인 |
| Tool 결과가 dict | TypeError | 반드시 str로 반환 |
| 무한 루프 | Agent가 안 멈춤 | 최대 반복 횟수 설정 |