배경 정보 제공하기
도메인 지식, 제약 조건 및 프로젝트 세부 정보를 언제 어떻게 포함할지 배웁니다.
배경 정보 제공하기은(는) CoddyKit의 무료 AI Prompt Engineering 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Prompt Engineering 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Prompt Engineering 강의에는 총 4개의 강의가 포함되어 있습니다.
배경 정보가 중요한 이유
배경 정보는 모델이 스스로 알 수 없는 사실을 알려 줍니다. 여기에는 여러분의 구체적인 프로젝트 세부 정보, 팀의 제약 조건, 이미 진행한 작업, 이해관계자의 기대가 포함됩니다.
배경 정보가 없으면 모델은 상상 속의 일반적인 상황을 대상으로 결과를 생성합니다. 배경 정보가 있으면 여러분의 상황을 대상으로 생성합니다.
분야 지식을 포함할 때
다음과 같은 경우에는 프롬프트에 분야 지식을 포함하십시오.
- 주제가 산업마다 여러 가지로 해석될 수 있을 때
- 전문 용어를 사용하고 있을 때
- 정답이 해당 분야의 규범이나 규정에 따라 달라질 때
- 분야에 특화된 답변이 필요한데 모델이 일반적인 답변을 제공할 수 있을 때
교과서 전체를 붙여 넣지는 마십시오. 구체적인 질문과 가장 관련 있는 분야의 사실 2~3가지만 요약하십시오.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
domain_knowledge = (
'Domain: algorithmic trading at a regulated broker-dealer in the US. '
'Relevant rules: SEC Rule 15c3-5 (Market Access Rule) requires pre-trade risk checks. '
'Latency budget: all risk checks must complete in under 100 microseconds. '
'Stack: C++ for the matching engine, Python for strategy logic.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
f'{domain_knowledge}\n\n'
f'Question: How should we implement position limit checks for our order router?'
)
}]
)
print(response.content[0].text)프로젝트 세부 정보 포함하기
프로젝트 세부 정보는 여러분이 진행하는 작업의 구체적인 맥락을 모델에 알려 줍니다. 필수 프로젝트 세부 정보에는 다음이 포함됩니다.
- 프로젝트의 내용과 현재 단계(MVP / 확장 중 / 성숙 단계)
- 기술 구성과 설계
- 팀 규모와 숙련도
- 일정과 마감 기한의 압박
- 질문에 영향을 미치는 최근의 변경 사항이나 사건
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
project_context = (
'Project: a mobile recipe app (React Native, Node.js backend, MongoDB). '
'Stage: pre-launch, 2 weeks to go live. '
'Team: 2 frontend devs, 1 backend dev, no dedicated QA. '
'Current issue: app search is slow (3-5 seconds) with 50,000 recipes in the DB. '
'Constraint: no time for a full re-architecture before launch.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
f'{project_context}\n\n'
f'Suggest 3 quick wins to improve search speed before launch. '
f'Each suggestion: what to do (1 sentence), estimated effort (hours), '
f'expected improvement.'
)
}]
)
print(response.choices[0].message.content)기존 작업 공유하기
기존 작업을 공유하면 모델이 처음부터 다시 시작하는 대신 여러분이 이미 한 작업을 기반으로 결과를 만들 수 있습니다. 다음과 같은 경우에는 기존 작업을 포함하십시오.
- 문서나 코드의 이어 쓰기 또는 확장
- 비평과 개선 제안
- 스타일 맞추기(기존 내용의 어조와 형식에 맞추기)
- 일관성 확인(새로 만든 내용이 기존 구조에 어울리는지 확인)
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
existing_intro = (
'At Northlight Labs, we build AI tools that work the way humans think — '
'not the other way around. Founded in 2022 by two ex-Google researchers, '
'we have helped 500 companies ship smarter products without hiring ML teams.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=200,
messages=[{
'role': 'user',
'content': (
'Here is our existing company intro paragraph:\n\n'
f'{existing_intro}\n\n'
'Write a second paragraph (matching this exact tone and style) '
'that describes our flagship product: an API that lets developers '
'add natural language search to any database with 3 lines of code. '
'Keep it under 60 words.'
)
}]
)
print(response.content[0].text)제약 조건을 미리 설명하기
제약 조건은 모델이 따라야 하는 규칙입니다. 제약 조건을 미리 밝히면 실제 상황에서는 불가능하지만 그 자체로는 완전히 타당한 아이디어를 모델이 제안하는 일을 막을 수 있습니다.
포함할 제약 조건의 유형:
- 기술적 제약: '파이썬 3.11, 타사 라이브러리 사용 금지'
- 예산 제약: '0달러 — 오픈 소스만 사용'
- 시간 제약: '2시간짜리 작업 주기 안에 완료해야 함'
- 규제 제약: '로그에 개인 식별 정보를 포함하지 않음'
- 조직 제약: '데이터베이스 구조를 변경할 수 없음'
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
'We need to add rate limiting to our REST API.\n\n'
'Constraints:\n'
'- Python 3.11 FastAPI application\n'
'- No external dependencies beyond what is already installed (requests, pydantic, uvicorn)\n'
'- Must work as a single process (no Redis, no shared state between workers)\n'
'- Rate limit: 100 requests per minute per IP address\n'
'- If limit exceeded, return HTTP 429 with Retry-After header\n\n'
'Show me a complete implementation.'
)
}]
)
print(response.choices[0].message.content)이해관계자 정보
이해관계자 정보는 여러분의 상황에서 누구를 더 고려해야 하는지 모델에 알려 줍니다. 이해관계자는 어떤 위험을 강조할지, 어떤 반론에 대응할지, 성공을 어떻게 정의할지를 결정합니다.
- '우리 대상 독자에는 인공지능 투자에 회의적인 CFO가 포함됩니다'
- '이 내용은 게시 전에 법무 팀의 검토를 받습니다'
- '최종 사용자는 접근성 요구 사항이 있으므로 화면 낭독기와 호환되어야 합니다'
- '우리 CTO는 기발한 해결책보다 단순한 해결책을 선호합니다'
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
stakeholder_context = (
'This proposal will be reviewed by:\n'
'1. CTO: cares about technical risk and maintainability, skeptical of microservices\n'
'2. CFO: cares about cost, wants to see clear ROI numbers\n'
'3. VP Engineering: cares about developer experience and team morale\n'
'The CTO has veto power.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=400,
messages=[{
'role': 'user',
'content': (
f'{stakeholder_context}\n\n'
f'Write a 3-paragraph executive summary for a proposal to migrate '
f'our monolith to a modular monolith (not microservices). '
f'Address each stakeholder\'s top concern in a separate paragraph.'
)
}]
)
print(response.content[0].text)시간순 방법
복잡한 상황에서는 시간순 방법을 사용하여 배경 정보를 사건의 시간 순서로 구성할 수 있습니다. 이렇게 하면 모델이 인과 관계와 현재 상태를 이해하는 데 도움이 됩니다.
형식:
- 이전에는 상황이 어떠했는지
- 무엇이 바뀌었거나 어떤 일이 일어났는지
- 현재 상태가 어떠한지
- 이 순서를 고려할 때 어떤 도움을 필요로 하는지
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
chronological_background = (
'Timeline:\n'
'- 6 months ago: We launched v1 of our API with a flat pricing model ($99/month).\n'
'- 3 months ago: Power users (top 10%) started consuming 80% of compute.\n'
'- 1 month ago: We introduced usage-based pricing — power users complained loudly.\n'
'- Current: 12% of power users have churned; new signups are up 15%.\n'
'- Goal: Keep power users without losing the new-signup growth.\n'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{
'role': 'user',
'content': (
f'{chronological_background}\n\n'
f'Suggest 3 pricing model adjustments that could address both groups. '
f'For each: describe the change, who it benefits, and the revenue risk.'
)
}]
)
print(response.choices[0].message.content)자신의 데이터를 배경 정보로 사용하기
배경 정보의 가장 강력한 활용 방법 중 하나는 자체 데이터, 즉 측정 지표, 로그, 출력 또는 연구 결과를 프롬프트에 직접 삽입하여 모델이 여러분의 구체적인 수치를 바탕으로 추론하게 하는 것입니다.
데이터는 항상 깔끔하고 읽기 쉬운 형식으로 붙여 넣으십시오. 표와 구조화된 목록이 가장 효과적입니다. 정리되지 않은 텍스트 덩어리는 모델이 분석하기 더 어렵습니다.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
metrics_data = (
'Weekly active users (WAU) last 8 weeks:\n'
'Week 1: 1,200 | Week 2: 1,350 | Week 3: 1,290 | Week 4: 1,400\n'
'Week 5: 1,380 | Week 6: 1,220 | Week 7: 1,100 | Week 8: 980\n'
'Note: We launched a pricing change in Week 5.'
)
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
messages=[{
'role': 'user',
'content': (
f'{metrics_data}\n\n'
f'Analyze the trend, identify where decline began, '
f'and suggest 2 hypotheses for the cause. '
f'Be specific — reference the exact weeks in your analysis.'
)
}]
)
print(response.content[0].text)배경 정보로 포함하지 않을 것(NOT)
배경 정보에는 비용이 따릅니다. 바로 토큰 사용량입니다. 답변에 직접 영향을 미치는 내용만 포함하십시오.
대체로 불필요한 배경 정보:
- 회사 설립 이야기(브랜드 어조가 중요한 경우가 아니라면)
- 팀 조직도(의사 결정 권한이 중요한 경우가 아니라면)
- 의사 결정 기간보다 오래된 역사적 맥락
- 사용하지 않는(NOT) 기술
- 현재 질문과 관련 없고 이미 해결한 문제
확신이 서지 않는다면 한 번 포함해 출력이 개선되는지 확인한 다음, 이후 실행에서 줄이십시오.
# Contrast: bloated vs lean background
bloated_background = (
'Our company was founded in 2018 by Alice and Bob. '
'We have 45 employees across 3 offices. We use Jira for project management. '
'We had a product refresh in 2020. Our CTO came from Amazon. '
'We use Slack, Notion, and Linear. '
'We once tried Kubernetes but moved back to Docker Compose. '
'Question: How should we handle database connection pooling in FastAPI?'
)
lean_background = (
'Stack: FastAPI, PostgreSQL, deployed on a single 8-core server. '
'Load: ~200 concurrent users peak. '
'Current issue: seeing "too many connections" errors under load. '
'Question: How should we handle database connection pooling?'
)
print('Bloated background:', len(bloated_background.split()), 'words')
print('Lean background:', len(lean_background.split()), 'words')
print('Reduction:', round((1 - len(lean_background.split())/len(bloated_background.split()))*100), '%')읽기 쉽게 배경 정보 형식 지정하기
배경 정보의 형식은 모델이 이를 얼마나 잘 처리하는지에 영향을 미칩니다. 권장 방법:
- 이름이 붙은 섹션을 사용합니다:
Stack:,Constraints:,Goal: - 서로 나란히 비교되는 항목에는 글머리 기호 목록을 사용합니다
- 가장 중요한 정보를 먼저 배치합니다
- 빈 줄이나 명확한 표시를 사용하여 배경 정보와 작업을 구분합니다
- 일관된 용어를 사용합니다. 같은 대상을 두 가지 이름으로 부르지 마십시오
import openai
client = openai.OpenAI(api_key='sk-your-key-here')
# Well-formatted background
formatted_background = (
'=== BACKGROUND ===\n'
'Project: real-time chat API\n'
'Stack: Python FastAPI, WebSockets, Redis pub/sub, PostgreSQL\n'
'Scale: 10,000 concurrent connections target\n'
'Constraints: single server for now, no Kubernetes\n'
'Current problem: messages are occasionally delivered out of order\n'
'=== TASK ===\n'
'Explain the root cause of out-of-order message delivery in WebSocket pub/sub '
'and suggest the simplest fix for our stack.'
)
response = client.chat.completions.create(
model='gpt-4o',
messages=[{'role': 'user', 'content': formatted_background}]
)
print(response.choices[0].message.content)시스템 메시지에서 재사용하는 배경 정보
인공지능 기반 애플리케이션을 만들고 있고 모든 대화에 같은 배경 정보가 적용된다면, 사용자 메시지마다 반복하는 대신 시스템 메시지에 해당 내용을 넣으십시오.
이 방법이 더 효율적이며 사용자가 매번 같은 내용을 다시 설명하지 않아도 모든 상호 작용에서 일관된 맥락을 유지할 수 있습니다.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-your-key-here')
# System message carries reusable background for every user turn
system_background = (
'You are an AI assistant embedded in Northlight Labs\' internal developer portal. '
'Background: our stack is Python 3.11, FastAPI, PostgreSQL 15, Redis 7, Docker. '
'We follow Google Python style guide. All code examples must include type hints. '
'We do not use ORM — raw SQL with psycopg3. '
'Our API follows REST conventions with snake_case JSON fields.'
)
# Now every user turn gets this background automatically
response = client.messages.create(
model='claude-opus-4-5',
max_tokens=300,
system=system_background,
messages=[
{'role': 'user', 'content': 'Show me how to insert a row into the users table.'}
]
)
print(response.content[0].text)지식 확인
한 제품 관리자가 인공지능의 도움을 받아 기능 출시 안내 이메일을 작성하려고 합니다. 회사 설립 연도, 직원 수, 사무실 위치를 포함한 다음 작업을 제시했습니다. 출력물을 가장 크게 개선하려면 어떤 종류의 배경 정보가 빠져 있습니까?
배경 정보 제공 — 복습
좋은 배경 정보는 일반적인 조언과 실제 상황에 맞는 조언을 가르는 차이입니다. 핵심 원칙은 다음과 같습니다.
- 해당 분야에서 올바른 답변에 영향을 미치는 분야 지식을 포함합니다
- 프로젝트 세부 정보를 공유합니다: 기술 구성, 단계, 팀 규모, 최근 변경 사항
- 이어 쓰기나 스타일 맞추기가 필요할 때 기존 작업을 포함합니다
- 쓸모없는 제안을 막을 수 있도록 제약 조건을 미리 밝힙니다
- 모델이 적절한 우려 사항을 다루도록 이해관계자 정보를 포함합니다
- 복잡한 상황 맥락에는 시간순 방법을 사용합니다
- 배경 정보는 간결하게 유지하고 답변에 영향을 미치는 내용만 포함합니다
자주 묻는 질문
“배경 정보 제공하기” 강의는 무료인가요?
네 — “배경 정보 제공하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.