5장. LLM 외부 도구 연동
용어 짚고 가기
도구(tool)모델이 부를 수 있게 이름과 설명을 붙여 둔 함수입니다. 계산, 표 찾기, 파일 읽기처럼 모델이 혼자 할 수 없는 일을 맡습니다. tool 은 "연장, 도구"라는 뜻입니다.Tool Calling(tool calling)모델이 답 대신 "어느 도구를 어떤 값으로 불러 달라"는 요청을 돌려주는 기능입니다. calling 은 "부르기"라는 뜻입니다. Function Calling(함수 호출)이라고도 부릅니다.tool_calls모델이 돌려준AIMessage안의 도구 호출 요청 목록입니다. 요청마다 도구 이름(name), 인자(args), 요청 번호(id)가 들어 있습니다.인자(argument)함수를 부를 때 넘기는 값입니다. argument 는 원래 "논거, 근거로 내놓는 것"이라는 뜻입니다. 도구 호출에서는{"code": "P01", "adults": 2}같은 사전으로 오갑니다.데코레이터(decorator)함수 위에@이름으로 얹어 그 함수에 기능을 덧입히는 파이썬 문법입니다. decorate 는 "꾸미다"라는 뜻입니다.@tool보통 함수를 LangChain 도구로 바꾸는 데코레이터입니다. 함수 이름, docstring, 타입 힌트로 도구의 이름, 설명, 인자 스키마를 만듭니다.docstring(documentation string)함수 첫머리에 따옴표 세 개로 적는 설명 글입니다. documentation(문서)과 string(글자열)을 합친 말입니다. 도구에서는 모델이 읽는 설명이 됩니다.bind_tools모델에 도구 목록을 묶어, 요청마다 도구 설명서가 함께 가게 하는 메서드입니다. bind 는 "묶다"라는 뜻입니다.ToolMessage도구를 실행한 결과를 모델에게 돌려줄 때 쓰는 메시지입니다. 1장에서 본 system, human, ai 에 이어 넷째 역할(tool)입니다.tool_call_idToolMessage가 어느 도구 호출 요청의 결과인지 가리키는 요청 번호입니다. id 는 identifier(식별자)의 줄임말입니다.에이전트(agent)모델이 도구를 부르고 결과를 읽고 다시 부르는 고리를, 일이 끝날 때까지 스스로 돌리는 프로그램입니다. agent 는 "대신 일을 맡아 하는 사람, 대리인"이라는 뜻입니다.create_agentLangChain 1.x 에서 모델과 도구 목록으로 에이전트를 만드는 함수입니다.langchain.agents에 있습니다.MCP(Model Context Protocol)모델 맥락 규약입니다. Model(모델), Context(맥락, 모델에게 건네는 자료), Protocol(규약)의 머리글자입니다. AI 앱이 바깥의 도구와 자료를 같은 방식으로 꽂아 쓰도록 정한 열린 규격입니다.프로토콜(protocol)프로그램끼리 무엇을 어떤 순서와 형식으로 주고받을지 정한 약속입니다. 원래 외교에서 지키는 의례와 절차를 뜻하는 말입니다.MCP 서버(MCP server)도구와 자료를 MCP 규격으로 내놓는 프로그램입니다. server 는 "시중드는 쪽, 내주는 쪽"이라는 뜻입니다.MCP 클라이언트(MCP client)MCP 서버에 붙어 도구 목록을 받고 도구를 부르는 쪽입니다. client 는 "의뢰인, 맡기는 쪽"이라는 뜻입니다.호스트(host)MCP 클라이언트를 품고 사용자와 만나는 AI 앱입니다. 이 장에서는 우리가 만드는 챗봇 프로그램입니다. host 는 "손님을 맞는 주인"이라는 뜻입니다.stdio(standard input/output)표준 입출력입니다. 프로그램이 글을 받는 표준 입력(stdin)과 글을 내보내는 표준 출력(stdout)을 함께 부르는 말입니다. MCP 의 기본 전송 방식입니다.JSON-RPC(JSON Remote Procedure Call)JSON 으로 "원격 프로시저 호출"을 주고받는 형식입니다. Remote(멀리 있는), Procedure(절차, 함수), Call(부르기)의 머리글자로, 다른 프로그램의 함수를 부르는 요청과 답을 JSON 으로 적습니다.FastMCP파이썬mcp패키지에 든 MCP 서버를 쉽게 만드는 틀입니다. fast 는 "빠른"이라는 뜻으로, 몇 줄로 서버를 만든다는 데서 붙은 이름입니다.langchain-mcp-adaptersMCP 서버의 도구를 LangChain 도구로 바꿔 주는 패키지입니다. adapter 는 "맞지 않는 두 단자를 이어 주는 연결 부품"이라는 뜻입니다.MultiServerMCPClient여러 MCP 서버에 한꺼번에 붙는 langchain-mcp-adapters 의 클라이언트입니다. multi server 는 "여러 서버"라는 뜻입니다.비동기(asynchronous)기다리는 동안 다른 일을 할 수 있게 짠 실행 방식입니다. 파이썬에서는async def로 함수를 만들고await로 기다리며,asyncio.run()으로 시작합니다. asynchronous 는 "시간을 맞추지 않는"이라는 뜻입니다.최소 권한(least privilege)일에 꼭 필요한 권한만 주는 원칙입니다. privilege 는 "특권, 권한"이라는 뜻입니다.