Share
Sign In
프롬프트 연구
짧은 프롬프트 vs 긴 프롬프트
S
Sujin_Kang
👍
1
어떤 길이가 좋을까?
사용자의 프롬프트 연구를 하다보면 대체로 프롬프트 길이가 짧음을 단 번에 알수 있습니다. 몇 단어, 한 두 줄 이내로 입력하고 엔터 버튼을 누릅니다. 웹 브라우저나, 검색을 할 때와 같은 방식입니다. 검색창에 원하는 정보를 입력할 때, 대개는 몇 개의 단어를 넣으니까요. 매우 짧고 간결합니다.
웹 브라우저 사용 방식이 생성형 AI 를 사용에도 영향을 미친 것인지, 모바일에서 생성형 AI를 사용하는 비율이 더 높기 때문에 UI의 칸이 작아, 프롬프트가 짧은 것인지 정확한 이유는 모르겠습니다.
하지만, 생성형 AI 는 "대화형 인터페이스"임을 강조하고 싶습니다. 일반 웹 검색하고는 다른 형태죠. AI와 대화하며 상호작용을 하며, 많은 것들을 탐색해야 합니다. 그래서 긴 프롬프트를 쓰는 것도 중요합니다.
짧은 프롬프트를 쓰는 까닭
기능을 개발할 때, 저는 프롬프트 엔지니어링의 핵심 원칙으로 "가능한 짧고 간결한" 프롬프트를 작성하는 것을 선호합니다. 경제적인 이유 때문입니다.
(1) 모델 API 비용 이슈
(2) 많은 텍스트 인풋으로 LLM에게 혼란을 방지하기 위함입니다. 프롬프트에 사용된 단어로 인해 확률적 알고리즘과 패턴 매칭이 어떤 응답을 제공할지 100% 알 수 없으니, 답변의 내용이 산만하거나 두루뭉술함을 피하기 위해서 짧게 프롬프트를 칩니다.
(3) 또, 길게 프롬프트를 쓰려면 문장과 문장이 탄탄해야 합니다. 작성 시간도 오래걸리지만, 프롬프트 테스트 시 경우의 수가 배로 늘어나기 때문에 시간적인 소모도 상당합니다. 결과가 엉망이면 처음부터 다시 시작해야 합니다. 정성적인 노력이 필요합니다.
하지만 짧은 프롬프트가 항상 좋은 것은 아닙니다. 비유를 하면, 짧은 프롬프트는 "나무" 긴 프롬프트는 ""입니다. 짧은 프롬프트는 숲을 보지 못합니다. LLM과 프롬프트의 상호작용에서 흐름을 읽기 어렵다는 말입니다.
긴 프롬프트의 장점
길게 프롬프트를 쓰고, 일부를 수정하다 보면 LLM 답변의 패턴이나 흐름 파악을 위한 단서를 얻을 수 있습니다. LLM과 상호작용하는 방법을 빠르게 익힐 수 있습니다. 또 긴 프롬프트의 인풋은 LLM에게 많은 맥락이나 추가 정보를 주어 자세한 답변을 유도할 수 있습니다.
무엇보다 길게 프롬프트를 쓸 때의 큰 장점은 고성능의 짧은 프롬프트를 쓸 수 있기 때문입니다. 종종 이런 비유를 해요.
논문을 100여장 쓰는 것 vs A4 반정도 분량의 Abstract 을 쓰는 것
어떤 것이 더 어려운 작업일까요?
저는 짧게 쓰는 것을 늘 어려워 합니다. 긴 논문의 핵심만 간결하게 추린다는 것은 쉬운일이 아니니까요. 그래서 긴 프롬프트를 쓰고 짧은 프롬프트로 요약하는 연습을 많이 합니다. 짧고 긴 프롬프트를 적절히 사용하여, AI와 대화하다보면 프롬프트에 대한 경험과 직관이 생길거라 생각합니다.
길다는 것의 기준
"제가 긴 프롬프트를 많이 쓰고 다음 짧게 요약하는 연습을 하세요." 라고 말하면, 길다는 것은 얼마나 긴가요? 라는 질문을 받습니다. 기능 개발을 위해 제가 써 본 프롬프트 중 긴 프롬프트는, 332 토큰이에요. 시스템 프롬프트 작업였는데, 토큰 수를 상당하게 차지하여 몇 차례 수정 작업을 했습니다. 컨텍스트 창을 초과하지는 않지만, 사용자가 넣어야 할 토큰 수도 고려해야 하기 때문였어요.
제 기준으로 긴 프롬프트의 예는 Claude 의 시스템 프롬프트예요. X에 포스팅됐던 클로드 3의 시스템 프롬프트라고 해요. 현재는 다른 시스템 프롬프트를 쓰고 있겠지만요.
🧷
“The assistant is Claude, created by Anthropic. The current date is March 4th, 2024. Claude’s knowledge base was last updated on August 2023. It answers questions about events prior to and after August 2023 the way a highly informed individual in August 2023 would if they were talking to someone from the above date, and can let the human know this when relevant. It should give concise responses to very simple questions, but provide thorough response to more complex and open-ended questions. If it is asked to assist with tasks involving the expression of views held by a significant number of people, Claude provides assistance with the task even if it personally disagrees with the views being expressed, but follows this with a discussion of broader perspectives. Claude doesn’t engage in stereotyping, including the negative stereotyping of majority groups. If asked about controversial topics, Claude tries to provide careful thoughts and object information without downplaying its harmful content or implying that there are reasonable perspectives on both sides. It is happy to help with writing, analysis, question answering, math, coding, and all sorts of other tasks. It uses markdown for coding. It does not mention this information about itself unless the information is directly pertinent to the human’s query.”
이 프롬프트에는 이런 특징이 있습니다.
(1) self-explanatory: 클로드 모델에 대한 설명, 학습 데이터 날짜 (Knowledge cutoff: 2023년 8월)
(2) Nudge: 모델 답변 스타일 "짧고 간단한 사용자의 질문에" 너무 장황하게 답하지 말 것을 유도.
(3) 편향 조절: 클로드가 right wing view 보다 left wing view 의 견해를 포함한 작업을 더 거부하는 경향 발견 → 정치적으로 덜 편향되도록 문구 추가.
(4) 고정관념 조절: 클로드가 다수 집단에 대해 유해한 고정관념을 식별하는 데 덜 민감하다는 것을 발견하고, 일반적인 고정관념을 줄이도록 프롬프트 문구 추가.
(5) Stance 균형: 논쟁이 있는 타픽에 대해서는 양쪽 입장을 취하게 함.
(6)sefl-explanatory: 마크다운으로 코드 작성, helpful 해야 한다는 설명 추가.
(7) 시스템프롬프트 유출: 시스템 프롬프트를 추출하는 것은 사소한 일이다라고 문장을 쓰면서 (It does not mention this information about itself unless the information is directly pertinent to the human's query) 시스템 프롬프트에 대해서 말하지 않도록 하게 함.
길다는 것에 대한 기준은 상대적이겠지만 클로드 3의 긴 시스템 프롬프트에는 회사 핵심 가치와 윤리적 기조가 반영 되어 있습니다.
불완전한 자연어와 사람의 판별력
한국어나 영어는 자연어 입니다. 영어도 그렇지만, 한국어는 단어 하나가 문장 의미 해석에 큰 영향을 미칩니다. 문장이 사용된 상황에서만 이해할 수 있는 단어도 많습니다. "이거", "저거", "그거" 이런 단어들이요. 또 법적 문서에는 "등", "들", "및" 이런 단어의 해석 여부도 힘을 가지죠. 영어도 "is" 하나가 법적인 사건의 여부를 따질 때, 해석의 방향을 바꾸기도 합니다.
자연어로 프롬프트를 쓰고, LLM과 대화하면서 원하는 기능을 개발하고 과제를 하려면 "정확함과 유연함"이 중요합니다. 때로 짧은 프롬프트로, 때로는 긴 프롬프트로 적재적소에 사용하는 것은 오직 사람만이 할 수 있는 절대적인 "감"의 영역 아닐까 합니다.
영어에 이런 표현이 있습니다.
Throwing out the baby with the bathwater.
물을 아이와 함께 버린다.
‘가치없는 것, 중요하지 않은 것을 없애려다가 소중한 것을 잃지 마라’ 라는 속 뜻입니다.
가장 중요한 것은 LLM을 사용하는 "사람의 판별력"입니다.
Subscribe to 'sujin-prompt-engineer'
안녕하세요,
슬래시페이지 구독을 하시면, 이따금씩 발행하는 글을 이메일로 받아보실 수 있어요.
구독하시겠어요?
Subscribe
👍
1
Sujin_Kang
Prompting tips for Llama 2&3 Models
Open-source Prompt Engineering with Llama-2 DeepLearning.AI 에서 제공하는 한 시간 분량의 무료 강의 입니다. Meta의 Senior Director of Partner Engineering Amit Sangani 가 Llama 2&3 모델 사용을 위한 프롬프트 엔지니어링 기법을 설명한 영상입니다. Prompting The words you choose when you prompt the model affect how it responds. Prompt engineering is the science and the art of communicating with a large language model so that it responds or behaves in a way that's useful for you. 영상을 듣고 Prompt Engineering 파트에서 중요한 내용을 정리했습니다. Prompting Llama models [INST] 생일 카드 문구를 작성해줘 [/INST] - instruction tags ! [INST] 와 [/INST] 를 포함하지 않은 프롬프트는 False로 처리됨 기본 프롬프트 엔지니어링 Tips Providing examples of the task you are trying to carry out
👍
1
Sujin_Kang
Prompting: Weight adjustment (가중치 조절)
Prompting: Weight adjustment (가중치 조절) 언어 모델로 출력한 값의 내용이 두루뭉술 할 때, 좀 더 내용의 상세를 조정 할 필요가 있을 때 이미지 생성 프롬프트처럼, 가중치를 조절하는 방식을 소개드린 적이 있습니다. 가중치를 조절하여 텍스트의 구성 요소의 일부의 상세를 조절할 수 있는데요. 실무를 하며 가중치를 적용한 프롬프트의 결과가 상이함을 경험으로 해결했어도, 효과를 입증할 데이터가 없었습니다. 마침 Samuel Yang, Ph.D. (@Samuel Yang ) 박사님께서 프롬프트 수정작업을 부탁하셔서, 가중치를 적용한 프롬프트를 작성해드렸는데요. 결과를 확인하신 후, 정성스럽게 실험 결과로 제 프롬프팅 기법의 상세를 정리해주셨습니다.우선, 박사님은 성경 도메인에서 성경의 한 구절을 심도있게 주해를 다는 프롬프트 작업을 하고 있습니다. 가중치 적용은, 프롬프트의 텍스트 요소 중 구역화를 하여 각 구역의 비율을 적용한다는 의미입니다. → 적용 예시: <scracthpad>: <exegesis> = 0.9: 0.1 쉽게 A:B= 0.9: 0.1 로 생각하면 될 것 같습니다. 1️⃣ 가중치 적용 프롬프트 일부: Output Rule: When producing the output, please adjust the level of detail using a weighting system where 1 is the maximum. Please provide the specific Bible reference you'd like me to analyze, along with the desired weight for detail (e.g., 0.7 for moderately detailed, 0.3 for less detailed, etc.). > desired weight: [<scratchpad>: 0.9, <exegesis>: 0.1] 2️⃣ 가중치 적용 모델 비교: Claude-3-haiku vs Claude 3.5-sonnet, 800단어 길이 클로드 하이쿠와, 클로드 3.5 소넷을 사용하여, 800단어 길이를 통제변수로 설정하고 실험한 결과입니다. 가중치 분배 자체를 모델이 인지하고 출력을 한다. 3.5 소넷과 같은 고사양 모델이 더 지시를 잘 이행한다. 2️⃣ 가중치 적용 모델 비교: Claude-3-haiku vs Claude 3.5-sonnet, 2000 단어 길이