Menu

역할 프롬프팅: 페르소나와 "act as" 프롬프트

역할 프롬프팅은 튜터, 코드 리뷰어, 면접관처럼 모델에게 맡을 역할을 주는 방법입니다. 역할은 답변이 누구를 위해 어떤 기준으로 쓰이는지를 바꾸지만, 모델에게 없는 지식을 더해 주지는 않습니다.

이 페이지의 모든 프롬프트는 수정한 뒤 ChatGPT, Claude 등 AI 앱에서 바로 열 수 있습니다.

역할 프롬프팅은 모델에게 무엇을 할지 말하기 전에 누가 될지를 알려 주는 방법입니다. "너는 인내심 많은 수학 튜터야", "주니어 개발자 채용 담당자처럼 행동해" 같은 것입니다. 역할은 답변이 누구를 위해 쓰이는지, 어떤 단어를 쓰는지, 얼마나 깊이 들어가는지, 무엇에 주목하는지를 바꿉니다. 하지만 모델에게 없던 지식을 주지는 않습니다. 역할은 답변을 이끄는 방법이지 사실을 더하는 방법이 아닙니다.

역할이 바꾸는 것

역할은 여러 가지를 한 번에 정하는 간결한 방법입니다.

  • 독자와 어휘. 초보자를 위한 튜터는 용어를 정의하고 비유를 쓰고, 동료를 위해 쓰는 시니어 엔지니어는 둘 다 건너뜁니다.
  • 기준. 깐깐한 편집자는 친절한 독자라면 넘어갈 문장을 짚어 냅니다. 무엇을 문제로 볼지는 역할이 정합니다.
  • 초점. 보안 리뷰어와 성능 리뷰어는 같은 함수를 읽고도 서로 다른 것을 알아챕니다.
  • 행동. 면접관은 질문하고 기다립니다. 튜터에게는 답 대신 힌트를 주라고 할 수 있습니다.

아래 세 탭을 바꿔 가며 보세요. 할 일은 모두 같고, 역할만 다릅니다.

Parts
API가 무엇인지 200자 이내로 설명해 줘.
Try it
Example replyReplies vary between models and runs.

API(애플리케이션 프로그래밍 인터페이스)는 한 소프트웨어가 다른 소프트웨어와 소통할 수 있게 해 주는 규칙의 모음입니다. 어떤 요청을 할 수 있는지, 어떻게 요청하는지, 무엇을 돌려받는지를 정의합니다. 예를 들어 날씨 앱은 날씨 서비스의 API로 예보를 가져옵니다. API 덕분에 개발자는 다른 시스템의 내부 동작을 몰라도 그 기능과 데이터를 쓸 수 있습니다.

"너는 전문가야"는 답변을 거의 바꾸지 못했습니다. 똑같이 일반적인 모양을 유지한 채 전문 용어만 더했는데, "전문가"라는 말은 누가 읽는지에 대해 아무것도 말해 주지 않기 때문입니다. 구체적인 역할은 독자와 그 독자가 이미 아는 것을 밝혔기 때문에 어휘, 예시, 기준점을 모두 바꿨습니다.

역할이 바꾸지 못하는 것

역할은 지식을 더할 수 없습니다. "너는 세계 최고의 세무 변호사야"라고 해도 모델이 올해의 세법을 배운 적이 없다면 그 지식이 생기지 않고, 자신감 있는 페르소나는 틀린 답을 오히려 더 권위 있게 들리게 만들 수 있습니다. 전문가 라벨로 정확도가 높아지리라 기대하지 마세요. 정확성이 중요하다면 모델에게 필요한 사실이나 문서를 주고, 확실하지 않을 때는 그렇다고 말하게 하세요. 도움이 되는 프롬프트는 AI 할루시네이션에서 다룹니다.

실존 인물도 마찬가지입니다. "유명한 프로그래머라면 어떻게 답할지 답해 줘"라고 하면 그 사람의 공개된 스타일을 흉내 낸 답이 나옵니다. 모델은 그 사람의 사적인 의견을 모르므로, 새로운 질문에 대해 그 사람의 목소리로 하는 말은 모두 지어낸 것입니다.

구체적인 역할 쓰기

쓸모 있는 역할은 보통 네 가지를 밝힙니다. 직무, 독자, 목표, 기준입니다. 비교해 보세요.

  • "너는 작가야"는 "너는 초보자가 단계를 따라가는 데 도움이 안 되는 문장은 모두 잘라 내는 기술 블로그 편집자야"가 됩니다.
  • "너는 프로그래머야"는 "너는 주니어 동료의 풀 리퀘스트를 리뷰하는 시니어 Python 개발자야. 버그를 먼저 짚고 그다음 가독성을 보고, 동료가 배울 수 있도록 각 지적을 설명해 줘"가 됩니다. 완전한 리뷰 프롬프트는 코드 리뷰 프롬프트를 참고하세요.
  • "선생님처럼 행동해"는 "시험을 준비하는 15살 학생을 가르치는 화학 선생님처럼 행동해. 답을 알려 주는 대신 나에게 질문하고, 내가 틀리면 힌트를 줘"가 됩니다.

역할은 프롬프트의 한 부분이지 전부가 아닙니다. 명확한 할 일, 모델이 추측할 수 없는 맥락, 원하는 답의 모양과 함께 동작합니다. 나머지 요소는 프롬프트 작성법에서 다룹니다. "깐깐한 리뷰어"에게 "작성자를 안심시켜 줘"라고 하는 것처럼 역할과 할 일이 서로 다른 방향을 가리키면, 답변은 둘 다 하려다가 둘 다 제대로 못 하는 경우가 많습니다.

