이 튜토리얼에서는 단계별 지침에 따라 역할 프롬프트라는 프롬프트 엔지니어링 기법을 수행합니다. 세부적인 모델 아웃풋에 대한 페르소나를 할당하기 위해 IBM Granite 모델을 사용하겠습니다.
역할 프롬프트는 응답을 생성할 때 인공 지능(AI) 모델이 특정 역할이나 페르소나를 맡도록 지시하는 프롬프트 엔지니어링 기법입니다. 이 기술은 모델의 어조, 스타일 및 동작을 안내하는 데 사용할 수 있으며, 이를 통해 보다 매력적인 아웃풋을 얻을 수 있습니다.
프롬프트 엔지니어링은 모델 입력을 최적화하는 것이므로 적절하고 의미 있는 답변으로 응답합니다. 제로샷 프롬프트와 퓨샷 프롬프트는 대규모 언어 모델(LLM)과 대화하는 데 사용되는 인기 있는 두 가지 기술입니다. LLM은 인간의 언어를 처리하고 해석하는 능력으로 인해 자연어 처리(NLP) 작업을 수행할 수 있는 타고난 역량을 보유합니다. AI 모델의 언어 능력은 챗봇 대화, 다중 에이전트 상호 작용부터 개방형 창의적 글쓰기에 이르기까지 다양한 작업에 유용합니다.
LLM이 특정 역할의 특정 요구 사항을 충족하기 위해 특정한 페르소나 역할을 하도록 지시받을 때 생성형 AI(gen AI)는 더욱 개인적이 됩니다. AI의 응답은 할당된 역할로 프롬프트를 받았을 때 더 정확하고 관련성이 높을 수 있습니다. AI 모델은 방대한 데이터 세트를 활용하므로 교사, 역사적 인물, 영업 사원 등 상상할 수 있는 모든 역할을 할당할 수 있습니다. 이 능력은 페르소나 프롬프트라고도 하는 역할 프롬프트를 매우 강력한 기술로 만듭니다. AI 모델은 그 뛰어난 적응성 덕분에 사용자 또는 시스템의 특정 요구 사항에 맞는 응답을 생성할 수 있습니다.
역할 프롬프트는 챗봇이 사용자와 더욱 효과적으로 상호 작용할 수 있는 페르소나를 제공하거나 AI 에이전트가 다른 에이전트와 더욱 효과적으로 상호 작용할 수 있도록 하는 데 사용할 수 있습니다. 프롬프트 템플릿에 익숙하다면 역할 프롬프트가 실제로 작동하는 것을 이미 보셨을 것입니다. 예를 들어, 많은 에이전트 프레임워크는 롤 플레잉 에이전트를 사용하여 작업을 완료하고 효과적으로 협업합니다. ChatDev는 프롬프트 기술을 사용합니다. 이 메커니즘은 생성된 아웃풋에 대한 지침 역할을 하는 에이전트의 역할을 명확하게 정의합니다.
이 튜토리얼을 따르려면 watsonx.ai 프로젝트를 생성할 수 있도록 IBM Cloud이 필요합니다.
여러 툴 중에서 선택할 수 있지만, 이 튜토리얼에서는 Jupyter Notebook을 사용하기 위해 IBM 계정을 설정하는 방법을 안내합니다. Jupyter Notebook은 데이터 과학 분야에서 코드, 텍스트, 이미지 및 데이터 시각화를 결합하여 잘 구성된 분석을 공식화하는 데 널리 사용됩니다.
프로젝트 > 관리 > 일반 > 프로젝트 ID에서 프로젝트 ID를 기록해 두세요.
이 튜토리얼을 진행하려면 이 ID가 필요합니다.
3. Jupyter Notebook을 만듭니다.
이 단계에서는 직접 제로샷 분류를 수행하기 위해 이 튜토리얼의 코드를 복사할 수 있는 Notebook 환경이 열립니다. 또는 이 노트북을 로컬 시스템에 다운로드하여 watsonx.ai 프로젝트에 에셋으로 업로드할 수 있습니다. 이 Jupyter Notebook은 GitHub에서 사용할 수 있습니다.
이 단계에서는 프로젝트를 watsonx.ai 서비스와 연결합니다.
watsonx.ai 런타임 인스턴스를 만듭니다(무료 인스턴스인 Lite 요금제 선택).
watsonx.ai에서 API 키를 생성합니다.
watsonx.ai 런타임을 watsonx.ai에서 생성한 프로젝트에 연결합니다.
이 튜토리얼에는 몇 가지 라이브러리와 모듈이 필요합니다. 다음 항목을 가져와야 합니다. 설치되지 않은 경우, 빠른 PIP 설치로 이 문제를 해결할 수 있습니다.
다음을 실행하여 watsonx.ai 런타임 API 키와 프로젝트 ID를 입력하고 저장합니다.
다음으로 IBM의 Granite-3.1-8B-Instruct를 설정하여 역할 프롬프트를 수행하겠습니다.
역할 프롬프트의 간단하고 재미있는 예를 위해 모델에게 유명한 인물인 윌리엄 셰익스피어의 페르소나를 맡도록 요청해 보겠습니다. 새로 할당된 역할을 맡은 모델에게 셰익스피어의 유명한 소네트 스타일로 노래 가사를 다시 써달라고 요청할 것입니다.
아래 코드 블록은 모델이 응답할 프롬프트를 설정하고 정의합니다. 원하는 노래로 자유롭게 변경할 수 있지만, Granite는 저작권이 있는 콘텐츠에 대한 교육을 받지 않았다는 점에 유의하세요. 예를 들어 Sabrina Carpenter의 "Espresso"와 같이 공개 도메인에 속하지 않는 노래를 선택하는 경우 프롬프트와 함께 가사를 붙여 넣어야 합니다.
이 예시에서는 효과적인 프롬프트를 위해 Jane Taylor(1806)가 작곡한 고전적인 어린이 자장가 "반짝반짝 작은 별"을 사용하겠습니다. 코드 블록을 실행하여 몇 가지 예시 입력 텍스트와 함께 프롬프트를 정의합니다.
프롬프트가 정의되면 다음 코드 블록을 실행하여 모델이 아웃풋을 생성하도록 할 수 있습니다. 생성된 아웃풋이 셰익스피어 스타일에 부합하면 좋겠네요.
다음은 읽을 수 있는 형식의 모델 아웃풋입니다.
"반짝반짝, 반짝반짝, 작은 별, 그대의 존재가 너무나도 궁금하구나.
하늘의 다이아몬드처럼 세상 위 높은 곳에 떠 있구나.
밤의 벨벳 망토를 입고 그대는 너무나 밝게 빛나고,
칠흑 같은 밤에 선원들을 인도하는구나.
그대의 찬란한 빛줄기는 천상의 예술이자,
마음의 캔버스를 밝게 비추는 광명이니.
조용한 속삭임으로 그대가 공유하는 비밀은
먼 은하계와 희귀한 별자리의 이야기.
허나 필멸의 눈은 결코 그대의 형태를 파악할 수 없으니.
그대는 우리의 영역 너머, 폭풍 너머의 저 멀리에 있네.
오, 별이여, 오, 별이여! 그대의 빛은 내 영혼을 꿰뚫고,
우주의 춤, 시간을 초월한 모습을 보여 주네.
잠에 갇혀 꿈속에서 나는 그대를 쫓고,
마법에 걸린 두루마리와 같은 당신의 신비를 탐하네.
그러나 각성이 나를 움켜쥐고, 대낮은 그대의 모습을 훔치고,
그대의 놀라운 기억만 남기고 말았다네.
그리하여 반짝이는 별이여, 잠의 평화로운 통치 속에서,
아침이 다시 올 때까지 작별을 고하네."
모델은 노래를 셰익스피어 소네트로 다시 쓰라는 역할 기반 프롬프트에 대한 응답을 생성할 수 있었습니다. 모델은 역할 프롬프트에서 기대하는 규칙과 스타일을 준수했습니다. *프롬프트의 창의적인 특성으로 인해 실제 아웃풋은 이 예시와 다를 수 있습니다.
다음 예에서는 간단한 시스템 프롬프트와 역할 기반 시스템 프롬프트를 비교합니다. 한 동물 병원이 최근 웹페이지에 가상 어시스턴트를 구현했다고 가정해 보겠습니다. 최고의 고객 지원을 제공하기 위해 이 동물 병원은 반려동물 주인이 가상의 상호 작용에서도 경청과 지원을 받는다고 느끼기를 바랍니다. 이는 많은 기업이 추구하는 목표이기도 합니다. 방문자는 "반려묘가 최근에 재채기를 많이 하고 발을 핥는데 어떻게 해야 하나요?"와 같은 질문을 할 수 있습니다. 이 시나리오에서는 프롬프트에서 모델에 역할이 할당되지 않았으며, 단지 입력 지침 없이 즉시 모델을 사용할 뿐입니다.
모델은 그에 따라 조언과 정보로 응답하지만 개인적인 느낌은 없으며, 내용은 검색 엔진 결과 페이지에 표시되는 결과와 크게 다르지 않습니다. 모델의 아웃풋은 원시적이고 창의성이 부족합니다. 이 솔루션은 사용할 수는 있지만 이 동물 병원의 가상 어시스턴트를 다른 솔루션과 차별화하지는 않습니다. 같은 질문을 다시 시도하여 이번에는 "따뜻하고 전문적이며 경험이 풍부한 수의사"라는 역할을 할당해 보겠습니다.
모델 응답의 언어는 단순한 시스템 프롬프트에서 부족했던 컨텍스트에 대한 감정적 인식을 표현하기 때문에 더 인간적입니다. 모델은 이 어조를 달성하는 동시에 온전하고 관련성 높은 답변을 제공하여 보다 섬세한 응답임을 증명할 수 있었습니다. 이러한 유형의 인간과 인공 지능의 상호 작용은 조직 및 애플리케이션 내에서 주관적인 기대치를 충족하는 방법입니다.
생성형 AI 애플리케이션에 더 많은 개인화와 의미 있는 상호 작용을 추가하려는 개발자 또는 비즈니스는 역할 프롬프트가 어떤 영향을 미칠 수 있는지 이해하는 것이 좋습니다. 대부분의 최신 언어 모델은 역할 프롬프트가 가능합니다. 일부 기본 모델은 역할의 미묘한 차이를 파악하지 못하거나 응답의 일관성을 유지하지 못할 수 있는 반면, 다른 모델은 특정 방식으로 응답하도록 미세 조정할 수 있습니다. IBM의 Granite 시리즈와 같은 파운데이션 모델은 대량의 엔터프라이즈별 데이터로 학습되어 비즈니스 요구 사항에 따라 맞춤형 응답을 생성하는 역할을 수행하는 모델의 능력을 향상시킵니다.
역할 프롬프트는 모델이 할당된 페르소나에 대한 기대치를 고려하여 지속적으로 수행하도록 장려합니다. 앞서 노래 가사를 소네트로 바꾸는 프롬프트에서 LLM에 역사적 인물의 역할을 할당하는 간단한 예제를 수행했습니다. 그런 다음 챗봇 응답에 대한 비역할 프롬프트 모델과 역할 프롬프트 모델의 아웃풋을 비교했습니다. 마지막으로 역할 프롬프트가 제공하는 응답이 언어적으로 더 섬세하고 지지적이어서 향상된 고객 관리를 제공한다는 결론을 내렸습니다.