Sign In
프롬프트 작성팁

도꼬마리 열매와 프롬프트

Sujin_Kang
Category
Empty
Status
Empty
Assignee
Empty
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 to my site to be the first to receive notifications and emails about the latest updates, including new posts.
Join Slashpage and subscribe to 'sujin-prompt-engineer'!
Subscribe
9
👍
1
S
Samuel Yang
와, 바이오미믹으로부터 프롬프트 구조를 이끌어낸다니! 인스파이어링합니다. 재료공학 쪽에서 실제 바이오미믹 연구를 많이 하는데요, 대표적인 것 중의 하나가 게코 도마뱀의 발바닥 돌기의 하이어라키 구조를 모방하여 접착제를 만들기도 합니다. 이런 구조들을 프롬프트의 명확한 구조화를 위해 적용해 보는 것도 재미있을 것 같네요:)
🧷
1
😀
1
Sujin_Kang
링크드인이 아닌, 텍스트를 마음껏 쓸 수 있는 공간에서 글을 전달하니, 더 명확하게 전달이 되려나요? 종종 코드도 올릴 수 있게 되었습니다!
역시 알고 계시는 군요, GEICO 의 발바닥 돌기를 예시로 쓸지 도꼬마리를 예시로 할지 고민하다가, 단어의 발음이 주는 어감은, 도꼬마리가 더 생동감이 있는 것 같아서 사용했어요.
하이어라키 구조를 "Indent"로 하는 시도를 많이 했었는데요.
ChatGPT에는 </n> 으로
Playground와 Jupytor 에는 |
|
이렇게 했더니, 명확하게 해야 할 일들을 잘 처리하여 요즘도 잘 사용중인 프롬프팅 방법입니다 ^^ 다른 것 한 번 해보시면, 의견 나누어 주세요~
👍
1
S
Samuel Yang
공간을 열어주셔서 감사합니다. 아무래도 링크드인은 이것저것 여쭈어보기가 좀 애매한 공간 같아서 주저주저했었습니다. 제가 부족해서인지 하이어라키 구조를 어떤 식으로 텍스트를 통해 구조화하는지 잘 이해를 아직 못해서, 아래 질문을 남겼습니다ㅠ
😀
1
S
Samuel Yang
여기서 질문이 있습니다. 위의 예시에서 인덴테이션은 다음 부분을 들여쓰기를 한 것을 의미하는 것일까요? 아니면 육각형 구조를 모사하기 위해 indentation이 사용된 것인지, 이것이 어떻게 간결한 구조화를 이루는 것인지 제가 잘 이해를 못했습니다. 조금 더 설명을 해 주실 수 있으실까요?
""" 2150년 미래 도시에 대한 에세이를 작성하는 함수야. 각 섹션과 하위 항목에 대한 설명을 제공해. """
S
Samuel Yang
아, 이해를 한 것 같습니다. 자문자답이네요. 제가 이해한 바를 조금 후에 댓글로 남겨보겠습니다. 제대로 이해한 것인지 박사님께서 한 번 확인해 주시면 좋을 것 같습니다🙂
👍🏻
1
😀
1
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
Sujin_Kang
네~~~ 제가 표현을 안 한 것들을 다 적어주셨네요. 정확합니다. 위의 예시는 JSON Schema 를 활용했고. 코드처럼 보이나, Pseudo 코드처럼 프롬프트를 써서 또 다른 구조화를 시도한 것이에요.
이렇게 적어두고 보니 사무엘님의 설명이 더 정확하네요 ^^ 보실 분들이 바로 이해가 될 것 같습니다.
감사합니다!
👍
1
😀
1
See latest comments