Agent

LLM의 도구 호출이 정확히 뭐하는 걸까?

디벨로펄 2025. 11. 30.
반응형

도구 호출이란?

LLM이 이 작업은 바인딩해둔 도구를 사용해야 한다고 판단하고 그 도구의 형식에 맞는 JSON을 생성하는 것이다.

 

 

이 도구로 수행할 수 있다.

이 도구의 출력 형식을 사용하겠다.

정도의 의미가 된다.

 

실제로 코드를 실행하는 것은 아니며,

실제 실행까지 하려면 function tool + 코드 연동이 필요하다.

 

📌 도구 호출은 "도구 목록에서 하나 골라 응답하겠다"는 신호

bind_tools()로 등록한 도구는 LLM 입장에서 보면 사용 가능한 함수처럼 보이는 것들이다.

llm.bind_tools([PromptInstructions])

 

llm 내부에서는 

- 사용가능한 도구 목록 : 

  PromptInstructions -> args로 objective, variables, contraints, requirements 스키마 가진 함수 

 + 더해서 각 args별 타입 등등을 모두 가지고 있게 됨

 

이후 응답 생성할 때

이 요청은 PromptInstructions 구조로 나타낼 수 있겠네? 그럼 이 도구 호출하면 되겠다!

라고 리턴하게 된다.

 

예시로 다음과 같이 리턴된다.

{
  "tool": "PromptInstructions",
  "arguments": {
    "objective": "프롬프트 목적",
    "variables": ["input", "context"],
    "constraints": ["길이 제한"],
    "requirements": ["구조 유지"]
  }
}

📌 LLM 이 알아야하는 정보

 

 

  • 도구 이름 (PromptInstructions)
  • 설명
  • 입력 스키마 (objective/variables/... 형태)
  • 언제 이 도구를 사용해야 하는지 힌트

 

LLM은 대답을 생성할 때:

  • 도구를 사용할지 / 단순 텍스트로 답할지 결정하고
  • 도구를 선택하면 그 스키마에 맞춰 JSON을 생성함.

 

 

✔ 결론 요약

1) bind_tools() → LLM에게 “사용 가능한 도구 목록”을 등록

2) LLM은 그 도구의 스키마(입력 형식)를 알고 있음

  • bind_tools()할 떄 해당 정보를 같이 입력하게 됨

3) 사용자가 질문하면

  • “이건 도구로 대답해야겠다”
  • “이건 그냥 텍스트로 대답하면 되겠다”
    를 LLM이 판단

4) 도구로 답한다면 “도구 호출 JSON”을 만들어서 응답

 

반응형

댓글