5장. LLM 외부 도구 연동
정리
- 모델은 회사의 데이터, 오늘의 값, 정확한 계산을 모릅니다. 이런 일은 함수(도구)에게 맡기고, 모델은 언제 무엇을 부를지 고릅니다.
- Tool Calling 에서 모델은
tool_calls에 도구 이름과 인자만 담아 돌려주고, 실행은 우리 코드가 합니다. 결과는 같은tool_call_id를 단ToolMessage로 돌려주고 모델을 한 번 더 부릅니다. @tool은 함수 이름, docstring, 타입 힌트로 도구의 이름, 설명, 인자를 만듭니다. 실습 1에서 만든 두 도구는 모델 없이도 불러 시험할 수 있었고, P01 에 어른 2명, 아동 1명은 109.2만 원이었습니다.- 도구 실행기는 없는 도구와 틀린 인자도 멈추지 않고 "오류: …"로 돌려줍니다. 실습 2에서 요청 넷 가운데 둘은
success, 없는 도구와 글자 인자의 둘은error인ToolMessage가 됐습니다. bind_tools로 도구를 묶은 모델은 질문에 맞는 도구를 고릅니다. 실습 3의 예상 출력에서 P01 의 요금(109.2만 원, 표로 계산한 값)을calc_price로 구해 답했고, 인사에는 도구를 부르지 않았습니다.- MCP 는 AI 앱이 도구를 꽂아 쓰는 열린 규격입니다. 호스트 안의 클라이언트가 서버마다 하나씩 붙고, 같은 컴퓨터의 서버는 stdio 로 JSON-RPC 글을 주고받습니다. 실습 4에서 FastMCP 로 만든 52줄짜리 서버의 도구 셋이
get_tools()로 LangChain 도구가 되었고, 폴더 밖 경로 셋과 공유 목록에 없는 파일 하나는 모두 거절됐습니다. - 도구에는 꼭 필요한 권한만 줍니다. 읽기 전용 도구, 폴더 제한과 공유 목록, 되돌릴 수 없는 일의 사람 확인이 세 겹입니다. 프로젝트의 예상 출력에서 에이전트는 네 질문에 도구를 모두 6번 불렀고, 그 기록이 답의 근거가 됩니다.