15분
눈은 있는데 손이 없다
Day 2: Tool 정의 & Function Calling
눈은 있는데 손이 없다
AI Agent 기초 > 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을 안 줬다. 그래서 "추측"만 할 수 있었다.
▲ 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을 호출했다.
오늘 배울 것
김 대리의 실패에서 배운다.
- JSON Schema: Tool의 청사진을 제대로 그리기
- Function Calling: OpenAI에게 Tool을 알려주는 방법
- 제조 Tool 설계: 현장에서 통하는 Tool 만들기
- 에러 방어: 절대 에러를 사용자에게 보여주지 않기
- 테스트: 현장 배포 전 검증 방법
Tool을 제대로 만드는 것이 Agent의 50%다. 나머지 50%는 내일 배울 추론 로직이다.
AI로 학습하기 — 꿀팁
🧪나쁜 Tool 설계 실패 사례 제조 심화AI 학습 팁
잘못 설계된 Tool이 제조 현장에서 만드는 구체적인 장애 시나리오를 통해 Tool 설계 원칙을 체감하세요.
공장 설비 제어 Tool을 잘못 설계했을 때 발생하는 실패 사례 3가지를 작성해줘. 각 사례마다 나쁜 Schema 예시(실제 JSON), 그 Schema로 Agent가 잘못 행동하는 과정, 개선된 Schema 예시를 포함하고, 특히 설비 정지 명령처럼 되돌릴 수 없는 작업의 안전 설계 원칙을 강조해줘.
이 팁이 도움이 됐나요?