Share
Sign In
프롬프트 작성팁
도꼬마리 열매와 프롬프트
S
Sujin_Kang
9
👍
1
Biomimicry 으로부터의 프롬프트 엔지니어링: 프롬프트 구조화
프롬프트 엔지니어로 일을 할 때 두 가지 역량이 중요하다 생각해요.
1️⃣ LLM의 가능성 탐구를 위한 독창성
2️⃣ LLM의 한계를 인지한 과학적 접근
다양한 학문 분야에서 영감을 얻을 수 있습니다. 그 중 하나는 Biomimicry 입니다.
Biomimicry 는 '생체 모방' 입니다. 자연으로부터 배워 문제를 해결하는 방법이에요. 자연과 생물들이 백만 년 동안 진화하면서 발전시킨 해결책들을 연구하고, 이를 인간의 문제 해결에 적용하는 것입니다.
이 열매 아세요?
도꼬마리 열매입니다. 아마도 이 열매가 옷이나 몸에 붙어서 고생한 적이 있을 거예요.
열매 끝을 보면, 갈고리 처럼 생겼죠. 자세히 확대한 사진을 보면 갈고리 모양이 잘 보여요.
그리고 이 열매에서 영감받아 오늘의 "벨크로"가 탄생하게 됩니다.
💡 벨크로 발명 계기
전기 공학자이자 발명다 Gorge De Mestral 은 산책 후 강아지 털에 붙은 도꼬마리를 떼어냈어요 호기심이 가득했던 그는 현미경으로 열매를 관찰했어요. 확대해 보니, 갈고리 끝에 붙는 메커니즘을 발견하고 1951년 "벨크로'를 특허 출원했습니다.
자연에서 영감 받아 탄생한 제품들이 많아요.
💡 비버의 털 구조에서 영감을 받은 웻슈트
비버는 물속에서 다이빙하고 수영할 때 체온을 유지해주는 두꺼운 지방층을 가지고 있습니다. 하지만 체온 유지를 위한 또 다른 비결이 있는데요. 비버의 털은 너무나 조밀해서 털 층 사이에 따뜻한 공기 주머니를 가두어, 이 수생 포유류를 따뜻할 뿐만 아니라 건조하게 유지시켜 준다고 해요.
매사추세츠 공과대학(MIT)의 엔지니어들은 서퍼들도 이와 같은 능력을 갖추면 좋아할 것이라고 생각했습니다. 그래서 그들은 "생체모방 재료"인 웻슈트를 만들 수 있는 고무 같은 모피 형태의 가죽을 만들어냈습니다.
자연에서 영감을 받아 발명으로 이어진 것이죠.
생태모방과 프롬프트 엔지니어링의 연관성은 생각해보면 정말 흥미로운 주제입니다. 프롬프팅 개발에 새로운 접근 방식을 시도해 볼 수 있어요. 제가 시도 했던 것 중에 성공했던 프롬프트 엔지니어링 제작사례가 있습니다.
💡벌집의 육각형 구조를 이용한 프롬프팅
벌집의 육강형 구조는 최소한의 재료로 최대의 공간을 만들어내는 효율적인 디자인이라 하죠. 이 원리로 프롬프트에 작용을 해봐야 겠다 생각했어요. 간결하면서도 언어 모델의 응답 내용은 풍부하도록요.
여기서 그럼 간결하다는 것에 개념 정의를 할 필요가 있어요. 프롬프트에 필요한 문장의 간결함도, 간결함이지만 구조를 간결하게 한다는 의미예요.
Methodology
| Indent | 를 사용한, 구조화
1️⃣ 프롬프트 예시
미래 도시에 대한 에세이 작성을 주제로 예를 들어 볼게요.
얼마 전 프롬프트로 강연을 다녀왔는데, 강한 인상이 남은 프롬프트가 있었어요. 그 분의 프롬프트를 예시로 가져왔어요. 이렇게 대부분 쓰시고 계시더라구요.
🧷
주제: 미래 도시에 대한 에세이 작성.

