# 도꼬마리 열매와 프롬프트

**Biomimicry 으로부터의 프롬프트 엔지니어링: 프롬프트 구조화  **

프롬프트 엔지니어로 일을 할 때 두 가지 역량이 중요하다 생각해요. 

1️⃣  **LLM의 가능성 탐구를 위한 독창성**

2️⃣  **LLM의 한계를 인지한 과학적 접근 **

다양한 학문 분야에서 영감을 얻을 수 있습니다.  그 중 하나는 `Biomimicry` 입니다. 

**Biomimicry 는 '생체 모방' 입니다**. 자연으로부터 배워 문제를 해결하는 방법이에요.  자연과 생물들이 백만 년 동안 진화하면서 발전시킨 해결책들을 연구하고, 이를 인간의 문제 해결에 적용하는 것입니다.

**이 열매 아세요?**

도꼬마리 열매입니다. 아마도 이 열매가 옷이나 몸에 붙어서 고생한 적이 있을 거예요. 

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/204017_f7de5eBd7df5PgInej?q=80&s=1280x180&t=outside&f=webp)

 

열매 끝을 보면, 갈고리 처럼 생겼죠. 자세히 확대한 사진을 보면 갈고리 모양이 잘 보여요.  

그리고 이 열매에서 영감받아 오늘의 "벨크로"가 탄생하게 됩니다. 

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/203856_NmSUo4GNV9llI3vEOw?q=80&s=1280x180&t=outside&f=webp)

[출처: Biomimicry, An Approach Towards Future of Design and Sustainability](https://medium.com/@rakshit.aryadesign/biomimicry-an-approach-towards-future-of-design-and-sustainability-ffbb07fa9cd8)

**💡  벨크로 발명 계기 **

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/204721_u4qq6YL9BqWBRP8W3m?q=80&s=1280x180&t=outside&f=webp)

전기 공학자이자 발명다 Gorge De Mestral 은 산책 후 강아지 털에 붙은 도꼬마리를 떼어냈어요 호기심이 가득했던 그는 현미경으로 열매를 관찰했어요. 확대해 보니, 갈고리 끝에 붙는 메커니즘을 발견하고 1951년 "벨크로'를 특허 출원했습니다.   

자연에서 영감 받아 탄생한 제품들이 많아요. 

**💡 비버의 털 구조에서 영감을 받은 웻슈트 **

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/205222_6YjuU1lJBNWIDdN4Kq?q=80&s=1280x180&t=outside&f=webp)

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/205256_Ulsq9Kg3V9ja6yW4Lu?q=80&s=1280x180&t=outside&f=webp)

비버는 물속에서 다이빙하고 수영할 때 체온을 유지해주는 두꺼운 지방층을 가지고 있습니다. 하지만  체온 유지를 위한 또 다른 비결이 있는데요. 비버의 털은 너무나 조밀해서 털 층 사이에 따뜻한 공기 주머니를 가두어, 이 수생 포유류를 따뜻할 뿐만 아니라 건조하게 유지시켜 준다고 해요. 

매사추세츠 공과대학(MIT)의 엔지니어들은 서퍼들도 이와 같은 능력을 갖추면 좋아할 것이라고 생각했습니다. 그래서 그들은 "생체모방 재료"인 웻슈트를 만들 수 있는 고무 같은 모피 형태의 가죽을 만들어냈습니다.

자연에서 영감을 받아 발명으로 이어진 것이죠. 

생태모방과 프롬프트 엔지니어링의 연관성은 생각해보면 정말 흥미로운 주제입니다. 프롬프팅 개발에 새로운 접근 방식을 시도해 볼 수 있어요.  제가 시도 했던 것 중에 성공했던 프롬프트 엔지니어링 제작사례가 있습니다. 

**💡벌집의 육각형 구조를 이용한 프롬프팅 **

벌집의 육강형 구조는 최소한의 재료로 최대의 공간을 만들어내는 효율적인 디자인이라 하죠. 이 원리로 프롬프트에 작용을 해봐야 겠다 생각했어요. 간결하면서도 언어 모델의 응답 내용은 풍부하도록요. 

![Image](https://upload.cafenono.com/image/slashpagePost/20240719/205640_oiW1V1mi7fBx5mCRZT?q=80&s=1280x180&t=outside&f=webp)

여기서 그럼 **간결하다는 것**에 개념 정의를 할 필요가 있어요. 프롬프트에 필요한 문장의 간결함도, 간결함이지만 구조를 간결하게 한다는 의미예요. 

---

## 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의 한 사용자 분도 이런 글을 남겼어요.** 

[Minor formatting of query makes significant difference to results in completions](https://community.openai.com/t/minor-formatting-of-query-makes-significant-difference-to-results-in-completions/328872)

내용: 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**

**벨크로 발명: **

[https://medium.com/@rakshit.aryadesign/biomimicry-an-approach-towards-future-of-design-and-sustainability-ffbb07fa9cd8](https://medium.com/@rakshit.aryadesign/biomimicry-an-approach-towards-future-of-design-and-sustainability-ffbb07fa9cd8) 

[https://medium.com/@rakshit.aryadesign/biomimicry-an-approach-towards-future-of-design-and-sustainability-ffbb07fa9cd8](https://medium.com/@rakshit.aryadesign/biomimicry-an-approach-towards-future-of-design-and-sustainability-ffbb07fa9cd8)

**비버와 웻수트: **

[8 Amazing Examples of Biomimicry](https://www.treehugger.com/amazing-examples-of-biomimicry-4869336)

For the site tree, see the [root Markdown](https://slashpage.com/sujin-prompt-engineer.md).
