홈 / 문서 / 도구 사용 및 함수 호출

도구 사용 및 함수 호출

모델이 함수를 호출하도록 설정하세요 — 요청 루프, 두 가지 형식, 토큰을 낭비하는 실수.

도구 사용을 통해 모델은 사용자에게 함수 실행을 요청한 뒤 그 결과를 바탕으로 계속 진행할 수 있습니다. 모든 코딩 에이전트는 이 메커니즘을 기반으로 작동합니다.

반복 흐름

  1. 다음을 보냅니다: messages 그리고 tools 사용 가능한 도구를 설명하는 내용을 함께 보냅니다.
  2. 모델은 다음으로 응답합니다: stop_reason: tool_use 및 tool_use 도구 이름과 인수를 지정하는 블록입니다.
  3. 사용자가 이를 실행합니다. 게이트웨이는 사용자 코드를 실행하지 않습니다.
  4. 전체 기록과 함께 다음을 다시 보냅니다: tool_result 블록입니다.
  5. 모델은 최종 답변을 생성하거나 다른 도구를 요청합니다.

도구 정의(Messages 형식)

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "tools": [{
    "name": "get_weather",
    "description": "Current weather for a city. Use when the user asks about weather.",
    "input_schema": {
      "type": "object",
      "properties": {"city": {"type": "string", "description": "City name"}},
      "required": ["city"]
    }
  }],
  "messages": [{"role": "user", "content": "Weather in Paris?"}]
}

결과 반환

{
  "role": "user",
  "content": [{
    "type": "tool_result",
    "tool_use_id": "toolu_01ABC...",
    "content": "18C, light rain"
  }]
}
tool_result 역할이 다음과 같은 메시지에 들어갑니다: user및 tool_use_id 모델 요청의 id와 정확히 일치해야 합니다. id가 일치하지 않으면 잘못된 요청으로 거부됩니다.

OpenAI 형식

이 /v1/chat/completions 엔드포인트는 OpenAI의 tools / tool_calls 형식을 대신 사용하며, 결과는 다음 역할의 메시지로 반환됩니다: tool.

도구 사용 비용

도구 스키마는 턴이 바뀌어도 일정하므로 시스템 프롬프트와 함께 프롬프트 캐싱 적용하기에 적합한 대상입니다.