오케이 AI야, 이거 좀 해줘. 그러니까 말이야, 미래 도시?? 천천히 생각해봐. 환경은 어떻고 사람들은 뭐하고 살지 알려줘. 기술은 발전했을 테니까, 그 사람들이 어떻게 일하는지도 상상해서 알려주고. 아마 음식도 좀 궁금해서 음식은 무엇을 먹고 사는지도 기술해줘. 미래도시는 우주 여행이 가능할테니 우주 여행에 대해서도 써주고 말이야. 교통 수단은 어떨까? 순간이동이 가능해지는 걸까?그리고 환경은 어떨까? 다 망가졌을까 아님 엄청 좋아졌을까? 사람들이 열심히 지켰겠지? 아님 인공지능이 알아서 다해주려나? 아무튼 이런식으로 생각의 나래를 펼처서 너가 굉장히 괜찮은 답변을 만들어 줘.
2️⃣ Indent 를 사용한 프롬프트 구조화 예시
같은 주제로 구조화를 하면 이렇게 할 수 있어요. 줄글 형태의 프롬프트보다는, 다음 처럼 Indent 그리고 수도 코드(Pseudo-Code) 형식을 모방하여 프롬프트를 설계하는 거예요.
Pseudo-Code 프롬프팅, PythonicPrompting 이라고도 하는데요. 다음 글에서 다룰게요.
""" 2150년 미래 도시에 대한 에세이를 작성하는 함수야. 각 섹션과 하위 항목에 대한 설명을 제공해. """ # 데이터 구조 data = { "도시개요": { "인구": "설명.", "위치": "설명.", "주요특징": ["특징1", "특징2", "특징3"] }, "기술인프라": { "교통시스템": {"주요교통수단": ["수단1", "수단2", "수단3"]}, "에너지": {"주에너지원": "설명...", "에너지효율": ["방법1", "방법2"]}, "주거": {"주거형태": "설명...", "스마트홈": ["기술1", "기술2"]} }, "작성지침": { "구조": "체계적 구조", "예시": "구체적 예시", "균형": "기술과 사회의 균형", "창의적": "현실과 상상의 균형", "상세함": "충분한 설명" }
이 구조를 바탕으로 벌집 모양의 다이어그램을 만든다면 아래 처럼 표현할 수 있습니다.
/ \ / \ /도시개요\ /기술인프라\ \ / \ / \____/ \____/ ____ ____ / \ / \ / 인구 \ / 위치 \ \ / \ / \____/ \____/ ____ ____ / \ / \ /교통시스\ /에너지 \ \ / \ / \____/ \____/ ____ / \ /작성지침\ \ / \____/ ____ ____ / \ / \ /구조 \ /예시 \ \ / \ / \____/ \____/
이렇게 구조를 자리 잡아주면 LLM이 정보를 처리하기 편하고 해야 할 것을 명확하게 이해하게 만들 수 있어요.
제가 실무에서 했던 벌집 구조화에 영감을 받은 프롬프트 제작 사례는 계위가 너무나 복잡했던 "긴 문서 요약을 위한 자동 툴"인데요. 이 Indent 를 사용하여 요약을 했더니 긴 문서의 내용 중 중요한 내용을 정확하게 반영하여 고품질의 결과를 얻을 수 있었습니다.
💬 OpenAI 커뮤니티에, ChatGPT의 한 사용자 분도 이런 글을 남겼어요.
내용: I have observed a significant difference in results when indenting some lines in a prompt. The differences are reproducible in the playground. The full text of the prompt and all settings remain the same, but adding few white spaces significantly changes the result.
한국어 번역: 저는 프롬프트에서 일부 줄을 들여쓰기 했을 때 결과에 상당한 차이가 있음을 관찰했습니다. 이 차이는 플레이그라운드에서 재현 가능합니다. 프롬프트의 전체 텍스트와 모든 설정은 동일하게 유지되지만, 몇 개의 공백을 추가하는 것만으로도 결과가 크게 변경됩니다.
저처럼 벌집에서 영감을 받아 Indent나 Pseudo Code를 시도했든지, 아니면 프롬프팅을 해보다가 차이를 발견했든지, 모든 프롬프트는 쓸 수록 늘고 해볼 수록 정교해지는 것 같습니다.
Reference
벨크로 발명:
비버와 웻수트:
Subscribe to 'sujin-prompt-engineer'
안녕하세요,
슬래시페이지 구독을 하시면, 이따금씩 발행하는 프롬프트와 프롬프트 엔지니어링에 관한 글을 이메일로 받아보실 수 있어요. 구독하시겠어요? 😊
Subscribe
9
👍
1
    S
    Samuel Yang
    와, 바이오미믹으로부터 프롬프트 구조를 이끌어낸다니! 인스파이어링합니다. 재료공학 쪽에서 실제 바이오미믹 연구를 많이 하는데요, 대표적인 것 중의 하나가 게코 도마뱀의 발바닥 돌기의 하이어라키 구조를 모방하여 접착제를 만들기도 합니다. 이런 구조들을 프롬프트의 명확한 구조화를 위해 적용해 보는 것도 재미있을 것 같네요:)
    🧷
    1
    😀
    1
    S
    Sujin_Kang
    링크드인이 아닌, 텍스트를 마음껏 쓸 수 있는 공간에서 글을 전달하니, 더 명확하게 전달이 되려나요? 종종 코드도 올릴 수 있게 되었습니다!
    역시 알고 계시는 군요, GEICO 의 발바닥 돌기를 예시로 쓸지 도꼬마리를 예시로 할지 고민하다가, 단어의 발음이 주는 어감은, 도꼬마리가 더 생동감이 있는 것 같아서 사용했어요.
    하이어라키 구조를 "Indent"로 하는 시도를 많이 했었는데요.
    ChatGPT에는 </n> 으로
    Playground와 Jupytor 에는 |
    |
    이렇게 했더니, 명확하게 해야 할 일들을 잘 처리하여 요즘도 잘 사용중인 프롬프팅 방법입니다 ^^ 다른 것 한 번 해보시면, 의견 나누어 주세요~
    👍
    1
    S
    Samuel Yang
    공간을 열어주셔서 감사합니다. 아무래도 링크드인은 이것저것 여쭈어보기가 좀 애매한 공간 같아서 주저주저했었습니다. 제가 부족해서인지 하이어라키 구조를 어떤 식으로 텍스트를 통해 구조화하는지 잘 이해를 아직 못해서, 아래 질문을 남겼습니다ㅠ
    😀
    1
    S
    Samuel Yang
    여기서 질문이 있습니다. 위의 예시에서 인덴테이션은 다음 부분을 들여쓰기를 한 것을 의미하는 것일까요? 아니면 육각형 구조를 모사하기 위해 indentation이 사용된 것인지, 이것이 어떻게 간결한 구조화를 이루는 것인지 제가 잘 이해를 못했습니다. 조금 더 설명을 해 주실 수 있으실까요?
    """ 2150년 미래 도시에 대한 에세이를 작성하는 함수야. 각 섹션과 하위 항목에 대한 설명을 제공해. """
    S
    Samuel Yang
    아, 이해를 한 것 같습니다. 자문자답이네요. 제가 이해한 바를 조금 후에 댓글로 남겨보겠습니다. 제대로 이해한 것인지 박사님께서 한 번 확인해 주시면 좋을 것 같습니다🙂
    👍🏻
    1
    😀
    1
    S
    Sujin_Kang
    """ \n\n\n2150년 미래 도시에 대한 에세이를 작성하는 함수야. \n\n\n 각 섹션과 하위 항목에 대한 설명을 제공해. """
    \n"도시개요": { \n \n"인구": "설명.", \n \n"위치": "설명.", \n \n"주요특징": ["특징1", "특징2", "특징3"]
    case1: ChatGPT 로 할 떄
    벌집 모양대로, Indent 를 하는 것이 아닌 위의 예시처럼 \n 띄어쓰기를 활용하여, 클리어한 구조를 만들어내는 것이라 생각하면 되겠습니다!

    Case2: 코드를 이용할 때
    코드 내 Indent를 사용하여, 구조화 하는 것이에요.



    👍
    3
    S
    Samuel Yang
    """
    가장 공간효율적인 hexagonal structure를 구조화된 프롬프트로 translation하기 위해 JSON schema를 사용하셨고, 이를 작성하기 위해 indentation이 사용되었다. 이 때의 들여쓰기가 상위 개념과 그에 종속되는 하위개념을 표현하게 되는데, LLM은 이 하이어라키를 잘 이해하여 dense하게 지시사항을 전달할 수 있고, LLM 역시 이에 상응하게 dense하고 structure를 잘 따르는 응답을 제공하게 된다.
    """
    제가 제대로 이해한 것이 맞을까요?
    👍🏻
    1
    S
    Samuel Yang
    아, 그 사이에 답글을 주셨네요. 감사합니다!
    👍🏻
    1
    S
    Sujin_Kang
    네~~~ 제가 표현을 안 한 것들을 다 적어주셨네요. 정확합니다. 위의 예시는 JSON Schema 를 활용했고. 코드처럼 보이나, Pseudo 코드처럼 프롬프트를 써서 또 다른 구조화를 시도한 것이에요.
    이렇게 적어두고 보니 사무엘님의 설명이 더 정확하네요 ^^ 보실 분들이 바로 이해가 될 것 같습니다.
    감사합니다!
    👍
    1
    😀
    1
Sujin_Kang
Anthropic Prompt Workbook & Prompt Anatomy
Anthropic 의 Prompt workbook : Google Sheets Adds-on 과 프롬프트 Anatomy Google Sheets 에 Claude API를 호출해 셀에서 직접 prompt 의 결과물을 확인할 수 있는 Claude for Sheets : template workbook 을 사용해봤습니다. Google Sheets를 사용해서 프롬프트 평가, 테스트, DB관리와 버져닝, Token Tracking을 많이 하실텐데요. 저도 프롬프트 DB관리를 Google Sheets에 한 적이 있어서, Claude에서 제공한 template 을 보니 매우 흥미롭더라구요. 특히 실시간 데이터 분석이나 처리에서 이 sheets 을 활용하는 장점이 확실히 있을 것 같습니다. 오프라인 프롬프트 엔지니어링 수업 준비를 하면서, 다양한 유형의 프롬프트 제작 실습을 하고 포트폴리오를 만들기 위해 이상적인 Workbook의 유형을 고민하고 있는데, Anthropic 의 Prompt workbook에서 많은 아이디어를 얻었습니다. 저는 프롬프트는 네 가지 요소로 구분하고 있습니다. 해부를 하면서, 하나하나의 요소의 결합과 그의 결과물을 분석합니다. Prompt Anatomy 1️⃣ Type A: 명령문 (Instruction) 2️⃣ Type B: 맥락 (context) 3️⃣ Type C: 예시 (example) Delimiter ("" 나 <> </> ::, -- 등의 기호) 를 사용해 예시임을 LLM에게 explicit 하게 hinting 함을 선호하고 있습니다. 4️⃣ Type D: 외부 데이터 (Output source) Type D는 unstrcutred data (비정형 데이터)를 줄글 형태의 프롬프트와 어떻게 assemble 할 수 있는지 조립방법에 대한 연구를 많이 합니다. 레고 블럭처럼 조립하는 거죠. Blocking을 했을 때, 비정형 데이터와 기존 프롬프트 {{Text}} 간의 이질감이 가장 없다라 생각하고 있습니다. Prompt Workbook을 보며, 프롬프트 요소와 구조화, 이상적인 프롬프트 텍스트 포맷에 대한 아이디어를 더 상세하게 얻을 수 있었습니다. ✅ Prompt Workbook의 다양한 프롬프트 템플릿과 유용한 팁 1️⃣ 기본 프롬프트 테스트
👍
5
Sujin_Kang
LLM에게 친절해야 할까?
공손한 언어와 프롬프트의 효과 프롬프트를 써오면서 AI에게 예의를 갖추는 것이 혹은 예의바른 문장을 사용하는 것이 가치가 있는 일이라고 말하고 싶습니다. 두 가지 이유인데요, 1️⃣ 공손한 표현 사용은 AI로 부터 더 좋은 결과물을 얻는다. 2️⃣ 공손한 표현은 AI 사용의 윤리적 담화를 형성한다. "AI는 감정이 없는데, 예의를 차리는 것이 효과가 있을까?" 라고 생각하는 분들도 있을거예요. 하지만 인간은 다른 사람과 감정적으로 연결하려하고, 예의를 갖추려 하기 때문에 생성형 AI를 사용하면서도 예의 바른 표현과 공손한 매너가 기본인 분들도 많죠. (세상에 100%는 없기 때문에, 다수라 저는 믿습니다) 이 글에서는, 공손한 표현의 프롬프팅 효과에 대해 다뤄보겠습니다. 프롬프트를 작성할 때 다음 세 가지 중 한 가지 표현을 사용할 거예요. (1) 중립적인 어조: 특별히 예의바르지도, 무례하지도 않은 "AI가 해야 할 일"을 명령하는 중립적인 프롬프트 (2) 예의바른 표현: 공손성이 높은 표현이 있는 프롬프트 (3) 무례한 표현: 불공손성(impoliteness)을 표현한 프롬프트 생성형 AI 이용자의 프롬프트 언어 분석을 하고 있습니다. 그 중 "공손성과 불공손성"에 있어서 제가 목격한 것은 대다수가 자연스레 친절하고 공손한 어조로 프롬프트를 작성한다는 점입니다. "안녕? ~~~좀 해줄 수 있어?" "고마워~ 너 정말 대단하다" "안녕하세요 저는 이런 것들이 필요한데, ~ 해주시겠어요?"
👍
2
Sujin_Kang
ChatGPT와 클로드 답변 내용이 별로라면? 프롬프트 스케쥴링과 가중치 조절 (Scheduling and Weight)
한 커뮤니티에서 "생성형 AI로부터 답을 자세히 받기 위해, 프롬프트에 세세히 지정해주는 것이 오히려 답변 품질을 저하한다"는 주제로 이야기를 했었어요. ChatGPT나 클로드를 써서 작문이나 글짓기, 보고서 작성을 해 본 분들이라면 느꼈을 이 현상을 저는 "프롬프트의 역설(Prompt paradox)"이라고 해요. 프롬프트 디자인 원칙 중 하나 "가능한 구체적으로 프롬프트를 쓴다"인데, 프롬프트를 세세하게 쓸 수록 답변이 저하 된다니 매우 역설적이죠. ✅ 프롬프트의 양과 답변 품질의 관계 프롬프트 세부 사항/지시문의 양과 언어 모델의 답변 품질은 역상관 관계예요. 모델에 더 많은 제약을 가할 수록, 답변의 품질이 좋지 못해요. 간단하게 이유는 두 가지예요. (1) 프롬프트 입력 내용 만큼, 모델의 생성을 제어하게 되어 자유도가 떨어진다. (2) 상세한 프롬프트는 LLM에게 인지 부담(cognitive pressure)을 일으킨다. 사람도 한 번에 처리해야 하는 정보가 너무 많이 들어오면 무엇을 먼저 읽고, 무엇을 나중에 읽어야 하는지 부담이 가중되죠. LLM도 마찬가지예요. 프롬프트 문장을 overlap 하여 읽거나, skip 하거나, 처리해야 할 내용을 지나치게 일반화 (혹은, 뭉뚱그려) 답변 내용의 질을 떨어트려요. 💡 문제 해결을 위한 프롬프팅 기법 문제를 해결하기 위해서 다양한 방법이 있지만 그 중에서도 "프롬프트 스케쥴링"과 "프롬프트 가중치"라는 프롬프팅으로 해결 했어요. (*네이밍은 제가 붙였습니다) 글: {글} 사용한 글: ‘주먹 불끈’ 트럼프 사진 찍은 기자 “역사적 순간 직감” 에이피(AP) 통신 에번 부치 수석 사진기자가 13일(현지시각) 미국 펜실베이니아 버틀러 유세장에서 총격 직후 촬영한 사진을 보면, 트럼프 전 대통령은 경호원들에게 둘러싸인 채 귀에서 피를 흘리면서도 결연한 표정으로 지지자들에게 주먹을 치켜들었다. 트럼프 전 대통령이 단상을 내려오는 모습을 아래에서 담은 이 사진은 배경에 나부끼는 미국 성조기까지 더해져 강인한 인상을 준다. 이는 트럼프 전 대통령의 경쟁자인 조 바이든 대통령의 노쇠한 이미지와 대조된다는 평가가 나온다. 이 사진은 사회관계망서비스(SNS) 등에서 빠르게 확산하면서 공화당 지지층 결집 효과를 내고 있다. 트럼프 전 대통령의 장남인 도널드 트럼프 주니어는 이 사진을 엑스(X·옛 트위터)에 올리며 “그는 미국을 구하기 위한 싸움을 절대 중단하지 않을 것”이라고 적었다. 이 사진을 찍은 에번 부치 기자는 2003년부터 20년 넘게 에이피 통신에서 일했다. 그는 2020년 조지 플로이드 사망 이후 미국 전역으로 번진 흑인 인권 시위 현장을 취재한 사진으로 이듬해 퓰리처상을 받은 바 있다. 에이피 통신이 공개한 부치 기자의 인터뷰를 보면 그는 “총격 소리를 들은 바로 그 순간 나는 이것이 미국 역사에서 기록돼야 할 순간임을 알았다”며 “이런 일을 하는 것이 기자로서 우리 직업”이라고 말했다.
👍
1