본 콘텐츠의 이미지 및 내용은 AI로 생성되었습니다.
본 콘텐츠의 이미지 및 내용을 무단으로 복제, 배포, 수정하여 사용할 경우 저작권법에 의해 법적 제재를 받을 수 있습니다.
이미지 로딩 중...
AI Generated
2025. 12. 25. · 3 Views
창의적 글쓰기 프롬프트 완벽 가이드
LLM을 활용한 창의적 글쓰기의 핵심 기법을 배웁니다. 스타일 지정부터 페르소나 기반 작성까지, 실무에서 바로 사용할 수 있는 프롬프트 엔지니어링 기법을 소개합니다.
목차
1. 스타일과 톤 지정
어느 날 김개발 씨가 회사에서 마케팅 팀으로부터 요청을 받았습니다. "LLM으로 블로그 글을 작성하는데, 너무 딱딱해요.
좀 더 친근하게 만들 수 없나요?" 김개발 씨는 고민에 빠졌습니다.
스타일과 톤 지정은 LLM이 생성하는 글의 분위기와 말투를 제어하는 핵심 기법입니a다. 마치 작가가 소설을 쓸 때 문체를 선택하는 것처럼, 프롬프트에서도 원하는 스타일을 명확히 지정할 수 있습니다.
이를 통해 동일한 내용도 전혀 다른 느낌의 글로 변환할 수 있습니다.
다음 코드를 살펴봅시다.
from openai import OpenAI
client = OpenAI()
# 스타일과 톤을 명확히 지정한 프롬프트
prompt = """
다음 내용을 '친근하고 대화체' 스타일로 작성해주세요.
- 반말 사용 (~해, ~야)
- 이모지 적절히 활용
- 일상적인 비유 사용
주제: 파이썬 데코레이터 개념 설명
"""
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.7 # 창의성 조절
)
print(response.choices[0].message.content)
김개발 씨는 입사 6개월 차 백엔드 개발자입니다. 최근 회사에서 LLM을 활용한 콘텐츠 자동 생성 프로젝트를 맡게 되었습니다.
첫 결과물을 마케팅 팀에 보여줬더니 반응이 싸늘했습니다. "너무 딱딱하고 재미없어요." 선배 개발자 박시니어 씨가 다가와 화면을 보더니 말했습니다.
"아, LLM한테 어떤 스타일로 쓰라고 안 알려줬구나. 그럼 기본 톤으로 나오지." 그렇다면 스타일과 톤 지정이란 정확히 무엇일까요?
쉽게 비유하자면, 이것은 마치 배우에게 연기 지침을 주는 것과 같습니다. 같은 대사라도 코미디 톤으로 할지, 진지한 톤으로 할지에 따라 완전히 다른 느낌이 나죠.
LLM도 마찬가지입니다. "친근하게", "전문적으로", "유머러스하게"와 같은 지침을 주면 그에 맞는 스타일로 글을 작성합니다.
스타일 지정이 없던 시절에는 어땠을까요? 초기 LLM 활용자들은 같은 프롬프트를 반복해서 실행하며 원하는 톤이 나올 때까지 기다려야 했습니다.
때로는 10번, 20번을 시도해도 만족스러운 결과를 얻지 못했습니다. 더 큰 문제는 일관성이 없다는 것이었습니다.
같은 프롬프트로 여러 글을 생성하면 각각 다른 분위기로 나왔습니다. 바로 이런 문제를 해결하기 위해 명시적 스타일 지정 기법이 등장했습니다.
스타일을 명확히 지정하면 원하는 톤의 글을 첫 시도에 얻을 수 있습니다. 또한 여러 글을 생성해도 일관된 분위기를 유지할 수 있습니다.
무엇보다 독자층에 맞는 맞춤형 콘텐츠 제작이 가능하다는 큰 이점이 있습니다. 위의 코드를 한 줄씩 살펴보겠습니다.
먼저 프롬프트 문자열에서 스타일 지침을 구체적으로 명시합니다. "친근하고 대화체"라는 전체 톤을 설정하고, 반말 사용, 이모지 활용, 비유 사용이라는 세부 규칙을 제시합니다.
이렇게 계층적으로 스타일을 지정하면 LLM이 정확히 이해할 수 있습니다. 다음으로 temperature 파라미터를 0.7로 설정합니다.
이 값이 높을수록 더 창의적이고 다양한 표현이 나오며, 낮을수록 일관되고 예측 가능한 결과가 나옵니다. 창의적 글쓰기에는 보통 0.7-0.9 범위를 사용합니다.
실제 현업에서는 어떻게 활용할까요? 예를 들어 기술 블로그를 운영하는 스타트업이 있다고 가정해봅시다.
대학생 독자를 위한 글은 "친근하고 재미있는 톤"으로, 시니어 개발자를 위한 글은 "전문적이고 간결한 톤"으로 작성해야 합니다. 스타일 지정을 활용하면 동일한 기술 주제라도 독자층에 맞게 자동으로 변환할 수 있습니다.
네이버, 카카오 같은 IT 기업들은 이런 기법으로 뉴스레터, 블로그, 문서를 자동 생성하고 있습니다. 하지만 주의할 점도 있습니다.
초보 개발자들이 흔히 하는 실수 중 하나는 너무 많은 스타일 지침을 한 번에 주는 것입니다. "친근하면서도 전문적이고, 유머러스하지만 진지하게"처럼 모순된 지침을 주면 LLM이 혼란스러워합니다.
따라서 핵심 톤 하나와 2-3개의 구체적 규칙으로 단순하게 유지해야 합니다. 또한 스타일 지정은 프롬프트 맨 앞에 배치하는 것이 효과적입니다.
LLM은 초반 지침을 더 강하게 인식하기 때문입니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.
박시니어 씨의 조언대로 프롬프트에 스타일 지침을 추가한 김개발 씨는 코드를 다시 실행했습니다. 결과물을 본 마케팅 팀장님이 환하게 웃으며 말했습니다.
"이거예요! 바로 이런 느낌!" 스타일과 톤 지정을 제대로 활용하면 독자에게 정확히 원하는 인상을 주는 글을 작성할 수 있습니다.
여러분도 오늘 배운 내용을 실제 프로젝트에 적용해 보세요.
실전 팁
💡 - 스타일 지침은 프롬프트 맨 앞에 배치하여 강조하세요
- 모순되지 않는 2-3개의 구체적 규칙만 제시하세요
- 독자층에 따라 스타일 템플릿을 미리 만들어두면 효율적입니다
2. 창의성 vs 일관성 균형
김개발 씨가 블로그 자동 생성 시스템을 성공적으로 만들고 나서 새로운 문제에 부딪혔습니다. "어제 생성한 글과 오늘 생성한 글이 너무 달라요.
같은 시리즈인데 스타일이 다르면 이상하잖아요?"
창의성과 일관성의 균형은 LLM 글쓰기에서 가장 중요한 트레이드오프입니다. temperature, top_p 같은 파라미터로 제어하며, 창의성이 높으면 독창적이지만 예측 불가능하고, 일관성이 높으면 안정적이지만 지루할 수 있습니다.
상황에 맞는 적절한 균형점을 찾는 것이 핵심입니다.
다음 코드를 살펴봅시다.
from openai import OpenAI
client = OpenAI()
# 창의성 높음 - 독창적이지만 예측 불가능
creative_response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "파이썬 리스트를 재미있게 설명해줘"}],
temperature=1.2, # 높은 창의성
top_p=0.95
)
# 일관성 높음 - 안정적이지만 보수적
consistent_response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "파이썬 리스트를 재미있게 설명해줘"}],
temperature=0.3, # 낮은 창의성, 높은 일관성
top_p=0.8
)
# 균형 잡힌 설정 - 실무 추천
balanced_response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": "파이썬 리스트를 재미있게 설명해줘"}],
temperature=0.7, # 균형점
top_p=0.9
)
김개발 씨는 블로그 자동 생성 시스템이 잘 돌아가는 것을 보고 뿌듯해했습니다. 그런데 일주일 후 마케팅 팀에서 또 다른 피드백이 왔습니다.
"월요일에 나온 글과 금요일에 나온 글이 완전히 달라요. 같은 시리즈인데 독자들이 혼란스러워할 것 같아요." 박시니어 씨가 코드를 보더니 고개를 끄덕였습니다.
"아, temperature를 너무 높게 설정했네. 창의성만 높이면 일관성이 떨어져." 그렇다면 창의성과 일관성의 균형이란 무엇일까요?
쉽게 비유하자면, 이것은 마치 재즈 연주와 클래식 연주의 차이와 같습니다. 재즈는 즉흥 연주로 매번 다르고 창의적이지만 예측하기 어렵습니다.
반면 클래식은 악보대로 정확히 연주해서 일관되지만 새로움이 부족할 수 있습니다. LLM 글쓰기도 마찬가지로 이 두 가지 특성 사이에서 적절한 지점을 찾아야 합니다.
균형 조절 없이 무작정 사용하던 시절에는 어땠을까요? 개발자들은 LLM이 생성한 결과물의 품질이 들쭉날쭉한 것을 감수해야 했습니다.
어떤 날은 훌륭한 글이 나오고, 어떤 날은 영 아닌 글이 나왔습니다. 시리즈물을 만들 때는 더욱 심각했습니다.
첫 번째 글은 재미있고 창의적인데 두 번째 글은 완전히 다른 스타일이었습니다. 독자들은 "이거 같은 사람이 쓴 거 맞아요?"라고 물었습니다.
바로 이런 문제를 해결하기 위해 파라미터 기반 제어 기법이 등장했습니다. temperature와 top_p를 조절하면 결과물의 일관성을 유지하면서도 적절한 창의성을 발휘할 수 있습니다.
또한 용도에 맞게 설정을 변경하여 마케팅 카피는 창의적으로, 기술 문서는 일관되게 작성할 수 있습니다. 무엇보다 예측 가능한 품질 관리가 가능하다는 큰 이점이 있습니다.
위의 코드를 한 줄씩 살펴보겠습니다. 먼저 temperature 파라미터를 봅시다.
이 값은 0에서 2 사이의 숫자로, 낮을수록 일관되고 높을수록 창의적입니다. 1.2처럼 높게 설정하면 매번 완전히 다른 표현과 구조의 글이 나옵니다.
반대로 0.3처럼 낮게 설정하면 같은 프롬프트로 여러 번 실행해도 거의 비슷한 결과가 나옵니다. 다음으로 top_p 파라미터는 0에서 1 사이 값으로, 모델이 고려할 단어 후보의 범위를 제한합니다.
0.95로 설정하면 상위 95%의 확률을 가진 단어들 중에서 선택하고, 0.8로 설정하면 더 좁은 범위에서 선택합니다. 이를 통해 극단적으로 이상한 단어 선택을 방지할 수 있습니다.
실무에서는 보통 temperature 0.7, top_p 0.9를 균형점으로 사용합니다. 실제 현업에서는 어떻게 활용할까요?
예를 들어 이커머스 회사에서 상품 설명을 자동 생성한다고 가정해봅시다. 패션 아이템 설명은 창의적이고 감성적이어야 하므로 temperature 0.9-1.1로 설정합니다.
반면 전자제품 스펙 설명은 정확하고 일관되어야 하므로 temperature 0.3-0.5로 설정합니다. 같은 회사, 같은 시스템이지만 상황에 따라 다른 설정을 사용하는 것입니다.
쿠팡, 무신사 같은 플랫폼들이 이런 방식으로 수만 개의 상품 설명을 효율적으로 생성하고 있습니다. 하지만 주의할 점도 있습니다.
초보 개발자들이 흔히 하는 실수는 "창의적 = 무조건 좋다"고 생각하는 것입니다. temperature를 1.5 이상으로 올리면 문법이 이상해지거나 논리가 맞지 않는 글이 나올 수 있습니다.
LLM이 너무 많은 자유를 얻으면 오히려 품질이 떨어집니다. 또 다른 실수는 한 번 설정하고 계속 쓰는 것입니다.
용도가 바뀌면 파라미터도 조정해야 합니다. 기술 문서를 쓸 때와 광고 카피를 쓸 때는 완전히 다른 설정이 필요합니다.
다시 김개발 씨의 이야기로 돌아가 봅시다. 박시니어 씨의 조언을 듣고 김개발 씨는 temperature를 0.7로 낮췄습니다.
며칠 후 마케팅 팀에서 연락이 왔습니다. "이제 시리즈 전체가 하나의 톤으로 통일됐어요.
완벽해요!" 창의성과 일관성의 균형을 이해하면 상황에 맞는 최적의 결과물을 얻을 수 있습니다. 여러분도 프로젝트 성격에 따라 파라미터를 조절해 보세요.
실전 팁
💡 - 일반 콘텐츠는 temperature 0.7-0.8, 기술 문서는 0.3-0.5, 창의적 글쓰기는 0.9-1.1 사용
- top_p는 보통 0.9로 고정하고 temperature로만 조절하는 것이 간단합니다
- 같은 프롬프트로 3-5번 실행해보고 일관성을 체크하세요
3. 페르소나 기반 글쓰기
어느 날 김개발 씨는 회사 블로그에 올릴 인터뷰 기사를 작성해야 했습니다. "시니어 개발자의 조언"이라는 주제인데, LLM이 생성한 글은 너무 일반적이고 깊이가 없었습니다.
"어떻게 하면 진짜 시니어 개발자처럼 쓸 수 있을까?"
페르소나 기반 글쓰기는 LLM에게 특정 역할과 관점을 부여하여 더욱 깊이 있고 설득력 있는 글을 작성하게 하는 기법입니다. 마치 배우가 캐릭터에 몰입하듯이, LLM도 전문가, 초보자, 특정 직업군의 시각으로 글을 쓸 수 있습니다.
이를 통해 더 진정성 있고 구체적인 콘텐츠를 만들 수 있습니다.
다음 코드를 살펴봅시다.
from openai import OpenAI
client = OpenAI()
# 페르소나를 명확히 정의한 프롬프트
prompt = """
당신은 15년 경력의 시니어 백엔드 개발자입니다.
- 스타트업 CTO 경험 5년
- 대규모 트래픽 처리 전문가
- 주니어 개발자 멘토링 100명 이상
- 실패 경험을 솔직하게 공유하는 스타일
이런 배경을 바탕으로 "주니어 개발자가 가장 먼저 배워야 할 것"에 대해
조언해주세요. 실제 경험담을 포함해서 작성해주세요.
"""
response = client.chat.completions.create(
model="gpt-4",
messages=[
{"role": "system", "content": "당신은 15년 경력의 시니어 백엔드 개발자입니다."},
{"role": "user", "content": "주니어 개발자가 가장 먼저 배워야 할 것은 무엇인가요?"}
],
temperature=0.8
)
print(response.choices[0].message.content)
김개발 씨는 이번 주 목표가 "시니어 개발자의 조언" 시리즈를 3편 작성하는 것이었습니다. 첫 번째 시도로 "시니어 개발자처럼 조언을 작성해줘"라고 프롬프트를 넣었습니다.
결과물은... 너무 뻔했습니다.
"열심히 공부하세요", "기본기가 중요합니다" 같은 누구나 할 수 있는 말들뿐이었습니다. 박시니어 씨가 결과물을 보더니 웃었습니다.
"LLM한테 그냥 '시니어 개발자처럼'이라고만 하면 안 돼. 어떤 시니어인지 구체적으로 알려줘야지." 그렇다면 페르소나 기반 글쓰기란 정확히 무엇일까요?
쉽게 비유하자면, 이것은 마치 영화 배우가 캐릭터 분석을 하는 것과 같습니다. 배우는 "이 인물은 몇 살이고, 어떤 경험을 했고, 어떤 가치관을 가졌는가"를 철저히 분석합니다.
그래야 진짜처럼 연기할 수 있죠. LLM도 마찬가지입니다.
구체적인 배경, 경험, 전문성을 부여하면 그에 맞는 깊이와 관점으로 글을 작성합니다. 페르소나 설정 없이 글을 쓰던 시절에는 어땠을까요?
LLM은 평균적이고 일반적인 답변만 내놓았습니다. "전문가의 조언"을 요청해도 교과서에 나올 법한 뻔한 내용만 나왔습니다.
독자들은 "이건 인터넷 어디서나 볼 수 있는 얘기잖아"라고 반응했습니다. 더 큰 문제는 설득력이 없다는 것이었습니다.
실제 경험에서 우러나온 조언이 아니라 그냥 일반론만 늘어놓는 느낌이었습니다. 바로 이런 문제를 해결하기 위해 페르소나 프롬프팅 기법이 등장했습니다.
구체적인 페르소나를 설정하면 실제 전문가의 깊이와 관점을 얻을 수 있습니다. 또한 구체적인 사례와 경험담이 자연스럽게 포함됩니다.
무엇보다 독자가 신뢰할 수 있는 진정성을 느낄 수 있다는 큰 이점이 있습니다. 위의 코드를 한 줄씩 살펴보겠습니다.
먼저 페르소나 정의 부분을 봅시다. "15년 경력"이라는 숫자로 전문성을 구체화했습니다.
그냥 "시니어"라고만 하는 것보다 훨씬 명확합니다. 다음으로 "스타트업 CTO 경험", "대규모 트래픽 처리"처럼 구체적인 경험 영역을 나열했습니다.
이렇게 하면 LLM이 해당 분야의 지식을 활성화합니다. 중요한 것은 "실패 경험을 솔직하게 공유하는 스타일"처럼 성격과 말투까지 지정한 점입니다.
이렇게 하면 단순히 지식만 나열하는 것이 아니라, 특정 인물의 목소리로 말하게 됩니다. 코드에서는 system 메시지에 페르소나를 넣었습니다.
system 메시지는 LLM의 전체 행동 방식을 설정하므로, 페르소나를 여기에 두면 대화 전체에 일관되게 적용됩니다. 실제 현업에서는 어떻게 활용할까요?
예를 들어 의료 정보 플랫폼을 운영한다고 가정해봅시다. 일반 건강 정보는 "10년 경력 가정의학과 전문의" 페르소나로 작성하고, 전문 의학 지식은 "20년 경력 내과 교수" 페르소나로 작성합니다.
환자 후기 형식의 글은 "실제 질병 극복 경험이 있는 30대 직장인" 페르소나로 작성합니다. 같은 주제라도 누가 말하느냐에 따라 완전히 다른 각도의 글이 나옵니다.
네이버 지식iN, 당근마켓 같은 플랫폼들이 이런 기법으로 다양한 관점의 콘텐츠를 생성하고 있습니다. 하지만 주의할 점도 있습니다.
초보 개발자들이 흔히 하는 실수는 페르소나를 너무 모호하게 설정하는 것입니다. "전문가", "경험자"처럼 추상적으로만 표현하면 효과가 없습니다.
"10년 경력", "프로젝트 50개 이상 진행", "특정 기술 스택 전문" 같은 구체적인 수치와 사실이 필요합니다. 또 다른 실수는 페르소나와 맞지 않는 질문을 하는 것입니다.
백엔드 전문가 페르소나한테 프론트엔드 CSS 디자인 팁을 물으면 이상한 답변이 나올 수 있습니다. 페르소나의 전문 영역 내에서 질문해야 합니다.
마지막으로 중요한 것은 윤리적 사용입니다. 실존 인물의 이름을 사용하거나, 특정 인물을 사칭하는 페르소나는 만들면 안 됩니다.
"마크 저커버그처럼 작성해줘"가 아니라 "20년 경력 소셜미디어 플랫폼 CEO"처럼 익명의 일반화된 페르소나를 사용해야 합니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.
박시니어 씨의 조언대로 구체적인 페르소나를 설정한 김개발 씨는 코드를 다시 실행했습니다. 이번에는 "제가 CTO 시절 겪은 가장 큰 실패는..."으로 시작하는 진솔한 조언이 나왔습니다.
마케팅 팀장님이 감탄하며 말했습니다. "이거 진짜 인터뷰한 것 같아요!" 페르소나 기반 글쓰기를 제대로 활용하면 독자에게 진정성과 깊이를 전달할 수 있습니다.
여러분도 다양한 페르소나를 실험해 보세요.
실전 팁
💡 - 페르소나는 "경력 연수 + 구체적 경험 + 전문 분야 + 말투/성격" 4가지 요소로 구성하세요
- system 메시지에 페르소나를 넣으면 대화 전체에 일관되게 적용됩니다
- 실존 인물 사칭은 금지, 일반화된 직업군 페르소나를 사용하세요
4. 실습 마케팅 카피 생성
김개발 씨의 블로그 자동 생성 시스템이 성공하자, 이번에는 마케팅 팀에서 새로운 요청이 들어왔습니다. "신제품 런칭하는데 광고 카피 100개를 3일 안에 만들어야 해요.
도와주실 수 있나요?" 김개발 씨는 지금까지 배운 기법들을 총동원할 때가 왔다고 생각했습니다.
마케팅 카피 생성은 창의적 글쓰기 프롬프트의 실전 활용 사례입니다. 타겟 고객 페르소나, 제품 특징, 감성 톤, 행동 유도 문구를 조합하여 설득력 있는 광고 문구를 대량으로 생성합니다.
temperature를 높게 설정해 다양한 변형을 만들고, A/B 테스트로 최적안을 선택할 수 있습니다.
다음 코드를 살펴봅시다.
from openai import OpenAI
client = OpenAI()
# 마케팅 카피 생성 프롬프트
def generate_marketing_copy(product_name, target_audience, key_features, tone):
prompt = f"""
당신은 10년 경력의 카피라이터입니다.
- 광고대행사 크리에이티브 디렉터 출신
- 소비자 심리학 전공
- 바이럴 캠페인 50건 이상 성공
다음 조건으로 광고 카피 5개를 작성해주세요:
제품명: {product_name}
타겟 고객: {target_audience}
핵심 특징: {key_features}
톤: {tone}
각 카피는:
- 15자 이내 헤드라인
- 30자 이내 서브카피
- 행동 유도 문구 포함
"""
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=1.0, # 높은 창의성
n=3 # 3개 버전 생성
)
return [choice.message.content for choice in response.choices]
# 실행 예시
copies = generate_marketing_copy(
product_name="AI 코딩 어시스턴트",
target_audience="주니어 개발자, 25-35세",
key_features="자동 코드 리뷰, 버그 탐지, 실시간 제안",
tone="친근하고 유머러스하게, 기술 용어는 쉽게 풀어서"
)
for i, copy in enumerate(copies, 1):
print(f"\\n=== 버전 {i} ===")
print(copy)
김개발 씨는 긴장했습니다. 지금까지는 블로그 글 같은 긴 형식만 다뤘는데, 이번에는 짧고 강렬한 광고 카피를 만들어야 합니다.
게다가 100개나 필요하다니. 박시니어 씨가 다가와 말했습니다.
"마케팅 카피는 창의성이 생명이야. temperature를 높게 설정하고 대량으로 뽑아낸 다음, 좋은 걸 골라내면 돼." 그렇다면 마케팅 카피 생성은 어떻게 접근해야 할까요?
쉽게 비유하자면, 이것은 마치 브레인스토밍 세션과 같습니다. 광고 회사에서는 10명의 카피라이터가 모여 100개의 아이디어를 쏟아내고, 그중 10개를 선택해서 다듬습니다.
LLM을 활용하면 한 사람이 10명의 카피라이터 역할을 할 수 있습니다. 각각 다른 스타일과 접근법으로 카피를 만들고, 최고의 것만 선별하는 것입니다.
마케팅 카피를 사람이 직접 쓰던 시절에는 어땠을까요? 카피라이터 한 명이 하루에 만들 수 있는 카피는 10-20개 정도였습니다.
100개를 만들려면 일주일이 걸렸죠. 더 큰 문제는 창의성의 한계였습니다.
같은 사람이 쓰다 보면 비슷한 패턴이 반복되었습니다. 신선한 아이디어가 필요할 때는 여러 명의 카피라이터를 고용해야 했고, 비용이 많이 들었습니다.
바로 이런 문제를 해결하기 위해 LLM 기반 카피 생성 시스템이 등장했습니다. 높은 temperature 설정으로 매번 다른 창의적인 표현을 만들어낼 수 있습니다.
또한 n 파라미터로 한 번에 여러 버전을 동시 생성할 수 있습니다. 무엇보다 타겟 고객별로 맞춤형 카피를 대량 생산할 수 있다는 큰 이점이 있습니다.
위의 코드를 한 줄씩 살펴보겠습니다. 먼저 함수 파라미터로 제품명, 타겟 고객, 핵심 특징, 톤을 받습니다.
이렇게 재사용 가능한 함수로 만들면 여러 제품에 적용할 수 있습니다. 프롬프트에서는 먼저 "10년 경력 카피라이터" 페르소나를 설정했습니다.
일반적인 LLM보다 전문가 시각으로 접근하게 만드는 것이죠. 중요한 것은 구체적인 형식 지정입니다.
"15자 이내 헤드라인", "30자 이내 서브카피"처럼 명확한 제약을 주면 실제 광고에 바로 쓸 수 있는 결과물이 나옵니다. "행동 유도 문구 포함"이라는 지침은 "지금 무료 체험하기", "오늘만 50% 할인" 같은 CTA(Call To Action)를 자동으로 넣게 합니다.
temperature를 1.0으로 설정한 이유는 다양성 극대화입니다. 같은 프롬프트로 10번 실행하면 10개 완전히 다른 카피가 나옵니다.
또한 n=3으로 설정해서 한 번 호출에 3개 버전을 받습니다. API 호출 횟수를 줄여 비용과 시간을 절약할 수 있습니다.
실제 현업에서는 어떻게 활용할까요? 예를 들어 패션 이커머스 회사에서 신상품 100개를 런칭한다고 가정해봅시다.
각 상품마다 광고 카피가 필요합니다. 이 함수를 사용하면 제품 정보만 바꿔서 반복 실행하면 됩니다.
20대 여성용 원피스는 "트렌디하고 발랄한 톤", 30대 남성용 정장은 "세련되고 프로페셔널한 톤"으로 자동 조절됩니다. 무신사, 29CM 같은 패션 플랫폼들이 이런 방식으로 수천 개의 상품 카피를 효율적으로 생성하고 있습니다.
다음 단계는 A/B 테스팅입니다. 생성된 카피들을 실제 광고에 적용해서 클릭률, 전환율을 측정합니다.
성과가 좋은 카피의 패턴을 분석해서 다음 프롬프트에 반영하면, 시간이 갈수록 점점 더 효과적인 카피를 만들 수 있습니다. 하지만 주의할 점도 있습니다.
초보 개발자들이 흔히 하는 실수는 생성된 카피를 검토 없이 바로 사용하는 것입니다. LLM은 때때로 과장되거나 부적절한 표현을 만들어낼 수 있습니다.
특히 의료, 금융, 법률 관련 제품은 반드시 전문가 검수를 거쳐야 합니다. 또 다른 실수는 너무 많은 제약을 주는 것입니다.
"15자 이내, 명사형 종결, 이모지 2개 포함, 영어 단어 1개 사용, 느낌표 금지" 같은 식으로 제약이 많으면 창의성이 죽습니다. 핵심 제약 2-3개만 지정하세요.
다시 김개발 씨의 이야기로 돌아가 봅시다. 함수를 만들고 반복 실행한 김개발 씨는 3시간 만에 300개의 카피를 생성했습니다.
마케팅 팀에서 그중 120개를 선택해서 A/B 테스트를 진행했고, 최종적으로 가장 성과 좋은 20개를 실제 캠페인에 사용했습니다. 마케팅 팀장님이 놀라며 말했습니다.
"이거 진짜 전문 카피라이터가 쓴 것 같아요!" 마케팅 카피 생성은 창의적 글쓰기 프롬프트의 가장 실용적인 활용 사례입니다. 여러분도 자신의 제품이나 서비스에 맞게 커스터마이징해 보세요.
실전 팁
💡 - 100개 생성 후 상위 20% 선택하는 방식이 품질과 다양성 모두 확보합니다
- 성과 좋은 카피의 패턴을 분석해서 프롬프트에 피드백하세요
- 업종별 규제사항(의료/금융 등)은 반드시 사전 학습시켜야 합니다
5. 실습 스토리텔링 시스템
김개발 씨의 마케팅 카피 생성 시스템이 대성공을 거두자, 이번에는 콘텐츠 팀에서 연락이 왔습니다. "고객 성공 스토리를 매주 2편씩 연재하려는데, 스토리 구조가 매번 비슷해요.
LLM으로 다양한 스토리 전개를 만들 수 없을까요?"
스토리텔링 시스템은 기승전결 구조를 가진 서사적 콘텐츠를 자동 생성하는 고급 기법입니다. 캐릭터 설정, 갈등 상황, 해결 과정, 교훈을 단계별로 구성하며, 페르소나와 플롯 템플릿을 조합하여 독자가 몰입할 수 있는 이야기를 만듭니다.
브랜드 스토리, 고객 후기, 교육 콘텐츠에 활용됩니다.
다음 코드를 살펴봅시다.
from openai import OpenAI
import json
client = OpenAI()
# 스토리 구조 템플릿
STORY_STRUCTURE = {
"act1_setup": "주인공 소개와 일상, 문제 발생 전 상황",
"act2_conflict": "주인공이 직면한 구체적인 문제와 시도",
"act3_climax": "결정적 순간, 해결책 발견",
"act4_resolution": "문제 해결 과정과 결과",
"act5_lesson": "배운 교훈과 변화"
}
def generate_customer_story(customer_persona, problem, solution, product_name):
prompt = f"""
당신은 베스트셀러 작가이자 브랜드 스토리텔링 전문가입니다.
- 소설 3권 출간, 누적 판매 50만 부
- 브랜드 스토리 컨설팅 200개 기업 이상
- 독자 몰입도 극대화 전문
다음 조건으로 고객 성공 스토리를 작성해주세요:
고객 프로필: {customer_persona}
겪었던 문제: {problem}
사용한 해결책: {solution}
제품명: {product_name}
스토리 구조:
{json.dumps(STORY_STRUCTURE, ensure_ascii=False, indent=2)}
요구사항:
- 1인칭 시점으로 작성
- 구체적인 숫자와 날짜 포함
- 감정 변화를 생생하게 묘사
- 대화체 포함해서 현장감 살리기
- 전체 1200-1500자
"""
response = client.chat.completions.create(
model="gpt-4",
messages=[{"role": "user", "content": prompt}],
temperature=0.8 # 창의성과 일관성 균형
)
return response.choices[0].message.content
# 실행 예시
story = generate_customer_story(
customer_persona="3년차 스타트업 개발자, 28세, 혼자 백엔드 담당",
problem="배포할 때마다 서버 다운, 새벽 3시 긴급 복구 반복",
solution="자동화 CI/CD 파이프라인 구축",
product_name="CodeDeploy Pro"
)
print(story)
김개발 씨는 이번 요청이 지금까지 중 가장 어려울 것이라고 느꼈습니다. 단순히 정보를 전달하는 것이 아니라, 독자가 감정적으로 몰입할 수 있는 이야기를 만들어야 하니까요.
박시니어 씨가 조언했습니다. "스토리는 구조가 중요해.
기승전결을 명확히 나눠서 프롬프트에 넣어봐." 그렇다면 스토리텔링 시스템은 어떻게 구축해야 할까요? 쉽게 비유하자면, 이것은 마치 영화 시나리오를 쓰는 것과 같습니다.
할리우드에는 "3막 구조"라는 검증된 공식이 있습니다. 1막에서 주인공과 세계관을 소개하고, 2막에서 갈등을 고조시키며, 3막에서 해결하고 교훈을 줍니다.
비즈니스 스토리텔링도 똑같은 원리를 사용합니다. 구조화된 템플릿을 LLM에게 주면, 일관되면서도 흥미로운 이야기를 만들어냅니다.
스토리를 사람이 직접 쓰던 시절에는 어땠을까요? 콘텐츠 작가 한 명이 고객 인터뷰부터 글 작성까지 완료하려면 일주일이 걸렸습니다.
게다가 매주 쓰다 보면 스토리 구조가 비슷해졌습니다. "문제가 있었어요 → 제품을 썼어요 → 해결됐어요" 패턴의 반복이었죠.
독자들은 "또 똑같은 패턴이네"라고 지루해했습니다. 신선한 스토리 구조를 만들려면 전문 작가를 고용해야 했고, 비용이 많이 들었습니다.
바로 이런 문제를 해결하기 위해 구조화된 스토리텔링 시스템이 등장했습니다. 명확한 5막 구조로 모든 스토리에 기승전결을 보장할 수 있습니다.
또한 페르소나와 문제 상황을 바꿔가며 무한히 다양한 변주를 만들어낼 수 있습니다. 무엇보다 독자 몰입도를 높이는 장치들(구체적 숫자, 대화체, 감정 묘사)을 자동으로 포함시킬 수 있다는 큰 이점이 있습니다.
위의 코드를 한 줄씩 살펴보겠습니다. 먼저 STORY_STRUCTURE 딕셔너리를 정의했습니다.
이것은 재사용 가능한 스토리 템플릿입니다. act1부터 act5까지 각 막의 역할을 명확히 규정했습니다.
이 구조를 프롬프트에 JSON으로 전달하면, LLM이 각 막에 맞는 내용을 단계별로 작성합니다. 다음으로 페르소나 설정을 봅시다.
"베스트셀러 작가" 페르소나는 일반 LLM보다 서사적 글쓰기에 특화되어 있습니다. "독자 몰입도 극대화 전문"이라는 지침은 단순 정보 전달이 아니라 감정적 연결을 우선하게 만듭니다.
중요한 것은 구체성 요구입니다. "구체적인 숫자와 날짜 포함"이라는 지침은 "성능이 개선됐어요" 대신 "응답 속도가 3초에서 0.5초로 개선됐어요"처럼 측정 가능한 결과를 쓰게 합니다.
"대화체 포함"은 "팀장님이 말했습니다. '이번 배포는 완벽했어!'"처럼 현장감을 살립니다.
temperature는 0.8로 설정했습니다. 마케팅 카피보다는 낮지만 기술 문서보다는 높습니다.
스토리는 창의성과 일관성의 균형이 필요하기 때문입니다. 실제 현업에서는 어떻게 활용할까요?
예를 들어 SaaS 기업에서 매달 고객 성공 사례 4개를 발행한다고 가정해봅시다. 스타트업 고객, 대기업 고객, 프리랜서 고객 등 다양한 페르소나가 있습니다.
이 함수를 사용하면 고객 프로필만 바꿔서 자동 생성할 수 있습니다. "개발자의 버그 해결 스토리", "마케터의 캠페인 성공 스토리", "CEO의 비용 절감 스토리"처럼 직군별로 맞춤형 스토리를 만들 수 있습니다.
노션, 슬랙 같은 글로벌 SaaS 기업들이 이런 방식으로 고객 스토리 라이브러리를 구축하고 있습니다. 더 나아가서 인터랙티브 스토리도 가능합니다.
독자가 선택지를 고르면 스토리 전개가 바뀌는 "선택형 스토리"를 LLM으로 실시간 생성할 수 있습니다. 게임, 교육 콘텐츠에서 활용되고 있습니다.
하지만 주의할 점도 있습니다. 초보 개발자들이 흔히 하는 실수는 구조에만 집착하는 것입니다.
5막 구조를 너무 엄격하게 지키면 오히려 기계적으로 느껴질 수 있습니다. 구조는 가이드라인이지 절대 법칙이 아닙니다.
때로는 4막, 6막으로 변형해도 됩니다. 또 다른 실수는 가짜 스토리를 만드는 것입니다.
실제 고객 경험이 아닌 완전히 허구의 스토리를 "고객 후기"라고 게시하면 법적, 윤리적 문제가 발생합니다. LLM으로 스토리를 생성할 때는 실제 사실 기반으로 하거나, 명확히 "사례 연구", "가상 시나리오"라고 밝혀야 합니다.
마지막으로 과도한 감정 조작을 경계해야 합니다. "눈물이 났습니다", "감동의 도가니"처럼 지나치게 감정적인 표현은 오히려 신뢰를 떨어뜨립니다.
절제된 감정 표현이 더 효과적입니다. 다시 김개발 씨의 이야기로 돌아가 봅시다.
구조화된 프롬프트를 만든 김개발 씨는 10개의 고객 페르소나로 10개의 스토리를 생성했습니다. 콘텐츠 팀에서 읽어보더니 감탄했습니다.
"각 스토리마다 개성이 살아있어요. 진짜 고객이 쓴 것 같아요!" 팀장님이 말했습니다.
"이제 우리 콘텐츠 발행 주기를 주 1회에서 주 3회로 늘릴 수 있겠어요." 스토리텔링 시스템은 창의적 글쓰기 프롬프트의 최고 난이도 활용 사례입니다. 구조, 페르소나, 감정, 교훈을 모두 조합하여 독자의 마음을 움직이는 이야기를 만들 수 있습니다.
여러분도 자신만의 스토리 템플릿을 만들어 보세요.
실전 팁
💡 - 스토리 구조는 3-7막 사이에서 콘텐츠 길이에 맞게 조절하세요
- 실제 고객 인터뷰 내용을 입력 데이터로 사용하면 진정성이 높아집니다
- A/B 테스트로 어떤 스토리 구조가 독자 반응이 좋은지 측정하세요
이상으로 학습을 마칩니다. 위 내용을 직접 코드로 작성해보면서 익혀보세요!
댓글 (0)
함께 보면 좋은 카드 뉴스
ReAct 패턴 마스터 완벽 가이드
LLM이 생각하고 행동하는 ReAct 패턴을 처음부터 끝까지 배웁니다. Thought-Action-Observation 루프로 똑똑한 에이전트를 만들고, 실전 예제로 웹 검색과 계산을 결합한 강력한 AI 시스템을 구축합니다.
AI 에이전트의 모든 것 - 개념부터 실습까지
AI 에이전트란 무엇일까요? 단순한 LLM 호출과 어떻게 다를까요? 초급 개발자를 위해 에이전트의 핵심 개념부터 실제 구현까지 이북처럼 술술 읽히는 스타일로 설명합니다.
프로덕션 RAG 시스템 완벽 가이드
검색 증강 생성(RAG) 시스템을 실제 서비스로 배포하기 위한 확장성, 비용 최적화, 모니터링 전략을 다룹니다. AWS/GCP 배포 실습과 대시보드 구축까지 프로덕션 환경의 모든 것을 담았습니다.
RAG 캐싱 전략 완벽 가이드
RAG 시스템의 성능을 획기적으로 개선하는 캐싱 전략을 배웁니다. 쿼리 캐싱부터 임베딩 캐싱, Redis 통합까지 실무에서 바로 적용할 수 있는 최적화 기법을 다룹니다.
실시간으로 답변하는 RAG 시스템 만들기
사용자가 질문하면 즉시 답변이 스트리밍되는 RAG 시스템을 구축하는 방법을 배웁니다. 실시간 응답 생성부터 청크별 스트리밍, 사용자 경험 최적화까지 실무에서 바로 적용할 수 있는 완전한 가이드입니다.