0Pricing
AI Prompt Engineering · 강의

표와 구조화된 데이터 요청하기

비교 작업에 사용할 마크다운 표와 구조화된 출력을 요청합니다.

표와 구조화된 데이터 요청하기은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

출력 형식으로서의 표

표는 비교 정보에 가장 유용한 인공지능 출력 형식 중 하나입니다. 표를 사용하면 항목 간 관계를 한눈에 확인할 수 있고 나란히 빠르게 분석할 수 있습니다.

좋은 표를 얻는 핵심은 정확한 열 이름, 각 열에 포함할 내용, 포함할 행의 수를 지정하는 것입니다.

기본 표 요청

마크다운 표를 요청하는 표준 형식은 다음과 같습니다.

'[열1], [열2], [열3] 열을 포함하는 마크다운 표로 형식을 지정해 주세요.'

마크다운 표는 GitHub, 노션, 옵시디언 및 대부분의 인공지능 채팅 인터페이스에서 렌더링됩니다. 열을 구분할 때는 파이프 문자를 사용하고, 머리글 구분선에는 대시를 사용합니다.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Compare Python, JavaScript, and Go for building REST APIs. '
            'Format as a markdown table with columns: '
            'Language, Performance, Learning Curve, Ecosystem, Best Use Case. '
            'One row per language. Be concise — max 8 words per cell.'
        )
    }]
)
print(response.choices[0].message.content)

비교 표

비교 표는 여러 선택지 중 하나를 고를 때 이상적입니다. 다음과 같이 요청해 보세요.

  • 'X 대 Y 대 Z의 비교 표를 만들어 주세요...'
  • '...의 기능 비교 표를 만들어 주세요'
  • '...을 비교하는 장단점 표를 만들어 주세요'

선택지를 행으로, 평가 기준을 열로 지정하세요. 또는 콘텐츠를 더 읽기 쉽게 배치할 수 있다면 그 반대로 지정해도 됩니다.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Create a comparison table for three cloud database options: '
            'Supabase, PlanetScale, and Neon.\n'
            'Rows: one per database.\n'
            'Columns: Free tier storage, Scaling model, Pricing at 10GB, '
            'Branching support, SQL compatibility.\n'
            'Format: markdown table. Cell content: max 6 words each.'
        )
    }]
)
print(response.content[0].text)

기능 매트릭스 표

기능 매트릭스는 행에 항목을 배치하고 열에 기능을 배치하며, 각 셀에 확인 표시, 점수 또는 간단한 값을 표시하는 표입니다. 일반적인 사용 사례는 다음과 같습니다.

  • 버전 또는 경쟁 제품 간 소프트웨어 기능 비교
  • SaaS 제품의 요금제 비교
  • 기술 지원 매트릭스(어떤 브라우저/OS가 무엇을 지원하는지)

다음과 같이 요청해 보세요. '각 기능에 대해 확인 표시(예/아니요)를 사용한 기능 매트릭스 표를 만들어 주세요.'

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Create a feature matrix table for our SaaS pricing tiers: Free, Pro, Enterprise.\n'
            'Rows: API access, Custom domains, SSO login, SLA guarantee, Priority support, '
            'Data export, Team collaboration, Audit logs.\n'
            'Columns: Free, Pro, Enterprise.\n'
            'Use: YES / NO / PARTIAL for each cell.\n'
            'Format: markdown table.'
        )
    }]
)
print(response.choices[0].message.content)

텍스트에서 만드는 데이터 표

강력한 방식 중 하나는 모델에 비정형 텍스트에서 정보를 추출해 표로 형식을 지정하도록 요청하는 것입니다. 이는 본질적으로 인공지능 기반 데이터 구문 분석입니다.

'아래 텍스트에서 다음 정보를 추출하고 X, Y, Z 열을 포함하는 표로 형식을 지정해 주세요.'

일관된 구조를 얻으려면 항상 열 이름을 명시적으로 지정하세요.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

meeting_notes = (
    'Sarah will handle the API documentation by next Friday. '
    'John needs to fix the authentication bug — aim for Wednesday. '
    'Maria is responsible for the mobile UI update, due in 2 weeks. '
    'The DevOps team (lead: Alex) must set up staging by Monday. '
    'Carlos will write unit tests — deadline: end of sprint (Thursday).'
)

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'Extract all action items from the meeting notes below. '
            'Format as a markdown table with columns: Task, Owner, Deadline.\n\n'
            f'Meeting notes:\n{meeting_notes}'
        )
    }]
)
print(response.content[0].text)

CSV 출력

