Claude는 외부 클라이언트 측 도구 및 함수와 상호 작용할 수 있어 Claude에 사용자 지정 도구를 제공하여 더 다양한 작업을 수행할 수 있습니다.

도구 사용 공개 베타

도구 사용 기능이 이제 공개 베타 버전으로 제공된다는 소식을 전해 드립니다! 이 기능에 액세스하려면 API 요청에 anthropic-beta: tools-2024-05-16 헤더를 포함해야 합니다.

스트리밍, 도구 사용 강제이미지가 이제 지원됩니다! 자세한 내용은 베타 버전 기록을 참조하세요.

앞으로 몇 주 동안 이 오픈 베타 버전을 반복할 예정이므로 여러분의 모든 피드백에 감사드립니다. 이 양식을 사용하여 아이디어와 제안을 공유해 주세요.

다음은 Messages API를 사용하여 Claude에 도구를 제공하는 방법의 예입니다:

curl https://api.anthropic.com/v1/messages \
  -H "content-type: application/json" \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: tools-2024-05-16" \
  -d '{
    "model": "claude-3-opus-20240229",
    "max_tokens": 1024,
    "tools": [
      {
        "name": "get_weather",
        "description": "주어진 위치의 현재 날씨를 가져옵니다",
        "input_schema": {
          "type": "object",
          "properties": {
            "location": {
              "type": "string",
              "description": "도시와 주, 예: San Francisco, CA"
            }
          },
          "required": ["location"]
        }
      }
    ],
    "messages": [
      {
        "role": "user",
        "content": "샌프란시스코의 날씨는 어떤가요?"
      }
    ]
  }'

베타 기간 동안 다음 사항에 유의하세요:

  • 이 기능은 프로덕션 준비가 되었지만 최종 릴리스 전에 여러 베타 버전을 도입할 수 있습니다.
  • 도구 사용은 아직 Vertex AI 또는 AWS Bedrock과 같은 타사 플랫폼에서 사용할 수 없지만 곧 제공될 예정입니다. 지금 Vertex AI 및 AWS Bedrock에서 도구 사용을 수행하는 방법에 대한 지침은 레거시 도구 사용을 참조하세요.

도구 사용 방법

Claude와 도구를 사용하는 것은 다음 단계를 포함합니다:

  1. Claude에 도구와 사용자 프롬프트 제공: (API 요청)
    • Claude가 액세스할 도구 세트를 정의하고 이름, 설명 및 입력 스키마를 포함합니다.
    • “샌프란시스코의 날씨는 어떤가요?”와 같이 이러한 도구 중 하나 이상을 사용해야 할 수 있는 사용자 프롬프트를 제공합니다.
  2. Claude가 도구 사용: (API 응답)
    • Claude는 사용자 프롬프트를 평가하고 사용 가능한 도구 중 사용자의 질의나 작업에 도움이 될 도구가 있는지 결정합니다. 그렇다면 어떤 도구를 사용할지, 어떤 입력을 사용할지도 결정합니다.
    • Claude는 적절한 형식의 도구 사용 요청을 구성합니다.
    • API 응답에는 Claude가 외부 도구를 사용하려고 함을 나타내는 stop_reasontool_use로 포함됩니다.
  3. 도구 입력 추출, 코드 실행 및 결과 반환: (API 요청)
    • 클라이언트 측에서 Claude의 도구 사용 요청에서 도구 이름과 입력을 추출해야 합니다.
    • 클라이언트 측에서 실제 도구 코드를 실행합니다.
    • tool_result 콘텐츠 블록이 포함된 새 user 메시지로 대화를 계속하여 결과를 Claude에 반환합니다.
  4. Claude가 도구 결과를 사용하여 응답 구성: (API 응답)
    • 도구 결과를 받은 후 Claude는 해당 정보를 사용하여 원래 사용자 프롬프트에 대한 최종 응답을 구성합니다.

(3)단계와 (4)단계는 선택 사항입니다. 일부 워크플로의 경우 Claude가 도구를 사용하는 것이 필요한 모든 정보이며 도구 결과를 Claude에 반환할 필요가 없을 수 있습니다.

모든 도구는 사용자가 제공

