Sign in to save your progressYou can keep reading without an account, but completed lessons won't be saved.
Sign in

구조화된 데이터 추출을 위해 상세한 JSON 스키마를 작성하는 것은 AI 도구를 사용할 때 실제로 골칫거리가 될 수 있습니다. 복잡한 스키마를 만드는 대신 프롬프트에 직접 원하는 데이터 구조를 지정할 수 있는 기발한 해결 방법이 있습니다.

유연한 스키마 접근 방식

모든 데이터 추출 작업마다 상세한 스키마를 작성하는 대신, 어떤 객체 구조든 받아들이는 to_json이라는 범용 도구 하나를 만들 수 있습니다. 핵심은 입력 스키마가 추가 속성을 허용하도록 설정한 다음, 프롬프트 자체에 정확한 요구 사항을 명시하는 것입니다.

이 접근 방식은 대규모 JSON 스키마를 끊임없이 작성하고 관리해야 하는 주요 골칫거리를 제거합니다. 결과는 전용 스키마만큼 좋지는 않겠지만, 훨씬 적은 설정 작업으로도 여전히 고품질의 JSON 출력을 얻을 수 있습니다.

작동 방식

과정은 간단합니다:

  • 어떤 객체 구조든 받아들이는 단일 유연한 스키마를 만듭니다
  • 프롬프트에서 원하는 데이터 구조를 정확히 명시합니다
  • Claude에게 지정한 구조로 to_json 도구를 호출하도록 지시합니다
  • tool_choice를 사용하여 Claude가 해당 도구를 사용하도록 강제합니다

프롬프트 설정하기

프롬프트를 작성할 때는 원하는 구조에 대해 매우 명확하게 작성해야 합니다. 요청을 구성하는 방법의 예시는 다음과 같습니다:

Analyze the article below and extract key data. Then call the to_json tool.

<article_text>
{result["text"]}
</article_text>

When you call to_json, pass in the following structure:
{{
    "title": str # title of the article,
    "author": str # author of the article,
    "topics": List[str] # List of topics mentioned in the article
}}

API 호출하기

API 호출은 유연한 스키마를 사용하며 도구 사용을 강제합니다:

python
flexible_result = chat(messages, tools=[to_json_schema], tool_choice="to_json")

쉬운 구조 변경

실제 장점은 데이터 구조를 수정해야 할 때 명확해집니다. 전체 스키마를 다시 작성하는 대신 프롬프트만 업데이트하면 됩니다. 주제 개수를 나타내는 필드를 추가하고 싶으신가요? 한 줄만 추가하면 됩니다:

python
"num_topics": int # Number of topics mentioned

이것으로 끝입니다 - 스키마 수정이 필요 없습니다.

각 접근 방식을 사용해야 할 때

유연한 스키마 접근 방식은 다음과 같은 경우에 효과적입니다:

  • 빠른 프로토타이핑 및 실험
  • 간단한 데이터 추출 작업
  • 데이터 요구 사항을 자주 변경하는 상황

다음과 같은 경우에는 전용 스키마를 사용하세요:

  • 중요한 프로덕션 데이터 추출 작업
  • 복잡한 중첩 데이터 구조
  • 가능한 최고의 정확도가 필요한 경우

유연한 접근 방식은 설정 작업의 10%만으로 약 90%의 품질을 제공하므로, 스키마 관리 부담 없이 구조화된 데이터 추출이 필요한 대부분의 사용 사례에 적합합니다.