15

눈은 있는데 손이 없다

Day 2: Tool 정의 & Function Calling

학습 목표

Tool이 Agent에게 왜 핵심인지 체감한다 나쁜 Tool 설계가 초래하는 문제를 이해한다

눈은 있는데 손이 없다

"Agent 만들었는데 맨날 틀려요."

김 대리가 만든 설비 관리 Agent. 데모에서는 잘 됐다. 실제 현장에 배포했더니 난리가 났다.

현장 반장: "CNC-007 온도 얼마야?"
Agent: "일반적으로 CNC 장비의 정상 온도는 40-60도입니다."

현장 반장: "일반적인 게 아니라 지금 CNC-007 온도!"
Agent: "죄송합니다. CNC-007의 정확한 온도를 확인하려면
       MES 시스템을 확인해 주세요."

현장 반장: "이거 왜 만든 거야?"

Agent한테 MES를 조회하는 Tool을 안 줬다. 그래서 "추측"만 할 수 있었다.


Function Calling 흐름 ▲ OpenAI Function Calling의 요청-응답 흐름

그다음 시도

김 대리가 Tool을 추가했다. 하지만...

현장 반장: "PRESS-005 유압 확인해"
Agent: [get_data("PRESS-005") 호출]
  → "Object of type datetime is not JSON serializable"

현장 반장: "뭐라는 거야?"

Tool을 만들었지만, 에러가 그대로 사용자에게 노출됐다. Tool 설계가 엉망이었다.


세 번째 시도

에러 처리를 추가했다. 그런데...

현장 반장: "설비 상태 확인해줘"
Agent: [get_equipment_info("설비 상태") 호출]
  → "설비 ID를 입력해주세요"

현장 반장: "CNC-003 상태!"
Agent: [get_equip("CNC-003") 호출]
  → "알 수 없는 함수입니다"

Tool 이름이 일관성이 없었다. get_equipment_info, get_equip, get_data... LLM이 혼동해서 엉뚱한 Tool을 호출했다.


오늘 배울 것

김 대리의 실패에서 배운다.

  1. JSON Schema: Tool의 청사진을 제대로 그리기
  2. Function Calling: OpenAI에게 Tool을 알려주는 방법
  3. 제조 Tool 설계: 현장에서 통하는 Tool 만들기
  4. 에러 방어: 절대 에러를 사용자에게 보여주지 않기
  5. 테스트: 현장 배포 전 검증 방법

Tool을 제대로 만드는 것이 Agent의 50%다. 나머지 50%는 내일 배울 추론 로직이다.

AI로 학습하기 — 꿀팁
🧪나쁜 Tool 설계 실패 사례 제조 심화AI 학습 팁

잘못 설계된 Tool이 제조 현장에서 만드는 구체적인 장애 시나리오를 통해 Tool 설계 원칙을 체감하세요.

공장 설비 제어 Tool을 잘못 설계했을 때 발생하는 실패 사례 3가지를 작성해줘. 각 사례마다 나쁜 Schema 예시(실제 JSON), 그 Schema로 Agent가 잘못 행동하는 과정, 개선된 Schema 예시를 포함하고, 특히 설비 정지 명령처럼 되돌릴 수 없는 작업의 안전 설계 원칙을 강조해줘.
이 팁이 도움이 됐나요?