스프레드시트, 데이터베이스로 가져오거나 추가 처리할 데이터가 필요하다면 마크다운 표 대신 CSV(쉼표로 구분된 값) 출력을 요청하세요.

'머리글 행이 있는 CSV 행으로 출력해 주세요' 또는 'CSV 형식으로 지정해 주세요. 첫 번째 줄에는 열 머리글을 넣어 주세요.'

CSV는 이식성이 높아 Excel, 구글 스프레드시트에 바로 붙여 넣거나 코드로 구문 분석할 수 있습니다.

import openai
import csv
import io

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Generate 5 sample customer support tickets for an e-commerce store. '
            'Output as CSV with header row. '
            'Columns: ticket_id, customer_name, issue_type, priority, status. '
            'issue_type values: SHIPPING / BILLING / PRODUCT / RETURNS. '
            'priority values: LOW / MEDIUM / HIGH. '
            'status values: OPEN / IN_PROGRESS / RESOLVED. '
            'No markdown formatting — raw CSV only.'
        )
    }]
)

csv_text = response.choices[0].message.content.strip()
reader = csv.DictReader(io.StringIO(csv_text))
for row in reader:
    print(row)

JSON 구조화된 출력

프로그래밍에 사용할 때는 JSON이 가장 좋은 형식인 경우가 많습니다. 다음과 같이 명시적으로 요청하세요.

'키가 X, Y, Z인 JSON 객체로 출력해 주세요.'
'각 요소에 A, B, C 속성이 있는 JSON 배열을 반환해 주세요.'

일부 모델은 유효한 JSON 출력을 보장하는 기본 JSON 모드를 지원합니다. 그러나 이 기능이 없어도 JSON 요청과 스키마 설명을 명시하면 일반적으로 구문 분석할 수 있는 출력이 생성됩니다.

import anthropic
import json

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Generate 3 fictional user profiles for testing a fitness app. '
            'Output as a JSON array. '
            'Each object must have exactly these keys: '
            'id (integer), name (string), age (integer 18-65), '
            'fitness_level ("BEGINNER" | "INTERMEDIATE" | "ADVANCED"), '
            'goals (array of strings, max 3), weekly_sessions (integer 1-7). '
            'Output raw JSON only — no explanation, no markdown code fences.'
        )
    }]
)

try:
    data = json.loads(response.content[0].text)
    print(f'Parsed {len(data)} profiles successfully.')
    for profile in data:
        print(f'  {profile["name"]}, {profile["age"]}, {profile["fitness_level"]}')
except json.JSONDecodeError as e:
    print('JSON parse error:', e)

셀 내용 규칙 지정

각 셀에 허용되는 내용을 정의하면 표의 품질이 크게 향상됩니다.

  • '셀당 최대 5단어' — 표 형식을 망가뜨리는 장황한 셀을 방지합니다
  • '예/아니요만' — 이진 기능 매트릭스
  • '달러 금액만, 설명 없음' — 깔끔한 가격 표
  • '한 단어만' — 강제로 간결하게 제한
  • '평점 1-10' — 숫자로 점수를 매기는 표
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Rate the following programming languages for these criteria.\n'
            'Languages (rows): Python, Rust, TypeScript, Go.\n'
            'Criteria (columns): Speed, Safety, Developer Experience, Job Market, Learning Curve.\n'
            'Cell format: integer score 1-10 only. No words, no explanation inside cells.\n'
            'After the table, add one sentence explaining your scoring philosophy.'
        )
    }]
)
print(response.choices[0].message.content)

행과 열을 바꾼 표

데이터에 기본 행/열 방향이 맞지 않는 경우가 있습니다. 행과 열을 바꾼 표는 행과 열을 뒤집은 표로, 속성은 많고 항목은 적을 때 유용합니다.

다음과 같이 요청해 보세요. '항목을 열로, 속성을 행으로 하는 표를 만들어 주세요' 또는 'X가 열이 되도록 표의 행과 열을 바꿔 주세요.'

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'Compare two job candidates: Alice and Bob. '
            'Create a transposed table where candidates are COLUMNS and attributes are ROWS. '
            'Attributes (rows): Years Experience, Primary Language, Education, '
            'Previous Employer, Salary Expectation Range. '
            'Format: markdown table. Cell content: factual, max 6 words.\n\n'
            'Alice: 7 years Python/ML, MS Computer Science MIT, ex-Google, expects $180-220k.\n'
            'Bob: 4 years JavaScript/Node, BS from UC Berkeley, ex-Stripe startup, expects $140-170k.'
        )
    }]
)
print(response.content[0].text)

