25

Agent 실행 파이프라인 해부

Day 1: AI Agent 개념 & 제조 적용

학습 목표

Agent의 내부 실행 흐름을 단계별로 추적할 수 있다 OpenAI Function Calling의 메시지 프로토콜을 이해한다 Tool 호출 시 주고받는 데이터 구조를 파악한다

Agent 실행 파이프라인 해부

실습에서 만든 Agent가 내부적으로 어떻게 동작하는지 메시지 하나하나를 추적해보자.


질문: "CNC-003 상태 확인해줘"

Round 1: 사용자 질문 전달

에디터 로딩 중...

Round 2: LLM이 Tool 호출 결정

에디터 로딩 중...

주목할 점:

  • contentnull이다. 텍스트 응답 대신 Tool 호출을 선택했다.
  • argumentsJSON 문자열이다. json.loads()로 파싱 필요.
  • id는 이 호출의 고유 식별자. 결과를 돌려줄 때 매칭해야 한다.

Round 3: Tool 실행 결과 전달

에디터 로딩 중...

주목할 점:

  • role"tool"이다 (user도 assistant도 아님).
  • tool_call_id로 어떤 호출의 결과인지 매칭한다.
  • content문자열이다. Tool 함수의 반환값.

Round 4: LLM이 최종 응답 생성

에디터 로딩 중...

tool_callsnull이므로 루프 종료. 이 content가 사용자에게 전달되는 최종 응답이다.


전체 메시지 흐름 요약

에디터 로딩 중...

복수 Tool 호출 케이스

에디터 로딩 중...

LLM은 필요하면 여러 Tool을 동시에 호출할 수 있다. 이것이 Agent가 단순 API 호출과 다른 점이다.


흔한 실수와 디버깅

실수증상해결
tool_call_id 미매칭"Invalid tool_call_id" 에러반드시 동일한 id 사용
arguments 파싱 실패JSON 에러json.loads() 사용
content가 None인데 접근AttributeErrortool_calls 먼저 확인
Tool 결과가 dictTypeError반드시 str로 반환
무한 루프Agent가 안 멈춤최대 반복 횟수 설정