Claude에는 기본 제공되는 서버 측 도구가 없다는 점에 유의하는 것이 중요합니다. 모든 도구는 각 API 요청에서 사용자인 여러분이 명시적으로 제공해야 합니다. 이를 통해 Claude가 사용할 수 있는 도구에 대한 완전한 제어와 유연성을 제공합니다.


도구 지정

도구는 API 요청의 tools 최상위 매개변수에 지정됩니다. 각 도구 정의에는 다음이 포함됩니다:

  • name: 도구의 이름. 정규식 ^[a-zA-Z0-9_-]{1,64}$와 일치해야 합니다.
  • description: 도구의 기능, 사용 시기 및 동작 방식에 대한 자세한 일반 텍스트 설명.
  • input_schema: 도구에 대한 예상 매개변수를 정의하는 JSON 스키마 객체.

다음은 간단한 도구 정의의 예입니다:

JSON
{
  "name": "get_weather",
  "description": "주어진 위치의 현재 날씨를 가져옵니다",
  "input_schema": {
    "type": "object",
    "properties": {
      "location": {
        "type": "string",
        "description": "도시와 주, 예: San Francisco, CA"
      },
      "unit": {
        "type": "string",
        "enum": ["celsius", "fahrenheit"],
        "description": "온도 단위, 'celsius' 또는 'fahrenheit'"
      }
    },
    "required": ["location"]
  }
}

get_weather라는 이 도구는 필수 location 문자열과 “celsius” 또는 “fahrenheit” 중 하나여야 하는 선택적 unit 문자열이 포함된 입력 객체를 예상합니다.

도구 정의를 위한 모범 사례

도구를 사용할 때 Claude에서 최상의 성능을 얻으려면 다음 지침을 따르세요:

  • 매우 자세한 설명을 제공하세요. 이것은 도구 성능에 가장 중요한 요소입니다. 설명에는 다음을 포함하여 도구에 대한 모든 세부 정보를 설명해야 합니다:
    • 도구의 기능
    • 사용해야 할 때(그리고 사용하지 말아야 할 때)
    • 각 매개변수의 의미와 도구의 동작에 미치는 영향
    • 도구 이름이 명확하지 않은 경우 도구가 반환하지 않는 정보와 같은 중요한 주의 사항이나 제한 사항 도구에 대해 Claude에 제공할 수 있는 컨텍스트가 많을수록 도구를 사용할 시기와 방법을 더 잘 결정할 수 있습니다. 도구 설명당 최소 3-4 문장을 목표로 하고, 도구가 복잡한 경우 더 많이 작성하세요.
  • 예제보다 설명에 우선순위를 두세요. 도구의 설명이나 동반되는 프롬프트에 도구 사용 방법의 예를 포함할 수 있지만, 이는 도구의 목적과 매개변수에 대한 명확하고 포괄적인 설명보다 덜 중요합니다. 설명을 완전히 작성한 후에만 예제를 추가하세요.

다음은 좋은 도구 설명의 예입니다:

JSON
{
  "name": "get_stock_price",
  "description": "주어진 티커 기호에 대한 현재 주가를 검색합니다. 티커 기호는 NYSE 또는 NASDAQ과 같은 주요 미국 증권 거래소에서 공개적으로 거래되는 회사의 유효한 기호여야 합니다. 이 도구는 USD로 최신 거래 가격을 반환합니다. 사용자가 특정 주식의 현재 또는 가장 최근 가격에 대해 묻는 경우 사용해야 합니다. 주식이나 회사에 대한 다른 정보는 제공하지 않습니다.",
  "input_schema": {
    "type": "object",
    "properties": {
      "ticker": {
        "type": "string",
        "description": "주식 티커 기호, 예: Apple Inc.의 경우 AAPL"
      }
    },
    "required": ["ticker"]
  }
}

반면에 다음은 좋지 않은 도구 설명의 예입니다:

JSON
{
  "name": "get_stock_price",
  "description": "티커에 대한 주가를 가져옵니다.",
  "input_schema": {
    "type": "object",
    "properties": {
      "ticker": {
        "type": "string"
      }
    },
    "required": ["ticker"]
  }
}

