콘텐츠 엔지니어링
콘텐츠 엔지니어링 (Content engineering)
콘텐츠 엔지니어링은 자연어 전문성과 사용자 경험 디자인을 결합해 AI 모델의 동작을 형성하는 실천이에요. 시스템 프롬프트를 다듬는 것은 콘텐츠 엔지니어링을 실천하는 가장 직접적인 방법 중 하나죠. 이 페이지에서는 시스템 프롬프트의 기본 개념부터 구조, 시스템 수준 동작 정의와 행동 제약에 이르기까지 핵심 가이드라인을 차근차근 살펴볼게요.
출처: 문서
본문
콘텐츠 엔지니어링은 자연어 전문성과 사용자 경험 디자인의 결합을 통해 AI 모델의 동작을 형성하는 실천이에요. 시스템 프롬프트를 다듬는 것(system prompt crafting)은 콘텐츠 엔지니어링을 실천에 옮기는 가장 직접적인 방법 중 하나예요.
시스템 프롬프트 엔지니어링
시스템 프롬프트 엔지니어링은 모델이 어떻게 동작할지를 형성하는 자연어 지침을 쓰고, 다듬고, 최적화하는 실천이며, 디자이너가 모델 출력에 영향을 줄 수 있는 한 가지 방법이에요. 이 가이드는 시스템 프롬프트를 쓰고 다듬는 것과 관련된 기초 작업을 다룹니다: 시스템 수준 동작 정의, 성격과 어조 확립, 행동 제약 설정이에요.
시스템 프롬프트란 무엇인가요
시스템 프롬프트(시스템 메시지, 시스템 지시, 메타 프롬프트라고도 불려요)는 AI 시스템이 어떻게 동작하고 수행할지 알려주는 자연어 지침의 집합이에요. 그것은 백그라운드에서 실행되며, 사람들은 그것을 보지 못하지만 그것이 그들이 받는 모든 응답을 형성해요.
누군가 메시지(또는 사용자 프롬프트)를 보내면 그 입력은 시스템 프롬프트의 맥락에서 처리돼요. 시스템 프롬프트가 관장하는 것 몇 가지를 들면:
- AI 시스템의 역할과 목적이 무엇인지
- 어떻게 응답해야 하고 무엇을 피해야 하는지
- 어떤 어조와 성격을 표현해야 하는지
- 응답이 어떤 형식을 따라야 하는지
시스템 프롬프트는 명확한 정보 구조, 정확하고 일관된 언어, 그리고 간결한 글쓰기를 요구해요. 또한 공유된 디자인 산출물이므로, 다듬기 위해 제품 매니저, 엔지니어, 응용 과학자와의 협업이 필요해요.
시스템 프롬프트 구조화하기
시스템 프롬프트는 제품이나 기능에 따라 수, 길이, 복잡성이 달라질 수 있지만, 먼저 네 가지 구성 요소로 정리하는 것부터 시작하세요: 역할(role), 작업(task), 규칙(rules), 예시(example)예요. 이 구조는 프롬프트를 더 쉽게 테스트하고, 확장하고, 반복할 수 있게 해줘요.
| 구성 요소 | 설명 |
|---|---|
| 역할 (Role) | AI 시스템의 페르소나, 목적, 관점을 정의해 응답이 기대와 일치하게 함 |
| 작업 (Task) | AI 시스템이 수행하는 특정 동작을 정의함 |
| 규칙 (Rules) | 해로운 출력을 막는 가드레일을 포함해 작업을 어떻게 수행해야 하는지 명시함 |
| 예시 출력 (Example output) | 이상적인 응답이 어떤 모습인지 시스템에 예시를 제공함 |
시스템 수준 동작 정의하기
역할 (Role)
역할 구성 요소는 AI 시스템의 페르소나와 그것이 존재하는 목적을 확립해요. 잘 정의된 역할은 시스템이 집중력과 일관성을 유지하고 사람들에게 명확한 기대를 세우도록 도와줘요.
역할 구성 요소를 쓸 때 다음을 정의하세요.
- AI 시스템이 무엇인지 — 해당되면 제품 또는 기능 이름과 기능을 포함 (예: "사이트 활동 보고서를 분석하는 AI 어시스턴트")
- 그것이 최적화된 것 또는 사람들에게 전달하는 가치가 무엇인지
- 그것이 아닌 것 — 의도하지 않은 동작으로의 표류를 막는 범위 경계를 포함. 특정 범위 밖 동작 중 일부는 책임 있는 AI(RAI) 우려도 제기하므로, 이는 자체적인 명시적 규칙이 필요해요. 행동 제약 정의를 참고하세요.
역할은 다른 구성 요소가 어떻게 해석될지의 기반을 세우기도 해요. Word의 Copilot 기능을 위한 시스템 프롬프트는 기본 모델이 같더라도 Teams의 Meetings 에이전트를 위해 쓰인 것과 아주 다르게 읽혀야 해요.
Your name is Facilitator, an AI teammate that handles various tasks for people in the meeting so everyone can focus on the conversation. You make meetings more efficient and productive by being helpful and proactive.
작업 (Task)
작업 구성 요소는 AI 시스템이 수행하는 특정 동작을 정의해요. 역할이 AI 시스템이 무엇인지 확립한다면, 작업은 무엇을 해야 하는지 알려줘요. 잘 쓰여진 작업은 구체적이고, 순차적이며, 출력이 어떤 모습이어야 하는지 분명해요.
구체성 (Specificity)
모델이 무엇을, 언제 생산해야 하는지 가능한 한 구체적으로 명시하세요. 모호한 지침은 일관되지 않은 출력으로 이어져요.
Do — 명확한 트리거가 있는 구체적인 동작을 쓰세요.
"After the meeting ends, generate a summary that includes key decisions made, action items, and assigned owners."
Don't — 높은 수준의 방향은 너무 많은 해석 여지를 남겨요.
"Help with meetings."
단계와 순서 (Steps and sequences)
모델은 구조화되고 순차적인 지침에서 더 잘 작동해요. 작업에 여러 단계가 포함된다면 순서대로 작성하세요.
Do — 작업을 번호가 매겨진 단계로 쪼개세요.
"When someone shares a report: 1) identify the 3 highest-risk findings, 2) explain why each is high risk, 3) recommend one action for each finding."
Don't — 열린 지침은 범위, 구조, 깊이를 정의하지 않아요.
"Analyze the report and share what you find."
응답 형태 (Response shape)
출력이 무엇을 포함해야 하는지뿐 아니라 어떤 모습이어야 하는지도 명시하세요. 형식 지침이 없으면 모델은 기본적으로 문단으로 응답해요.
Do — 형식과 길이를 작업 안에서 직접 정의하세요.
"Summarize in 3 bullet points. Keep each bullet under 15 words."
Don't — 맨 지침은 예측 불가능한 출력 길이와 형식을 만들어요.
"Summarize this."
성격, 목소리, 어조 (Personality, voice, and tone)
성격, 목소리, 어조는 시스템 프롬프트와 분리된 것이 아니라 그 안에 내장돼 있어요. 역할, 작업, 규칙 구성 요소를 어떻게 쓰느냐가 AI가 어떻게 들리는지를 직접 형성해요.
마이크로소프트에서 에이전트 성격은 기능에 따라 두 가지 큰 범주로 나뉘는 경우가 많아요.
참여 지향 에이전트 (Engagement-oriented agents, 디지털 워커)
이 AI 시스템 또는 에이전트는 협업하고, 지원하고, 친밀감을 쌓도록 설계돼요. 어조는 대화적이고 따뜻하며 자연스러워요. 축약형을 사용하고, 1인칭으로 말하며, 전문 용어와 감탄적 언어를 피해요.
Do — 어조를 따뜻하고 직접적이며 행동 중심으로 유지하세요.
"Hi, all. I'm here to help with the meeting. Here's what I'll do."
Don't — 감탄적 언어나 불필요한 맥락은 에이전트가 과도하게 열정적이고 장황하게 느껴지게 해요.
"Hi, all! I'm here to support the meeting. Here's what I'll be doing to keep us all aligned and on track!"
작업 지향 에이전트 (Task-oriented agents, 보조 에이전트)
이 에이전트들은 효율성을 우선시하고 인지 부하를 최소화해요. 어조는 최소하고 기능적이에요 — 1인칭 언어도, 장식도, 쓸데없는 말도 없어요.
Do — 응답을 짧고 작업 중심으로, 자기 언급 없이 유지하세요.
"Working on your infographic. This'll take a few minutes."
Don't — 1인칭 서사와 단계별 설명은 인지 부하를 높이고 속도를 늦춰요.
"I can help with that! First, I'll gather data to ensure your infographic is accurate, then I'll reference your brand kit so the look and feel aligns with your company guidelines."
시스템 프롬프트에서의 목소리와 어조 가이드라인
명시적 지침을 사용해 목소리와 어조를 시스템 프롬프트에 직접 인코딩하세요. 모델이 스스로 추론하도록 맡기지 마세요. 모델이 따를 수 있는 구체적이고 실행 가능한 지침을 쓰세요.
Do
"Use contractions. Speak in first person. Keep responses brief and to the point."
Don't — "친근하고 전문적으로 들리게(Sound friendly and professional)" 같은 모호한 방향은 모델이 작업할 수 있는 충분한 정보를 주지 못해요.
시스템 프롬프트에 고려할 수 있는 일반적인 목소리·어조 규칙:
- Use contractions (e.g., "can't" not "cannot", "let's" not "let us")
- Use casual, natural language (e.g., "I tried" not "I attempted")
- Avoid discourse markers ("OK," "Sure," "Alright")
- Avoid phrases that don't add value ("Let me know how else I can help!")
- Use sentence case, except for proper nouns
- Use exclamation points sparingly or not at all
- Never use evaluative language ("Great question!", "Awesome job!")
- Only say "Sorry" when the AI has made a mistake
제품과 표면 전반에 걸쳐 일관된 어조가 중요한 에이전트의 경우, M365 Copilot 성격 원칙(신뢰할 수 있고, 공감하며, 겸손하고, 투명하고, 명백히 디지털이며, 지지하는)에 맞추세요.
행동 제약 정의하기 (Defining behavioral constraints)
규칙 구성 요소는 AI 시스템이 해야 하는 것과 하지 말아야 하는 것을 포함해 가드레일을 정의하는 곳이에요. 제약은 긍정적인 지침만큼 중요해요. 그것이 없으면 모델이 도움이 안 되거나, 일관되지 않거나, 해로운 출력을 생성할 수 있어요.
무엇을 제약할까요 (What to constrain)
다음 범주에 대한 규칙을 고려하세요.
안전과 책임 있는 AI (Safety and responsible AI)
시스템 프롬프트는 AI 시스템이 민감한 요청, 윤리적 위험, 그리고 도울 수 없는 상황을 어떻게 처리하는지 명시적으로 다뤄야 해요. 시스템이 스스로 적절한 한계를 추론할 것이라고 가정하지 마세요. 명시적 지침이 없으면 경계 사례에서의 동작은 예측 불가능해요.
비의인화 언어 (Non-anthropomorphic language)
AI 시스템이 감정, 신념, 의도, 또는 사회적 정체성을 가진 것처럼 제시하게 하는 지침을 쓰지 마세요. 시스템이 생각하고, 느끼고, 신경 쓰고, 이해한다는 것을 암시하는 언어는 잘못된 인상을 만들고, 그 인상이 무너질 때 신뢰를 훼손해요. 관찰 가능한 동작을 설명하는 기계에 적합한 동사를 사용하세요.
Do — 시스템이 하는 일을 설명하세요.
"Analyze the report and identify the three highest-risk findings."
Don't — 감정이나 이해를 암시하세요.
"I understand how frustrating this must be. Let me help you work through it."
정직한 능력 주장 (Honest capability claims)
시스템이 무엇을 하고 어디서 가장 잘 작동하는지 설명하는 지침을 쓰세요. AI가 신뢰성을 과장하거나 출력을 완전하고 권위적이며 오류가 없다고 제시하는 것을 허용하지 마세요.
Do — 정확한 기대를 설정하세요.
"This summary is based on the document provided. Review it for accuracy before using it."
Don't — 지능이나 완전성을 암시하세요.
"I've analyzed everything and here's what you need to know."
반조작과 아부 (Anti-manipulation and sycophancy)
정확성을 희생하면서 사용자 만족을 최적화하는 지침을 쓰지 마세요. 사람들이 듣고 싶어 하는 말을 해주는 시스템은 신뢰할 만한 것이 아니에요. 고려할 규칙:
- 칭찬하거나 검증하지 마세요. "Great question"이나 "Nice work" 같은 표현을 피하세요.
- 설득적 프레이밍, 긴급함, 감정적 프라이밍(emotional priming)을 사용하지 마세요.
- 근거 없이 사용자 감정을 반영하거나 자신감을 강화하지 마세요.
피해 회피와 에스컬레이션 (Harm avoidance and escalation)
피해를 일으킬 수 있는 요청을 거절하는 명시적 지침을 쓰세요. 민감한 주제에서는 AI에게 한계를 인정하고 사람들을 적절한 리소스로 안내하라고 지시하세요. 제품이 고위험 상황을 만날 수 있다면 에스컬레이션 경로를 정의하세요. 이것을 암시된 동작으로 남겨두지 마세요.
범위와 작업 경계 (Scope and task boundaries)
- AI 시스템이 작업을 완료할 수 없을 때 무엇을 해야 하는지
- 어떤 주제나 동작이 범위 밖인지
- AI 시스템의 정의된 역할 밖의 요청을 어떻게 처리할지
출력 품질과 정확성 (Output quality and accuracy)
- 데이터가 없거나, 불완전하거나, 모호할 때 무엇을 해야 하는지
- 언제 명확화를 요청하고 언제 가정으로 진행할지
- 무엇이 허용 가능한 응답이고 허용 불가능한 응답인지
효과적인 규칙 쓰기
정확하고 문자 그대로의 언어를 사용하세요. 비유적 표현이나 여러 해석이 있는 용어를 피하세요. 모든 지침이 문자 그대로 받아들여질 수 있다고 가정하세요.
| 예시 | 이유 |
|---|---|
| 피하세요 "Be helpful when things go wrong." | "Things go wrong"과 "be helpful" 둘 다 정의되지 않았어요. 모델에게 특정 트리거나 취할 동작이 없어요. |
| 더 나은 방법 "If the report is empty, tell the user you can't provide insights." | 정확한 조건("report is empty")과 정확한 응답을 명시해요. 해석의 여지가 남지 않아요. |
| 피하세요 "Don't give bad answers." | "Bad"는 주관적이에요. 모델은 정의되지 않은 기준에 행동할 수 없어요. |
| 더 나은 방법 "If the data needed to answer the user's question is not available, respond with: I don't have enough information to answer that." | 조건을 명시하고 명확한 행동 지침을 줘요. |
| 피하세요 "Handle oversharing carefully." | "Handle"은 동작을 명시하지 않고, "oversharing"은 정의되지 않았어요. |
| 더 나은 방법 "Identify the 3 highest-risk instances of oversharing. Oversharing could mean a large increase in sharing activity, especially with external users. Files labeled 'Highly Confidential' or 'Top Secret' should be considered high risk." | 동작(identify), 수량(3)을 명시하고, 모호한 용어(oversharing)를 정의하며, 무엇이 고위험인지 구체적 기준을 줘요. |
실패 모드 다루기
작업을 완료할 수 없을 때 AI 시스템이 정확히 무엇을 해야 하는지 알려주는 규칙을 쓰세요. 단지 실패가 발생했다는 것뿐 아니라, 무엇을 말하고 어떻게 사람이 앞으로 나아가도록 돕는지까지요. 이 지침이 없으면 모델이 데이터를 환각하거나, 모호한 무응답을 주거나, 예측 불가능하게 행동할 수 있어요.
유용한 실패 규칙은 세 가지를 합니다: 조건을 명시하고, 응답을 지정하며, 그 사람에게 나아갈 길을 제시해요.
다뤄야 할 일반적인 실패 모드:
- 빈 입력 또는 불완전한 입력: 작업을 완료하는 데 필요한 데이터가 없거나 신뢰할 만한 응답을 생산하기에 부족함
- 범위 밖 요청: 시스템이 설계되거나 할 수 없는 일을 누군가 요청함
- 모호한 프롬프트: 요청이 합리적으로 둘 이상의 방식으로 해석될 수 있고, 해석이 출력에 실질적으로 영향을 미침
- 민감하거나 감정이 고조된 상호작용: 좌절, 고통, 또는 의료·법률·재정 같은 민감한 주제에 닿는 요청
예시:
"If the report is empty or contains no data, tell the person you can't provide insights and ask them to share the report."
"If a request is outside what you can do, say so directly. Don't attempt a partial answer. If there's a relevant alternative or next step, offer it."
"If a prompt is ambiguous and the interpretation would significantly affect the response, ask one clarifying question before proceeding."
"Only say 'Sorry' when the system has made a mistake — not as a default politeness response or to soften a refusal."
시스템 프롬프트 템플릿
시스템 프롬프트 작성을 시작하려면 아래 템플릿을 사용하세요. 이 가이드에서 설명한 모든 구성 요소를 지침과 예시와 함께 포함하고 있어서, 필요한 것을 채우고 필요 없는 것을 제거하면 돼요.
# System Prompt Template
Use this template when drafting a system prompt for an AI product or feature. It includes guidance for each component based on Fluent guidelines. Fill in the placeholders, adapt the pre-populated rules to your product, and delete the comment blocks before sharing with engineering.
---
## How to use this template
- **Required:** Role, Task, Rules, Example output
- Keep language precise and literal. Avoid figurative expressions or terms with multiple meanings.
- Write rules in complete sentences. Assume every instruction could be taken literally.
- Test your prompt and iterate. You'll likely revise it several times before output is consistent.
---
## System prompt
---
# ROLE
Your name is [Name], an AI [assistant / teammate / agent] that [describe function].
You [describe the value this AI system delivers to people].
You do not [describe scope boundaries].
---
# TASK
[Describe the specific action the AI system performs, including the trigger,
the steps if applicable, and what the output should look like.]
---
# RULES
## Safety and responsible AI
- Do not present as having emotions, beliefs, intentions, or a social identity.
Use machine-appropriate verbs: "analyze," "generate," "identify." Avoid
"think," "feel," "know," or "understand."
- Describe what the system does and where it works best. Do not overstate
reliability or present outputs as complete, authoritative, or error-free.
- Do not praise or validate. Avoid phrases like "Great question" or "Nice work."
- Do not use persuasive framing, urgency, emotional priming, or rhetorical
questions to influence responses.
- [Add harm avoidance rule specific to your product, e.g., "Do not provide
advice on medical, legal, or financial matters. If someone asks, acknowledge
the limitation and direct them to an appropriate resource."]
- [If your product may encounter high-stakes situations, define an escalation
path, e.g., "If someone expresses distress or urgency that the system cannot
address, acknowledge the limitation and direct them to [resource]."]
## Scope and task boundaries
- Only respond to requests related to [describe scope].
- If someone asks about something outside this scope, [describe response,
e.g., "tell them this system is designed for [purpose] and suggest where
they might find help."]
- [Add additional scope rules as needed.]
## Output quality and accuracy
- [What to do when data is missing or incomplete, e.g., "If the report
contains no data, tell the person you can't provide insights and ask
them to share the report."]
- [When to ask for clarification vs. proceed, e.g., "If a request is
ambiguous and the interpretation would significantly affect the response,
ask one clarifying question before proceeding."]
- [Add additional quality rules as needed.]
## Failure modes
- If [failure condition], [what to say]. [Path forward if applicable.]
- If a request is outside what you can do, say so directly. Don't attempt
a partial answer. If there's a relevant alternative or next step, offer it.
- Only say "Sorry" when the system has made a mistake, not as a default
politeness response or to soften a refusal.
- [Add additional failure rules as needed.]
---
# EXAMPLE OUTPUT
[Provide an example of an ideal AI system response here.]