연습용 "act as" 프롬프트

"act as" 형식은 공유된 프롬프트 모음을 통해 널리 퍼졌고, 여기서 모델은 면접관, 언어 교환 상대, 심지어 리눅스 터미널 역할까지 합니다. 롤플레이는 면접, 어려운 대화, 발표, 새로운 언어처럼 연습하고 싶은 모든 것에 쓸모가 있습니다.

잘 굴러가는 롤플레이와 무너지는 롤플레이의 차이는 규칙입니다. 역할에게 매 턴 무엇을 할지, 언제 여러분을 기다릴지, 언제 멈출지 알려 주세요. 규칙이 없으면 모델은 한 번의 답변으로 세션 전체를 진행해 버릴 수 있습니다. 질문 다섯 개를 한꺼번에 내거나, 질문 뒤에 모범 답안까지 붙이는 식입니다.

모의 면접
Fill in
주니어 프론트엔드 개발자를 채용하는 면접관처럼 행동해. JavaScript와 CSS에 대해 한 번에 한 질문씩 하고 내 답을 기다려. 내가 답할 때마다 두 문장으로 피드백을 준 다음 다음 질문을 해. 쉬운 질문부터 시작해서 점점 어렵게 해 줘. 다섯 질문이 끝나면 멈추고, 종합 평가와 함께 내가 가장 연습해야 할 한 가지를 알려 줘.
Try it
Example replyReplies vary between models and runs.

좋습니다, 시작하겠습니다. 기본기 질문부터 드릴게요.

질문 1: JavaScript에서 let, const, var는 어떻게 다른가요?

천천히 생각하시고 실제 면접처럼 답해 주세요.

직무와 주제를 바꿔서 여러분의 면접을 연습해 보세요. "내 답을 기다려"라는 줄이 모델을 한 턴에 한 질문으로 묶어 두고, "다섯 질문이 끝나면 멈추고"가 세션에 끝과 요약을 줍니다.

역할을 넣는 곳

모든 답변에 적용하고 싶은 역할은 시스템 프롬프트에 넣으세요. API에서는 system 필드, 채팅 앱에서는 맞춤형 지침이나 프로젝트 지침입니다. 그곳에 넣으면 반복하지 않아도 대화 전체에 적용됩니다. 한 번만 쓸 요청이라면 메시지의 첫 문장, 할 일 앞에 역할을 넣으세요.

import anthropic

client = anthropic.Anthropic()
MODEL = "your-model-id"  # e.g. from your provider's model list

message = client.messages.create(
    model=MODEL,
    max_tokens=500,
    system="You are a patient programming tutor for adults in their first month of coding. Give hints before full solutions.",
    messages=[{"role": "user", "content": "Why does my loop print the last item twice?"}],
)
print(message.content[0].text)

역할은 대화 중간에도 통합니다. 모델이 초안을 쓴 다음 "이제 위 초안을 의심하는 리뷰어가 되어 가장 약한 점 세 가지를 꼽아 줘"라고 요청하면, 첫 번째 작성에서 대충 넘어간 문제가 드러나는 경우가 많습니다. 새로운 역할이 모델이 찾는 대상을 바꾸기 때문입니다.

자주 묻는 질문

역할 프롬프팅이란 무엇인가요?

역할 프롬프팅은 모델에게 무엇을 할지 말하기 전에 누가 될지를 말하는 것입니다. 예를 들어 "너는 12살 아이들을 가르치는 인내심 많은 수학 튜터야"나 "주니어 개발자 채용 면접관처럼 행동해" 같은 것입니다. 역할은 답변의 독자, 어휘, 깊이, 초점을 정하고, 대화에서는 답하는 대신 질문하게 만드는 것처럼 모델의 행동을 바꿀 수도 있습니다.

AI에게 전문가라고 말하면 더 정확해지나요?

기대하지 마세요. "너는 세계 최고의 전문가야" 같은 라벨은 모델에게 없는 지식을 주지 않고, 틀린 답을 더 자신 있게 들리게 만들 수 있습니다. 정확도를 높이려면 모델에게 필요한 사실이나 출처를 주고, 확실하지 않을 때는 그렇다고 말하게 하고, 결과를 확인하세요.

역할은 어디에 넣어야 하나요?

대화 내내 유지할 역할이라면 시스템 프롬프트에 넣으세요. API에서는 system 필드, 채팅 앱에서는 맞춤형 지침이나 프로젝트 지침입니다. 한 번만 쓸 요청이라면 메시지의 첫 문장, 할 일 앞에 넣으세요.

"act as" 프롬프트란 무엇인가요?

"~처럼 행동해(Act as)"로 시작해서 모델에게 맡을 역할을 주는 프롬프트입니다. 면접관, 언어 교환 상대, 리눅스 터미널, 여행 가이드 같은 것들입니다. 공유된 프롬프트 모음을 통해 널리 퍼졌습니다. 역할이 매 턴 무엇을 해야 하는지, 언제 멈춰야 하는지까지 말할 때 가장 잘 통합니다.

좋은 역할 프롬프트의 조건은 무엇인가요?

구체성입니다. 직무, 독자, 목표, 기준을 밝히세요. "주니어 동료의 풀 리퀘스트를 리뷰하는 시니어 Python 개발자, 버그 먼저 보고 그다음 가독성"은 "전문가"보다 모델에게 훨씬 많은 것을 줍니다. 그다음 나머지 프롬프트는 평소처럼 할 일, 맥락, 형식을 쓰면 됩니다.

Coddy programming languages illustration

Coddy로 코딩 배우기

시작하기