좋은 설명은 도구의 기능, 사용 시기, 반환되는 데이터 및 ticker 매개변수의 의미를 명확하게 설명합니다. 좋지 않은 설명은 너무 간단하며 도구의 동작과 사용법에 대해 Claude에게 많은 의문을 남깁니다.


도구 사용 및 도구 결과 콘텐츠 블록

Claude가 제공한 도구 중 하나를 사용하기로 결정하면 API 응답에 stop_reasontool_use이고 다음을 포함하는 하나 이상의 tool_use 콘텐츠 블록이 포함된 응답을 반환합니다:

  • id: 이 특정 도구 사용 블록의 고유 식별자. 이는 나중에 도구 결과를 매칭하는 데 사용됩니다.
  • name: 사용 중인 도구의 이름.
  • input: 도구의 input_schema를 준수하는 도구에 전달되는 입력이 포함된 객체.

다음은 tool_use 콘텐츠 블록이 포함된 API 응답의 예입니다:

JSON
{
  "id": "msg_01Aq9w938a90dw8q",
  "model": "claude-3-opus-20240229",
  "stop_reason": "tool_use",
  "role":  "assistant",
  "content": [
    {
      "type": "text",
      "text": "<thinking>get_weather를 사용해야 하고, 사용자는 SF를 원하는데, 이는 아마도 San Francisco, CA일 것입니다.</thinking>"
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": {"location": "San Francisco, CA", "unit": "celsius"}
    }
  ]
}

도구 사용 응답을 받으면 다음을 수행해야 합니다:

  1. tool_use 블록에서 name, idinput을 추출합니다.
  2. 해당 도구 이름에 해당하는 코드베이스에서 실제 도구를 실행하고 도구 input을 전달합니다.
  3. [선택 사항] roleuser이고 content 블록에 다음 정보가 포함된 tool_result 유형이 포함된 새 메시지를 보내 대화를 계속합니다:
    • tool_use_id: 이 결과에 대한 도구 사용 요청의 id.
    • content: 문자열(예: "content": "15도") 또는 중첩된 콘텐츠 블록 목록(예: "content": [{"type": "text", "text": "15도"}])으로 된 도구의 결과. 이러한 콘텐츠 블록은 text 또는 image 유형을 사용할 수 있습니다.
    • is_error (선택 사항): 도구 실행이 오류를 발생시킨 경우 true로 설정합니다.

다음은 성공적인 도구 결과를 반환하는 예입니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
      "content": "15도"
    }
  ]
}

content에서 이미지도 지원됩니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
      "content": [
        {"type": "text", "text": "15도"},
        {
          "type": "image",
          "source": {
            "type": "base64",
            "media_type": "image/jpeg",
            "data": "/9j/4AAQSkZJRg...",
          }
        }
      ]
    }
  ]
}

그리고 다음은 오류 결과를 반환하는 예입니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
      "content": "ConnectionError: 날씨 서비스 API를 사용할 수 없습니다(HTTP 500)",
      "is_error": true
    }
  ]
}

도구 결과를 받은 후 Claude는 해당 정보를 사용하여 원래 사용자 프롬프트에 대한 응답 생성을 계속합니다.

출력이 없는 성공적인 도구 실행을 나타내는 빈 content로 오류가 아닌 도구 결과를 반환할 수도 있습니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
    }
  ]
}

다른 API와의 차이점

도구 사용을 모델의 기본 출력과 별도로 반환하거나 특수 목적의 tool 또는 function 메시지 role을 사용하는 다른 API에 익숙할 수 있습니다.

반면에 Anthropic의 모델과 API는 userassistant 메시지가 번갈아 가며, 각 메시지는 text, image, tool_usetool_result와 같은 풍부한 콘텐츠 블록의 배열을 중심으로 구축됩니다.

이 형식에서 user 메시지는 클라이언트 측 및 사용자/인간 관리 콘텐츠를 나타내고 assistant 메시지는 서버 측 및 AI 관리 콘텐츠를 나타냅니다. 따라서 특별한 tool 또는 function 메시지 role이 없으며 user 메시지의 contenttool_result 블록을 포함해야 합니다.


도구 사용 강제