표를 사용하지 않을 때(NOT)

표가 항상 적절한 형식은 아닙니다. 다음과 같은 경우에는 표를 피하세요.

  • 항목이 2개뿐인 경우 — 간단한 단락으로 비교하는 편이 더 읽기 좋습니다
  • 셀 내용의 길이가 크게 다른 경우 — 표를 읽기 어려워집니다
  • 출력을 일반 텍스트 환경(이메일 본문, SMS)에서 사용할 경우
  • 음성 출력을 위한 콘텐츠를 생성하는 경우
  • 관계가 표 형식이 아니라 계층 구조인 경우(대신 중첩 목록을 사용하세요)
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Table works: structured comparison
table_prompt = (
    'Compare MySQL vs PostgreSQL. '
    'Format: markdown table, columns: Feature, MySQL, PostgreSQL. '
    '6 rows covering: JSON support, Full-text search, Replication, Transactions, License, Best for.'
)

# No table needed: simple 2-option choice with prose reasoning
not_table_prompt = (
    'Should I use SQLite or PostgreSQL for a personal hobby project '
    'that will have at most 5 users? 2-sentence answer, no table.'
)

for label, prompt in [('TABLE APPROPRIATE', table_prompt), ('TABLE OVERKILL', not_table_prompt)]:
    response = client.chat.completions.create(
        model='gpt-4o', max_tokens=200,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- {label} ---')
    print(response.choices[0].message.content.strip()[:300])
    print()

표와 다른 형식 결합하기

표는 주변 설명문이나 목록과 잘 어울립니다. 품질이 높은 출력의 일반적인 구조는 다음과 같습니다.

  1. 비교 기준을 설명하는 간단한 소개 단락
  2. 빠르게 훑어보기 위한 표
  3. 최종 결론을 담은 추천 단락

다음과 같이 명시적으로 요청해 보세요. '1문장 소개, 표, 2문장 추천을 포함해 주세요.'

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=500,
    messages=[{
        'role': 'user',
        'content': (
            'Compare three Python testing frameworks: pytest, unittest, and nose2. '
            'Structure your response as:\n'
            '1. One-sentence intro explaining the comparison scope.\n'
            '2. Markdown table: columns = Framework, Ease of Use, Plugin Ecosystem, '
            'Speed, Community Activity. Rows = one per framework.\n'
            '3. One-sentence recommendation for a team starting a new project.'
        )
    }]
)
print(response.content[0].text)

지식 확인

개발자가 인공지능을 사용해 데이터베이스 테스트용 샘플 데이터를 생성하려고 합니다. ID, 이름, 이메일, 국가, 계정 등급이 포함된 고객 데이터 10행이 필요합니다. 어떤 출력 형식을 요청하는 것이 가장 좋을까요?

표와 구조화된 데이터 — 요약

표와 구조화된 데이터 요청을 사용하면 인공지능의 가장 유용한 출력 형식 중 일부를 활용할 수 있습니다. 핵심 기법은 다음과 같습니다.

  • 일관된 구조를 얻으려면 정확한 열 이름을 지정합니다
  • 선택지를 나란히 분석하려면 비교 표를 사용합니다
  • 데이터를 프로그래밍 방식으로 처리할 경우 CSV를 사용합니다
  • API 통합 및 코드에서 사용하려면 JSON을 사용합니다
  • 셀 내용 규칙을 정의합니다: 최대 단어 수, 허용 값, 평점 척도
  • 항목 수가 속성 수보다 많을 때 행과 열을 바꾸는 것을 고려합니다
  • 완전하고 읽기 쉬운 문서를 만들려면 표를 설명문과 결합합니다

자주 묻는 질문

“표와 구조화된 데이터 요청하기” 강의는 무료인가요?

네 — “표와 구조화된 데이터 요청하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Prompt Engineering 강의 전체를 잠금 해제할 수 있습니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.

“표와 구조화된 데이터 요청하기”에서 뭘 배우나요?

비교 작업에 사용할 마크다운 표와 구조화된 출력을 요청합니다. 브라우저에서 직접 실행하는 실습 코드로 AI Prompt Engineering을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Prompt Engineering을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Prompt Engineering은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“표와 구조화된 데이터 요청하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Prompt Engineering 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Prompt Engineering 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 목록과 글머리 기호 요청하기
  2. 표와 구조화된 데이터 요청하기
  3. 프롬프트에서 마크다운 형식 지정하기
  4. 일반 텍스트와 서식이 있는 출력 비교
← AI Prompt Engineering(으)로 돌아가기