경우에 따라 Claude가 도구를 사용하지 않고 답변을 제공할 수 있다고 생각하더라도 사용자의 질문에 답하기 위해 특정 도구를 사용하도록 Claude에 지시할 수 있습니다. 다음과 같이 tool_choice 필드에 도구를 지정하여 이를 수행할 수 있습니다:

tool_choice = {"type": "tool", "name": "get_weather"}

get_weather 도구를 사용하도록 Claude에 명시적으로 지시함으로써 원하는 도구를 사용하도록 유도할 수 있습니다. 이 기술은 도구 통합을 테스트하고 디버깅하거나 입력에 관계없이 항상 도구를 사용해야 한다는 것을 알고 있을 때 유용할 수 있습니다.

또한 {"type": "any"}를 통해 제공된 도구 중 하나를 사용하도록 Claude에 지시할 수도 있습니다. 기본 tool_choice{"type": "auto"}로, Claude가 도구 사용 여부를 결정할 수 있도록 합니다.

tool_choiceany 또는 tool일 때 도구를 강제로 사용하도록 assistant 메시지를 미리 채운다는 점에 유의하세요. 이는 명시적으로 요청하더라도 모델이 tool_use 콘텐츠 블록 앞에 사고 연쇄 text 콘텐츠 블록을 내보내지 않음을 의미합니다. 테스트에 따르면 이로 인해 성능이 저하되지 않아야 합니다. 특정 도구를 사용하도록 요청하면서 사고 연쇄(특히 Opus에서)를 유지하려면 tool_choice{"type": "auto"}(기본값)를 사용하고 user 메시지에 명시적 지침을 추가할 수 있습니다. 예를 들어 “런던의 날씨는 어떤가요? 응답에 get_weather 도구를 사용하세요.”와 같이 할 수 있습니다.


JSON 출력

도구는 반드시 클라이언트 측 함수일 필요는 없습니다. 모델이 제공된 스키마를 따르는 JSON 출력을 반환하기를 원할 때마다 도구를 사용할 수 있습니다. 예를 들어 특정 스키마를 사용하는 record_summary 도구를 사용할 수 있습니다. 전체 작동 예제는 도구 사용 예제를 참조하세요.


오류 처리

Claude와 도구를 사용할 때 발생할 수 있는 몇 가지 다른 유형의 오류가 있습니다:

도구 실행 오류

도구 자체가 실행 중에 오류를 발생시키는 경우(예: 날씨 데이터를 가져올 때 네트워크 오류), "is_error": true와 함께 content에 오류 메시지를 반환할 수 있습니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
      "content": "ConnectionError: 날씨 서비스 API를 사용할 수 없습니다(HTTP 500)",
      "is_error": true
    }
  ]
}

그러면 Claude는 이 오류를 사용자에 대한 응답에 통합합니다. 예를 들어 “죄송합니다. 날씨 서비스 API를 사용할 수 없어 현재 날씨를 검색할 수 없습니다. 나중에 다시 시도해 주세요.”와 같이 할 수 있습니다.

최대 토큰 초과

Claude의 응답이 max_tokens 제한에 도달하여 잘리고 잘린 응답에 불완전한 도구 사용 블록이 포함된 경우 max_tokens 값을 높여 요청을 다시 시도하여 전체 도구 사용을 얻어야 합니다.

잘못된 도구 사용

Claude의 도구 사용 시도가 잘못된 경우(예: 필수 매개변수 누락), 일반적으로 Claude가 도구를 올바르게 사용하기에 충분한 정보가 없음을 의미합니다. 개발 중에는 도구 정의에서 더 자세한 description 값으로 요청을 다시 시도하는 것이 가장 좋습니다.

그러나 오류를 나타내는 tool_result로 대화를 계속 진행할 수도 있으며, Claude는 누락된 정보를 채워 도구를 다시 사용하려고 시도합니다:

JSON
{
  "role": "user",
  "content": [
    {
      "type": "tool_result",
      "tool_use_id": "toolu_01A09q90qw90lq917835lq9",
      "content": "오류: 필수 'location' 매개변수 누락",
      "is_error": true
    }
  ]
}

사고 연쇄 도구 사용

도구를 사용할 때 Claude는 종종 문제를 분석하고 어떤 도구를 사용할지 결정하는 데 사용하는 단계별 추론인 “사고 연쇄”를 보여줍니다. tool_choiceauto로 설정된 경우(이는 기본값입니다. 도구 사용 강제 참조) Claude 3 Opus 모델이 이를 수행하며, Sonnet과 Haiku는 이를 수행하도록 프롬프트될 수 있습니다.

예를 들어 “지금 샌프란시스코의 날씨는 어떤가요? 그곳의 시간은 몇 시인가요?”라는 프롬프트가 주어지면 Claude는 다음과 같이 응답할 수 있습니다:

JSON
{
  "role": "assistant",
  "content": [
    {
      "type": "text",
      "text": "<thinking>이 질문에 답하기 위해 다음을 수행합니다: 1. get_weather 도구를 사용하여 샌프란시스코의 현재 날씨를 가져옵니다. 2. get_time 도구를 사용하여 샌프란시스코를 포함하는 America/Los_Angeles 시간대의 현재 시간을 가져옵니다.</thinking>"
    },
    {
      "type": "tool_use",
      "id": "toolu_01A09q90qw90lq917835lq9",
      "name": "get_weather",
      "input": {"location": "San Francisco, CA"}
    }
  ]
}

이 사고 연쇄는 Claude의 추론 과정에 대한 통찰력을 제공하고 예상치 못한 동작을 디버깅하는 데 도움이 될 수 있습니다.

Claude 3 Sonnet 모델에서는 기본적으로 사고 연쇄가 덜 일반적이지만 사용자 메시지나 시스템 프롬프트에 “답변하기 전에 태그에서 단계별로 추론을 설명하세요.”와 같은 내용을 추가하여 Claude에 추론을 보여달라고 요청할 수 있습니다. 보다 자세한 예제는 사고 연쇄 도구 사용 예제를 참조하세요.

<thinking> 태그는 Claude가 사고 연쇄를 나타내기 위해 사용하는 일반적인 규칙이지만 정확한 형식(예: 이 XML 태그의 이름)은 시간이 지남에 따라 변경될 수 있다는 점에 유의하는 것이 중요합니다. 코드는 사고 연쇄를 다른 assistant 생성 텍스트처럼 처리해야 하며 <thinking> 태그의 존재나 특정 형식에 의존해서는 안 됩니다.


도구 사용 모범 사례 및 제한 사항

Claude와 도구를 사용할 때는 다음과 같은 제한 사항과 모범 사례를 염두에 두세요:

  • 복잡한 도구 사용을 위해서는 Claude 3 Opus를, 간단한 도구를 다룰 때는 Haiku를 사용하세요: Opus는 다른 모델에 비해 가장 많은 동시 도구를 처리할 수 있으며 누락된 인수를 더 잘 포착합니다. 인수가 명시적으로 제공되지 않거나 도구가 사용자 요청을 완료하는 데 필요하지 않을 수 있는 모호한 경우에 명확히 할 것을 요청할 가능성이 더 높습니다. Haiku는 쿼리와 관련이 없더라도 도구를 더 자주 사용하려고 하며 명시적으로 제공되지 않은 경우 누락된 매개변수를 추론합니다.
  • 도구 수: 모든 Claude 3 모델은 수백 개의 간단한 도구와 더 적은 수의 복잡한 도구로 작업할 때도 90% 이상의 정확도를 유지할 수 있습니다. “복잡한” 도구는 많은 수의 매개변수 또는 복잡한 스키마(예: 중첩된 객체)가 있는 매개변수를 가진 도구입니다.
  • 복잡하고 깊이 중첩된 도구: 사람과 마찬가지로 Claude는 더 간단한 인터페이스와 더 간단한 도구로 더 잘 작동할 수 있습니다. Claude가 도구를 올바르게 사용하는 데 어려움을 겪는 경우 입력 스키마를 깊이 중첩된 JSON 객체에서 평면화하고 입력 수를 줄이세요.
  • 순차적 도구 사용: Claude는 일반적으로 한 번에 하나의 도구를 사용한 다음 해당 도구의 출력을 사용하여 다음 작업을 알리는 것을 선호합니다. 프롬프트와 도구를 신중하게 설계하여 Claude가 여러 도구를 병렬로 사용하도록 프롬프트할 수 있지만, 이로 인해 Claude가 이전 도구 사용 결과에 의존하는 매개변수에 더미 값을 채울 수 있습니다. 최상의 결과를 얻으려면 워크플로와 도구를 설계하여 Claude에서 일련의 순차적 도구 사용을 유도하고 이를 활용하세요.
  • 재시도: Claude의 도구 사용 요청이 잘못되었거나 필수 매개변수가 누락된 경우 오류 응답을 반환하면 Claude는 일반적으로 누락된 정보를 채워 요청을 다시 시도합니다. 그러나 2-3번의 실패한 시도 후에는 Claude가 포기하고 사용자에게 사과를 반환할 수 있습니다.
  • 디버깅: 예기치 않은 도구 사용 동작을 디버깅할 때는 Claude가 선택한 이유를 이해하기 위해 사고 연쇄 출력(있는 경우)에 주의를 기울이세요. 또한 특정 도구를 사용하도록 Claude에 프롬프트하여 예상 동작으로 이어지는지 확인할 수 있습니다. Claude가 도구를 잘못 사용하는 경우 도구 설명과 스키마가 명확하고 모호하지 않은지 다시 확인하세요.
  • <search_quality_reflection> 태그: 검색 도구를 사용할 때 모델이 응답에 <search_quality_reflection> XML 태그와 검색 품질 점수를 반환할 수 있습니다. 모델이 이를 수행하지 않도록 하려면 프롬프트 끝에 “응답에서 반환된 검색 결과의 품질을 반영하지 마세요.”라는 문장을 추가하세요.

이러한 제한 사항과 지침을 염두에 두면 Claude의 기능을 크게 확장하여 다양한 작업을 처리할 수 있는 효과적인 도구와 에이전트 오케스트레이션을 설계할 수 있습니다.


베타 버전 기록

  • tools-2024-05-16
    • 단일 턴에 여러 도구 사용이 필요할 수 있는 시나리오를 더 잘 처리하기 위한 Opus의 시스템 프롬프트 변경
  • tools-2024-04-04: 도구 사용을 위한 초기 베타 릴리스

다음 단계

도구 사용은 Claude를 외부 데이터 소스 및 기능에 연결하여 Claude의 기능을 확장하는 강력한 기술입니다. 잘 설계된 도구 세트를 사용하면 Claude가 기본 지식만으로는 불가능한 다양한 작업을 처리할 수 있습니다.

몇 가지 잠재적인 다음 단계는 다음과 같습니다:

  • 도구 사용 요리책 탐색: 다음과 같은 바로 구현 가능한 도구 사용 코드 예제 저장소를 탐색하세요:
  • 도구 사용 품질 및 신뢰성 향상: 도구 설명과 프롬프트를 반복하고 개선하여 Claude에서 더 안정적이고 정확한 도구 사용을 유도하세요
  • Claude의 기능 확장:
    • 다양한 도구와 스키마를 실험하여 Claude가 다양한 유형의 입력 및 출력 형식을 어떻게 처리하는지 확인하세요.
    • 복잡한 작업을 일련의 더 간단한 단계로 분해하기 위해 여러 도구를 함께 연결하세요.
    • Claude가 에이전트인 것처럼 다양한 작업을 처음부터 끝까지 완료할 수 있는 에이전트 오케스트레이션을 구축하세요.
    • Claude에 RAG 검색을 수행하거나 Haiku와 같은 더 작은 모델 하위 에이전트를 호출하여 대신 작업을 수행하는 도구를 제공하는 등 복잡한 도구 사용 아키텍처를 탐색하세요

도구 사용으로 구축할 때 여러분의 피드백을 듣고 여러분이 만든 것을 보고 싶습니다! 개발자 Discord에 가입하여 프로젝트를 공유하고 다른 개발자와 팁과 기술을 논의하세요.

도구 사용을 통해 Claude로 가능한 것의 한계를 뛰어넘는 방법을 보여주기를 기대하고 있습니다. 즐거운 개발 되세요!