Post

개조식 변환 프롬프트 개발 - 프롬프트 개발 사이클 예제

이번 포스팅에서는 앞서 알아보았던 프롬프트 개발 사이클에 대한 이해를 돕고자 간단한 예시를 살펴보도록 하겠습니다. 이번 예시에서 우리는 gpt-3.5-turbo-0125 모델을 이용해 평서문 문장을 입력받으면 개조식 문장으로 변환해주는 프롬프트를 개발해보고자 합니다.

Step 1. 작업 정의 및 성공 기준 설정(Define the task and success criteria)

위에서 언급한대로 평서체 문장이 입력되면 이를 개조식 문장으로 변환해주는 프롬프트(이하 개조식 변환 프롬프트)를 개발합니다. 이 프롬프트를 적용하고자 하는 애플리케이션은 보고서 문장 변환으로 잡아 봅시다. 즉, 평서문으로 작성된 글이 입력되면, 이를 개조식 문장들로 바꿔주는 것입니다.

개조식 프롬프트의 결과를 예상해 봅시다. 수학문제나 코딩문제는 아니지만 개방형 답변에 비해 상대적으로 명백한 답변을 기대할 수 있습니다. 모델이 출력한 응답 문장의 어미가 개조식으로 변환되었는지에 대해 예 혹은 아니오(1 또는 0)로 판단이 가능하므로 이를 평가Evals 기준으로 삼아 점수를 매겨 보겠습니다.

본 예시에서의 성공 기준은 다양한 평서문(한줄 문장, 복합문장, 긴 문장, 문단)에 대해 정확도 90% 이상으로 잡아 보겠습니다. 이 다양한 평서문들이 바로 2번에서 다룰 테스트 케이스입니다.

Step 2. 테스트 케이스 개발(Develop test cases)

개조식 변환 프롬프트를 평가Evals하는데 사용할 테스트 케이스 세트(입력 데이터 세트)를 구축해 봅시다. 여기서는 신문 기사나 도서 정보로부터 수집한 다양한 종류의 평서문들을 사용해 보겠습니다.

일반적인 한 줄 문장

1) 심판론이 선거판을 흔든 것은 여권의 큰 정책 잘못이나 권력형 비리 때문이 아니다.
2) 우리 군은 이것을 ‘한미 연합 자산’이라고 불러왔다.
3) 촘촘한 정찰 위성망을 구축하고 독자적 고고도 정찰 드론을 확보하면 실질적인 대북 억제력을 가질 수 있다.
4) 실은 묵묵히 할 일을 하느라 눈에 잘 안 띌 뿐 우리 곁엔 악성 소음을 유발하는 ‘막말 의사’보다 환자의 존경을 받는 ‘진짜 의사’가 더 많다.
5) 인간의 본성과 세상의 이치에 관한 이야기를 두루 다루어 한층 더 다층적이고 복합적인 메시지를 담아냈다는 평가를 받는다.
6) 스콧 갤러웨이, 라이온 홀리데이는 물론, 국내 유수의 리더들 또한 먼저 읽고 “대단한 책이다”라는 평가를 내놓았다.
7) 어떠한 조건이나 환경에서도 당신 자체로서 빛을 발할 수 있는 돋보이는 존재로 거듭날 수 있을 것이다.
8) 이 기술을 모든 사람이 무료로 체험할 수 있으니, 그 관심이 폭발한 것은 어쩌면 당연하다.
9) 미술관에서 10년이라는 시간을 보내며 상실감을 극복하고 마침내 세상으로 나아갈 힘을 얻는 여정을 섬세하게 그려냈다.
10) 소란한 세상에 지쳐 완벽한 고독을 꿈꾸는 이들에게 잔잔하지만 묵직한 사색의 시간을 선사한다.
11) 살려고 발버둥 치다 보니, 결과적으로 그의 삶은 더 건강한 방향으로 흘러갔다.
12) 그토록 바라던 메인 작가가 되었건만, 거울에 비친 모습은 피로와 무기력에 절어 초췌한 환자일 뿐이었다.
13) 그중 무엇이 나한테 맞는지는 누가 대신 알려 주지 않는다.
14) 우리는 성공에 대한 집착과 욕망을 지나치게 미화하는 시대에 살고 있다.
15) 무엇보다 자기 자신을 망각하지 말고 돌보고 배려하고 집중하는 행위가 필요하다.

👉 복합 문장 및 긴 문장, 여러 문장으로 구성된 문단에 어떤 테스트 케이스들이 사용되었는지는 Appendix에서 확인해 보실 수 있습니다.

태스크 성격에 따라 다를 수 있는데요, 이번 태스크에서는 테스트 케이스를 미리 구축함으로써 개조식 변환 방법을 구체적으로 LLM에게 어떻게 지시할지에 대한 아이디어를 얻을 수 있습니다.

1) …권력형 비리 때문이 아니다 –> 아님: 맨 마지막의 ‘다’를 빼고 미음 받침 추가
2) …‘한미 연합 자산’이라고 불러왔다 –>왔음: **마지막의 ‘~다’를 빼고 ‘~음’으로 마침
3) …실질적인 대북 억제력을 가질 수 있다 –>있음: **마지막의 ‘~다’를 빼고 ‘~음’으로 마침
4) …환자의 존경을 받는 ‘진짜 의사’가 더 많다 –>많음: 마지막의 ‘~다’를 빼고 ‘~음’으로 마침
5) …복합적인 메시지를 담아냈다는 평가를 받는다 –> 받음: ‘는다’를 빼고 ‘~음’으로 마침
6) …먼저 읽고 “대단한 책이다”라는 평가를 내놓았다 –> 내놓음: ‘았다’를 빼고 ‘~음’으로 마침
7) …돋보이는 존재로 거듭날 수 있을 것이다 –> 것임: ‘이다’를 빼고 ‘~임’으로 마침
8) …그 관심이 폭발한 것은 어쩌면 당연하다 –> 당연함: 맨 마지막의 ‘다’를 빼고 미음 받침 추가
9) …나아갈 힘을 얻는 여정을 섬세하게 그려냈다 –> 그려냄: ‘ㅆ다’를 빼고 미음 받침 추가
10) …묵직한 사색의 시간을 선사한다 –> 선사함: ‘ㄴ다’를 빼고 미음 받침 추가
….

즉, 테스트 케이스의 각 문장 어미가 개조식이 되었을 때, 어떤 형태를 띄며, 어떤 과정을 통해서 개조식이 변환되는지를 체크해 봄으로써 대략적인 변환 규칙들을 도출할 수 있습니다. 이 규칙들을 어느정도 일반화하여 Step 3 예비 프롬프트 설계에서 사용해 볼 것입니다.

일반적으로 입력될거라 예상하는 테스트 케이스 이외에도 극단적이거나 예외적인 입력인 특이 케이스edge cases에 대한 데이터도 준비해 놓아야 합니다. 이번 프롬프트 개발에 있어서는 간단하게 의문문과 감탄문을 특이 케이스로 설정해 보겠습니다.

1) 의문문:

  • 그것은 정말 멋진 건축물인가?
  • 이 문제를 해결할 수 있을까요?
  • 그 영화의 결말이 어떻게 되는지 알려줄 수 있습니까?
  • 이 제품의 품질을 더 향상시키기 위해서는 어떤 노력이 필요할까?
  • 네가 가장 존경하는 인물은 누구이고, 그 이유는 무엇이니?

2) 감탄문:

  • 와, 이 풍경 정말 아름답다!
  • 정말 놀라운 일이에요!
  • 이거 맛이 정말 환상적이에요!
  • 와우, 당신이 이룬 성과는 정말 대단해요!
  • 이렇게 멋진 선물을 받다니 감동이에요!

Step 3. 예비 프롬프트 설계(Engineer the preliminary prompt)

자, 이제 프롬프트 개발 사이클에서 가장 중요한 작업인 초기 설계(작업 정의 및 평가/성공기준 설정, 테스트 케이스 발굴)가 어느 정도 끝난 것 같습니다. 프롬프트를 작성해보는 단계로 들어가 봅시다.

우리는 테스트 케이스를 준비하면서, 평서문 입력을 개조식을 바꾸기 위해, 언어 모델에게 무엇을 지시해야 하는지 감을 잡을 수 있었습니다(변환 규칙 도출). 이를 시작점으로 삼아 예비 프롬프트를 작성해 봅시다. 이번 태스크에서는 어떤 과정을 통해 개조식 문장이 되는지를 정의하는 것이 필요해 보입니다. 일단 위에서 도출한 변환 규칙을 러프하게 적용하여 다음과 같은 초기 프롬프트를 작성해 보겠습니다

태스크 수행을 명령하고, 이 태스크의 핵심인 ‘개조식 문장의 정의’를 XML 태그<definition>를 통해 구분하여, 모델이 자신이 해야 할 것을 정확히 파악할 수 있도록 프롬프트를 구성했습니다. 이 프롬프트를 편의상 InitialPrompt(초기/예비 프롬프트)라고 칭하겠습니다.

InitialPrompt

1
2
3
4
5
6
7
8
9
10
11
12
13
# Instructions

Input으로 주어지는 평서형 문장을 개조식으로 변환하세요. 개조식 변환의 정의는 XML 태그로 구분된 definition을 참고하세요.

<definition>
개조식 문장이란 '~다'로 끝나는 한글 평서형 문장 어미를 '~임', "~음"으로 바꾸거나 혹은 원래 받침과 어미 "~다"를 빼고 원래 받침 부분에 미음(ㅁ) 받침을 삽입하여 문장 끝부분을 구성하는 문장 형식을 말합니다.
</definition>

# Output
개조식으로 변환된 한글 문장 

# Input
평서형의 한글 문장:  

Step 4. 테스트 케이스를 이용한 프롬프트 테스트(Test prompt against test cases) 및 Step 5. 프롬프트 개선(Refine prompt)

이 예시에서는 OpenAI Playground를 사용하여 프롬프트 테스트 및 개선을 진행해 보겠습니다. InitialPrompt를 시스템 프롬프트에 넣고, Step 2에서 구축한 테스트 케이스를 이용해 예비 프롬프트의 성능을 평가Evals해 보았습니다.

‘일반적인 한 줄 문장’ 15개를 이용해 InitialPrompt의 성능을 테스트해 본 결과, 총 8개 문장만이 성공적으로 개조식으로 변환되었습니다. 약 53%의 정확도입니다. 우리 목표인 성공기준 90%를 달성하기 위해서는 프롬프트를 더 개선해야 할 필요가 있어 보입니다.

InitialPrompt에서는 개조식 문장이 무엇인지를 정의해서 LLM에게 알려주었습니다. 이번에는 좀 더 구체적으로 개조식 문장을 어떻게 만드는지에 초점을 맞춰 봤습니다. 개조식 문장 변환 방법을 총 4개의 케이스로 나누고, 각 케이스 바로 다음에 예시를 제공했습니다. 일종의 퓨샷 프롬프팅을 적용한 것입니다. 그리고 이들을 <tranformation> 태그로 묶었습니다.

예시를 모아 따로 # Examples 항목을 만들 수도 있는데, 우리 인간도 설명을 읽은 다음에 바로 예시가 따라오면 이해하기 편하다는 점을 고려해서 설명-예시 형식으로 프롬프트를 작성했습니다. 개선된 프롬프트를 RefinedPrompt01이라 칭하겠습니다.

RefinedPrompt01

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Instructions

XML 태그로 구분된 transformation에 작성된 개조식 변환 방법과 예시를 참고하여 "~다."로 끝나는 평서형 문장을 개조식 문장으로 변환하세요.

<transformation>
**Case 1.** 문장 마지막의 '~다', '~이다', '~는다'를 삭제하고 '~음.' 또는  '~임.' 또는 '~움.'으로 마침
Example) 초등 고학년은 공부의 전환점을 맞이하는 시기다 --> 초등 고학년은 공부의 전환점을 맞이하는 시기임
**Case 2.**  문장 마지막 부분에서 원래 받침과 어미 '~다'를 빼고 '~음.' 또는  '~임.' 또는 '~움.'으로 마침
Example) 답은 어렵다 --> 답은 어려움 
**Case 3.** 문장 마지막 부분에서 원래 받침과 어미 '~다'를 빼고 ~다'의 직전 어절에 미음(ㅁ) 받침을 추가
Example) 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당긴다. --> 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당김.
**Case 4.** 문장 마지막의 '~다'를 지우고, '~다'의 직전 어절에 미음(ㅁ) 받침을 추가
Example 1) 내 본심은 그런 것이 아니다. --> 내 본심은 그런 것이 아님.
Example 2) 답은 간단하다 --> 답은 간단함
</transformation>

# Output
개조식으로 변환된 한글 문장만 출력하세요.

# Input
평서형의 한글 문장: 

‘일반적인 한 줄 문장’ 15개를 이용해 RefinedPrompt01의 성능을 테스트해 본 결과, 총 14개 문장이 성공적으로 개조식으로 변환되었습니다. 약 93%의 정확도입니다. 프롬프트 구체화 및 예시 제공을 통해 ‘일반적인 한 줄 문장’ 테스트 케이스 세트에서 우리 목표인 성공기준 90% 이상을 달성했습니다!

이번에는 ‘복합 문장 및 긴 문장’ 테스트 케이스 15개에 대해 RefinedPrompt01의 성능을 테스트해 보았습니다. 각 세트에 대해 두 번 테스트를 진행한 결과 약 97%의 정확도를 나타냈습니다.

‘여러 문장으로 구성된 문단’ 10개에 대해서는 약 75%의 정확도를 보였습니다(각 세트에 대해 두 번 테스트 진행). 이 경우에 대한 프롬프트 성능 보완을 위해 여러 문장으로된 문단을 처리하는 방법을 제약조건(Constraints)으로 추가하여 프롬프트를 업데이트하였습니다(RefinedPrompt02). 업데이트시, 각 Case의 내용들을 약간 다듬었고, 새로운 Case를 하나 추가하였으며(Case 2), 비슷한 내용의 Case 3, 4를 병합하여 새로운 Case 4를 작성했습니다.

RefinedPrompt02

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# Instructions

<transformation> 태그 안에 제시된 **대표적인 몇 가지** 개조식 변환 방법과 예시를 참고하여 "~다."로 끝나는 평서형 문장을 개조식 문장으로 변환하세요. 

<transformation>
**Case 1.** 문장 끝의 '~다', '~이다', '~는다'를 삭제하고 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다.
예시) 초등 고학년은 공부의 전환점을 맞이하는 시기다 --> 초등 고학년은 공부의 전환점을 맞이하는 시기임

**Case 2.** 문장 끝의 '~는다'를 삭제하고, '~는다' 바로 앞 단어의 받침을 제거한 후 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다. 
예시) 그는 땅에 떨어진 지갑을 줍는다. --> 그는 땅에 떨어진 지갑을 주움

**Case 3.** 문장 끝에서 원래 받침과 어미 '~다'를 제거하고 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다.
예시) 답은 어렵다 --> 답은 어려움

**Case 4.** 문장 끝의 '~다'를 삭제하고, '~다' 바로 앞 단어에 'ㅁ(미음)' 받침을 추가합니다.
예시 1) 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당긴다. --> 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당김.
예시 2) 내 본심은 그런 것이 아니다. --> 내 본심은 그런 것이 아님.
예시 3) 답은 간단하다 --> 답은 간단함
</transformation>

# Constraints
여러 문장으로 구성된 문단이 입력으로 주어지는 경우:
1. 문단 내 각 문장을 개조식으로 변환하세요.
2. 개조식으로 변환된 모든 문장을 합쳐 새로운 문단을 만드세요.

# Output
개조식으로 변환된 한글 문장만 출력하세요.

# Input
평서형 한글 문장(들):

이러한 제약조건을 추가하여, ‘여러 문장으로 구성된 문단’ 테스트 케이스에 대해 업데이트된 프롬프트의 성능을 테스트해 보았습니다. 제약 조건이 추가되기 전, 개조식 변환이 실패했던 케이스 1개에 대해 개조식 변환이 잘 이루어져 정확도는 약 90%를 달성할 수 있었습니다.

문단을 구성하는 여러 문장 중, 한두개의 문장에서 개조식 변환이 실패한 경우들이 있었습니다. 이런 경우, (개조식 변환된 문장수/전체 문장수)로 점수를 매겼습니다.

이번에는 특이 케이스를 다뤄보겠습니다. 개조식 변환에 있어 다양한 특이 케이스가 있을 수 있지만, 여기서는 간단히 의문문과 감탄문을 선정하였습니다. 의문문과 감탄문이 입력되면 개조식 변환없이 입력 그대로 출력하라는 제한 조건을 추가했습니다(RefinedPrompt02a).

RefinedPrompt02a

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# Instructions

<transformation> 태그 안에 제시된 **대표적인 몇 가지** 개조식 변환 방법과 예시를 참고하여 "~다."로 끝나는 평서형 문장을 개조식 문장으로 변환하세요. 

<transformation>
**Case 1.** 문장 끝의 '~다', '~이다', '~는다'를 삭제하고 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다.
예시) 초등 고학년은 공부의 전환점을 맞이하는 시기다 --> 초등 고학년은 공부의 전환점을 맞이하는 시기임

**Case 2.** 문장 끝의 '~는다'를 삭제하고, '~는다' 바로 앞 단어의 받침을 제거한 후 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다. 
예시) 그는 땅에 떨어진 지갑을 줍는다. --> 그는 땅에 떨어진 지갑을 주움

**Case 3.** 문장 끝에서 원래 받침과 어미 '~다'를 제거하고 '~음', '~임', '~움' 중 하나로 문장을 마무리합니다.
예시) 답은 어렵다 --> 답은 어려움

**Case 4.** 문장 끝의 '~다'를 삭제하고, '~다' 바로 앞 단어에 'ㅁ(미음)' 받침을 추가합니다.
예시 1) 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당긴다. --> 책을 읽고 싶지만 소셜미디어 알람이 우리를 끌어당김.
예시 2) 내 본심은 그런 것이 아니다. --> 내 본심은 그런 것이 아님.
예시 3) 답은 간단하다 --> 답은 간단함
</transformation>

# Constraints
- 여러 문장으로 구성된 문단이 입력으로 주어지는 경우:
1. 문단 내 각 문장을 개조식으로 변환하세요.
2. 개조식으로 변환된 모든 문장을 합쳐 새로운 문단을 만드세요.
- 느낌표(!)로 끝나는 감탄문은 개조식 변환 없이 입력문 그대로를 다시 출력하세요.
- 물음표(?)로 끝나는 의문문은 개조식 변환 없이 입력문 그대로를 다시 출력하세요.

# Output
개조식으로 변환된 한글 문장만 출력하세요.

# Input
평서형 한글 문장(들):

테스트 결과, 의문문 혹은 감탄문이 입력되었을 때, 입력값 그대로 출력되는 것을 확인할 수 있었습니다. 이로써 우리가 정한 성공기준인 개조식 변환 정확도 90% 이상이며, 특이 케이스까지 고려된 프롬프트를 완성할 수 있었습니다.

각 업데이트 단계에서 새롭게 추가된 프롬프트들이 프롬프트 성능에 예상치 못한 영향을 미칠 가능성도 생각해봐야 합니다. 완성된 RefinedPrompt02a가 ‘일반적인 한 줄 문장’, ‘복합 문장 및 긴 문장’, ‘여러 문장으로 구성된 문단’ 테스트 케이스에 대해 이전과 변함없는 정확도를 보이는지 다시 한 번 테스트해 봅니다.

전체 테스트 케이스에 대해 테스트해 본 결과, 약 97%의 정확도를 나타냄을 확인할 수 있었습니다. 주목할 점은 ‘일반적인 한 줄 문장’ 테스트에서 정확도가 100%로 증가했다는 점입니다. 더 가혹한 환경에서도 개조식 문장을 만들 수 있도록 프롬프트를 업데이트 하는 과정에서 가장 느슨한 환경에 속하는 ‘일반적인 한 줄 문장’ 케이스의 개조식 변환 성능이 향상되었다고 말할 수 있겠습니다.

이제 최종 테스트를 위해 신문 기사 일부를 가져와 개발된 프롬프트를 이용해 개조식 변환을 시도해 보겠습니다. 여기서 사용한 기사는 ‘4년 만의 반감기에 또 가격 상승 기대… “이번엔 다를 것” 전망도’입니다. 기사 일부를 발췌해 보겠습니다.

‘사토시 나카모토’라고 알려진 비트코인 창시자는 2008년 11월 발표한 백서 첫 문장부터 전통 금융 시스템에 대한 반감을 나타냈다. 중앙집권화된 금융시스템을 통하지 않고 화폐 거래를 할 목적으로 비트코인을 개발했다는 점을 강조한 것이다. 이후 그는 2009년 1월 3일 블록체인에 최초로 생산한 비트코인 블록(제네시스 블록)에 런던타임스 1면에 실린 영국 재무장관의 은행 구제 금융 기사를 새겨 넣으면서 재차 전통 금융 시스템의 문제점을 지적했다.

비트코인이 만들어진 시점으로도 탄생 배경을 유추해볼 수 있다. 비트코인은 2008년 미국의 서브프라임 모기지 사태 직후 생겼다. 금융기관들의 무분별한 대출로 부동산 시장에서 거대한 버블이 발생했다가 붕괴하면서 대출금을 상환할 수 없는 사람들이 쏟아지자 은행들은 유동성 위기에 직면했다. 미 투자은행 리먼브러더스는 파산을 선언했고, 달러 유동성 위기는 다른 나라 금융기관으로 퍼져 결국 글로벌 금융위기로 이어졌다. 당시 달러 기축통화 체제와 금융 시스템에 대한 신뢰는 무너진 상태였다. 이처럼 비트코인 탄생의 기저에는 중앙집권적 금융 시스템과 국가가 발행하는 법정통화에 대한 불신이 자리 잡고 있다.

비트코인을 기존 법정통화와 차별화하기 위해 사토시가 심어놓은 장치들 중 하나가 바로 ‘반감기(halving)’다. 반감기란 채굴에 성공하는 블록체인 블록마다 지급되는 비트코인 채굴 보상이 절반으로 줄어드는 현상을 뜻한다. 비트코인을 얻기 위해선 사토시가 만든 어려운 수학 문제를 풀어야 하는데, 이 과정을 ‘채굴’이라고 부른다. 채굴을 위해선 고성능의 컴퓨터가 필수적이고, 전력도 대량으로 소모된다.

비트코인이 처음 유통되기 시작할 당시 채굴자가 한 블록을 채굴하면 받는 보상은 50비트코인(BTC)이었다. 이 보상은 21만 번째 블록이 채굴되면 반으로 줄어든다. 지금껏 이 시기가 약 4년에 한 번씩 돌아왔는데 반감기 주기가 4년으로 정해져 있는 건 아니다. 2012년 11월 28일, 2016년 7월 9일, 2020년 5월 11일 등 과거 세 번의 반감기를 거치면서 채굴 보상은 50BTC에서 25BTC, 12.5BTC, 6.25BTC로 감소해 왔다.

사토시는 2008년부터 2140년까지 비트코인 발행량을 총 2100만 개로 제한해 놨다. 비트코인 공급량이 고정된 상황에서 반감기는 새로운 비트코인이 생성되는 속도를 늦춰 비트코인의 희소성을 보장하는 역할을 한다. 궁극적으로 사토시는 비트코인을 시간이 흐를수록 가치가 오르는 ‘디플레이션 통화’로 만들고자 한 것이다. 김종환 블로코 대표는 “금, 석유 등 지구상에 존재하는 모든 자원은 기본적으로 디플레이션 통화의 성격을 지니고 있지만, 유일하게 그렇지 않은 물건이 정부가 무한으로 찍어낼 수 있는 법정통화”라며 “사토시는 갈수록 가치가 절하되는 법정통화로 우리 노동의 대가를 지불받는다는 점에 의문을 던진 사람”이라고 설명했다.

개조식 변환 프롬프트를 이용해 개조식 문장으로 바꾼 기사는 다음과 같습니다. 모든 문장이 성공적으로 개조식으로 변환되었음을 확인할 수 있습니다.

‘사토시 나카모토’라고 알려진 비트코인 창시자는 2008년 11월 발표한 백서 첫 문장부터 전통 금융 시스템에 대한 반감을 나타냄. 중앙집권화된 금융시스템을 통하지 않고 화폐 거래를 할 목적으로 비트코인을 개발한 것을 강조함. 이후 그는 2009년 1월 3일 블록체인에 최초로 생산한 비트코인 블록(제네시스 블록)에 런던타임스 1면에 실린 영국 재무장관의 은행 구제 금융 기사를 새겨 넣으면서 재차 전통 금융 시스템의 문제점을 지적함.

비트코인이 만들어진 시점으로도 탄생 배경을 유추해볼 수 있음. 비트코인은 2008년 미국의 서브프라임 모기지 사태 직후 생겼음. 금융기관들의 무분별한 대출로 부동산 시장에서 거대한 버블이 발생했다가 붕괴하면서 대출금을 상환할 수 없는 사람들이 쏟아지자 은행들은 유동성 위기에 직면함. 미 투자은행 리먼브러더스는 파산을 선언하고, 달러 유동성 위기는 다른 나라 금융기관으로 퍼져 결국 글로벌 금융위기로 이어짐. 당시 달러 기축통화 체제와 금융 시스템에 대한 신뢰는 무너진 상태였음. 이처럼 비트코인 탄생의 기저에는 중앙집권적 금융 시스템과 국가가 발행하는 법정통화에 대한 불신이 자리 잡고 있음.

비트코인을 기존 법정통화와 차별화하기 위해 사토시가 심어놓은 장치들 중 하나가 바로 ‘반감기(halving)’임. 반감기란 채굴에 성공하는 블록체인 블록마다 지급되는 비트코인 채굴 보상이 절반으로 줄어드는 현상을 뜻함. 비트코인을 얻기 위해선 사토시가 만든 어려운 수학 문제를 풀어야 하는데, 이 과정을 ‘채굴’이라고 부름. 채굴을 위해선 고성능의 컴퓨터가 필수적이고, 전력도 대량으로 소모됨.

비트코인이 처음 유통되기 시작할 당시 채굴자가 한 블록을 채굴하면 받는 보상은 50비트코인(BTC)임. 이 보상은 21만 번째 블록이 채굴되면 반으로 줄어듦. 지금껏 이 시기가 약 4년에 한 번씩 돌아왔는데 반감기 주기가 4년으로 정해져 있는 건 아님. 2012년 11월 28일, 2016년 7월 9일, 2020년 5월 11일 등 과거 세 번의 반감기를 거치면서 채굴 보상은 50BTC에서 25BTC, 12.5BTC, 6.25BTC로 감소해 왔음.

사토시는 2008년부터 2140년까지 비트코인 발행량을 총 2100만 개로 제한해 놓음. 비트코인 공급량이 고정된 상황에서 반감기는 새로운 비트코인이 생성되는 속도를 늦춰 비트코인의 희소성을 보장하는 역할을 함. 궁극적으로 사토시는 비트코인을 시간이 흐를수록 가치가 오르는 ‘디플레이션 통화’로 만들고자 한 것임. 김종환 블로코 대표는 “금, 석유 등 지구상에 존재하는 모든 자원은 기본적으로 디플레이션 통화의 성격을 지니고 있지만, 유일하게 그렇지 않은 물건이 정부가 무한으로 찍어낼 수 있는 법정통화”라며 “사토시는 갈수록 가치가 절하되는 법정통화로 우리 노동의 대가를 지불받는다는 점에 의문을 던진 사람”이라고 설명함.

Concluding Remarks

이번 포스팅에서는 이전 포스팅 프롬프트 개발 사이클의 예시를 제공하고자, 개발 사이클의 단계를 따라가며 개조식 변환 프롬프트를 개발해 봤습니다. 글을 마치면서, 한 가지 언급할 필요가 있을 것 같습니다(it is worth noting that…). 이 프롬프트에서는 개조식 변환 방법에 대해 4개 정도의 케이스와 예시만을 사용했습니다. 더 세세하게 개조식 변환 방법을 기술할수도 있지만, 너무 세세한 지시사항은 오히려 언어모델의 일반화 능력을 제한할 수도 있습니다. 그래서 대표적인 변환 방법 4개만 언어모델에게 알려주고, 이들을 지칭할 때 대표적인 몇 가지라는 표현을 사용함으로써 언어모델이 개조식 변환에 있어 유연하게 대처할 수 있는 공간을 만들어 주었습니다.

Appendix

하이퍼 파라미터 설정

논문도 아닌데, 이렇게까지 써야하나 싶기도 하지만, 혹시 재현 테스트를 해 보실 분이 계실까봐서요🙂 프롬프트 개발에 사용된 OpenAI Playground 하이퍼 파라미터는 다음과 같습니다.

  • model: gpt-3.5-turbo-0125
  • Temperature: 0.3
  • top_p: 0.5

복합 문장 및 긴 문장

1) 그는 집에 가고 싶었지만, 해야 할 일이 너무 많았기 때문에, 결국 늦은 밤까지 사무실에 남아 있어야 했다.
2) 그는 자신의 꿈을 이루기 위해 부단히 노력했고, 비록 많은 어려움이 있었지만, 결국 그의 노력은 결실을 맺어 큰 성공을 거두었다.
3) 우리는 이 프로젝트를 성공적으로 마무리하기 위해, 팀원 모두가 각자의 역할에 최선을 다하고, 서로 협력하며, 어려움이 있더라도 포기하지 않고 끝까지 노력해야 한다는 것을 잘 알고 있다.
4) 인생에서 가장 중요한 것은 자신이 하고 싶은 일을 찾아 열정을 갖고 매진하는 것이며, 설령 실패하더라도 포기하지 않고 다시 도전하는 것이 진정한 성공의 비결이라고 할 수 있다.
5) 그녀가 아침에 일어나서 창밖을 바라보니, 밤새 내린 눈이 온 세상을 하얗게 뒤덮고 있었고, 나무 가지마다 소복이 쌓인 눈이 마치 꿈속 풍경처럼 아름다웠다.
6) 우리가 살아가면서 겪는 수많은 선택의 순간들은 한순간의 결정이 인생을 좌우할 수도 있다는 것을 깨닫게 해주며, 그렇기에 우리는 항상 신중하고 현명한 선택을 해야 한다.
7) 책을 읽는 것은 마치 시공간을 초월하여 다른 세계로 떠나는 여행과도 같아서, 독서를 통해 우리는 새로운 지식과 통찰을 얻을 수 있을 뿐만 아니라, 삶의 지혜와 영감을 얻을 수 있다.
8) 성공이라는 것은 단순히 물질적인 풍요로움을 의미하는 것이 아니라, 자신이 가진 재능과 열정을 바탕으로 끊임없이 노력하고 성장해 나가는 과정 자체가 진정한 성공이라고 할 수 있다.
9) 인간관계에서 가장 중요한 것은 상대방을 이해하고 배려하는 마음이며, 비록 서로 다른 생각과 가치관을 가지고 있더라도, 열린 마음으로 소통하고 존중하는 자세가 필요하다.
10) 우리는 살아가면서 크고 작은 도전에 직면하게 되는데, 이러한 도전을 두려워하거나 회피하기보다는, 용기를 내어 맞서 싸우고 극복해 나가는 과정 속에서 진정한 성장과 발전을 이룰 수 있다.
11) 행복이란 어떤 특별한 조건이나 환경에서만 얻을 수 있는 것이 아니라, 자신의 마음가짐과 태도에 따라 언제 어디서나 느낄 수 있는 것이기에, 우리는 매순간 감사하는 마음으로 살아가야 한다.
12) 세상을 변화시키는 것은 결코 한 사람의 힘으로는 불가능하지만, 많은 사람들이 함께 모여 서로 협력하고 노력할 때, 우리는 큰 변화를 이끌어낼 수 있다는 것을 역사가 증명하고 있다.
13) 나를 사랑하고, 인정하는 건 마음에 한 그루의 나무를 심는 과정과 같은데, 나의 마음속에 자존감이라는 단단한 뿌리를 내려야 타인의 말과 행동에, 나의 감정에, 관계에 쉽게 흔들리지 않을 수 있다.
14) 자동소화설비 인근에서 작업 중이던 60대 A 씨가 얼굴 부종·질식 등의 중상을 입고 천안 단국대 병원으로 이송됐고, 20~70대 근로자 5명도 호흡곤란·타박상 등의 경상을 입고 인근 병원으로 옮겨졌다.
15) 세종시 한 분양 전환 공공임대주택 아파트에 세 들어 살던 A씨 등 11명은 2019년 분양 전환 당시 부동산 임대회사 B사로부터 자격 요건을 충족하지 못했다는 이유로 계약 해지 통보를 받고 퇴거했다.

여러 문장으로 구성된 문단

1) 누군가가 어떤 일이 일어날 거라고 말했는데 실제로 일어나면, 그 사람의 예측이 옳은 것이다. 누군가가 어떤 일이 일어날 거라고 말했는데 일어나지 않으면, 그 사람의 예측이 틀린 것이다. 사람들은 이런 식으로만 생각한다. 그렇게 생각하는 것이 정신적 에너지가 덜 들어가고 편하기 때문이다. 눈앞에 실제 결과가 나와 있는 상태에서 어쩌면 다른 결과가 나올 수도 있었다는 사실을 사람들에게(또는 자기 자신에게)납득시키기는 어렵다. 포인트는 이것이다. 사람들은 자신이 미래를 바라보는 정확한 관점을 원한다고 믿지만, 사실 그들이 정말로 원하는 것은 확실성이다.

2) 아침은 늘 쥐 죽은 듯 고요하다. 더욱이 미술관 문을 열기까지 30분 정도 남겨두고 근무 자리에 도착하는 날이면 말을 걸어 나를 속세로 끌어내릴 사람은 아무도 없다. 그저 나와 렘브란트, 나와 보티첼리, 나와 실제로 거의 살아 움직이는 사람들이라 믿어질 만큼 강렬한 환영들뿐이다. 메트의 옛 거장 전시관이 마을이라면 주민은 거의 9천 명에 달한다(몇 년이 흐른 후 전시실 하나하나를 섭렵하면서 모두 세어본 결과 정확히는 8496명이었다. 전시관을 크게 확장한 다음에는 더 이상 유효하지 않은 숫자가 되었지만 여기에는 배경에 나오는 아기 천사, 투우장의 관객, 개미 크기의 곤돌라 사공까지 모두 포함되어 있다. 어떻게 그런 것들까지 모두 셀 수 있었을까 궁금하다면 그건 나에게 얼마나 시간이 많았는지를 실감하지 못해서다). 주민들은 596점의 그림 속에 살고 있는데 우연히도 거의 그 숫자에 맞먹는 햇수 이전에 붓으로 창조된 사람들이다.

3) 사실 최고의 진리와 가치를 인식하기란 힘들다. 플라톤이 말한 지성이란 누구에게나 처음부터 주어진 것이 아니라, 부단히 정신적으로 노력해야만 비로소 우리의 혼이 얻을 수 있는 것이다. 이데아는 눈으로 볼 수도, 손으로 만질 수도, 말로 설명할 수도 없지만, 플라톤에 따르면 그것은 가장 높은 곳에 존재하는 실재다. 우리가 이러한 이데아의 세계를 쉽게 인식하지 못하는 이유는 아마도 감각이 아닌 지성, 즉 직관이라는 인식 방식을 사용할 줄 모르기 때문이 아닐까? 또한 눈에 보이는 세계 안에 살고 있는 우리는 이 세계가 전부인 것처럼 착각한다.

4) 그레고리 번스라는 이름을 가진 이 소년은 자라서 미국 최고의 뇌 과학자가 된다. 그는 지난 20여 년 동안 기능적자기공명영상(fMRI)을 활용해 뇌의 의사결정 메커니즘과 보상 반응을 연구했다. 특히 도박, 사랑, 권력과 같은 보상에 뇌가 어떻게 반응하는지를 fMRI로 추적한 과학자로 유명하다. 그의 연구는 관찰의 영역에 머물러 있던 뇌 연구를 한 단계 끌어올렸다는 평가를 받는다. 저자는 신간 《나라는 착각》에서 자동차 사고 당시, 자전거를 타고 있는 자기 모습을 위에서 내려다보면서 트럭이 영화의 슬로우 모션처럼 자신을 덮치는 장면을 목격했다고 말한다. 그리고 이 모든 일이 마치 다른 사람에게 일어난 것처럼 느꼈다. 흔 초자연적 현상이라 불리는 유체 이탈을 경험한 것이다. 뇌과학자이자 정신과 의사답게 그는 자신이 겪은 경험을 ‘비인격화(depersonalizatioin)’라는 증상으로 설명한다. 비인격화는 ‘꿈같고, 안개 같고, 생기 없는, 또는 시각적으로 왜곡된’ 경험을 특징으로 하는 증상으로 ‘해리성 정체성 장애’라고도 부른다. 희귀한 경험 같지만 1995년 미국 노스캐롤라이나에서 있었던 조사에 따르면 지역 주민의 19%가 1년 동안 비슷한 증상을 경험했다고 답변할 만큼 기억의 왜곡은 흔한 현상이다. 저자는 자신의 경험처럼 인간의 기억은 그리 믿을 게 못 되며, 따라서 기억의 집합체인 자아 또한 일종의 망상에 불과하다는 도발적 주장을 한다.

5) 인간에게 여러 인격이 존재할 수 있다는 가정은 사실 새롭지 않다. 지킬박사와 하이드부터 배트맨까지 분열된 자아를 다룬 작품은 셀 수 없을 만큼 많으며 몇몇은 시대를 넘어서 사랑을 받고 있다. 프로이트도 정신을 이드, 이고, 슈퍼이고라는 세 부분으로 나눠 설명했다. 칼 융은 모든 사람이 ‘그림자’ 즉, 의식적인 면을 일시적으로 압도할 수 있는 어두운 면을 가지고 있다고 말했다. 다중 인격이 특정한 사람의 정신적 문제가 아니라 우리 모두의 일면이라는 것이다. 저자 또한 의식 분열이라는 의학 용어를 탄생시킨 크리스틴 비첨의 사례부터 프로이트가 악용한 안나의 치료기까지 다양한 다중 인격 사례를 통해 뇌에서 다중 인격이 만들어지는 메커니즘을 소개한다.

6) 부정적인 생각을 머릿속에서 빼내고, 그것을 이성적이고 합리적인 사고로 제거하는 것이다. 바로 ‘합리적 반문법’이다. 스포츠심리학에서는 ‘ASDR 훈련법’이라고 하는데, 현재의 문제 상황을 인지(Aware)하고, 본능에 따른 판단을 멈추고(Stop), 부정적인 생각에 반박하고(Dispute), 긍정적인 생각으로 대체(Replace)하는 것이다. 빈 노트나 종이를 하나 준비한다. 노트나 종이 중간에 세로로 선을 두 개 그어서 세 칸으로 나눈다. 맨 왼쪽 부분에 현재 드는 부정적인 생각을 적는다. 가운데 칸에는 그 생각에 대한 합리적인 반론, 즉 이성적으로 생각할 때 그 생각이 왜 잘못되었는지를 적는다. 이 반론에 대한 부정적인 생각이 또 든다면 왼쪽 칸 아래에 다시 적는다. 부정적인 생각과 긍정적인 생각을 서로 대비시켜 보는 것이다.

7) 매주 칼럼을 통해 미술 이야기를 전하고 있는 성수영 기자는 특유의 스토리텔링을 통해 어렵고 딱딱하게만 느껴지는 미술이 아닌, 쉽고 재미있게 미술을 접할 수 있도록 돕는다. 첫 책인 《명화의 탄생, 그때 그 사람》에서는 그동안 들려주던 이야기에 한층 깊이를 더해 주목을 끈다. 성수영 기자가 들려주는 화가들의 삶에 대해 차분히 듣다 보면 작품이 탄생하게 된 배경과 특징, 영향을 주고받았던 인물과 작품, 작품이 주는 의미 등을 자연스럽게 익힐 수 있다. 또한 루브르를 비롯해 오르세, 오랑주리, 뉴욕현대미술관 등 세계 유명 미술관의 소장품을 이 책 한 권으로 즐길 수 있어 손쉽게 명화를 감상하고 싶은 이들에게 귀중한 선물이 될 것이다. 《명화의 탄생, 그때 그 사람》은 총 4개의 장으로 구성된다. 초현실주의의 대가 마그리트를 비롯해 색채의 마술사 샤갈, 인상주의의 아버지 모네, 마리 앙투아네트 초상화로 유명한 엘리자베트 르 브룅, 미국을 대표하는 화가 앤드루 와이어스 등 총 27인의 삶과 대표작을 소개한다.

8) 베이즈 추론이라는 통계학의 한 분야가 베이즈정리를 바탕으로 이루어져 있다. 이 개념은 시리가 음성을 인식하고 스마트폰이 사진을 주제별로 자동분류하는 기술이나, 언젠가는 자율주행 차량을 제어할 현대의 기계 학습 알고리즘(좀 더 긍정적으로 부르자면 AI)의 바탕이 된다. 다량의 훈련데이터, 곧 물고기라고 말하는 사람들의 집합이 있으면 마이크가 그 단어를 수신할 때 제대로 알아들을 확률을 알아낼 수 있다. 그다음에 베이즈정리를 이용해 반대로 마이크에서 어떤 소리를 수신했을 때 사람이 물고기라고 말했을 확률을 계산할 수 있다. 해밍의 연구는 현대의 빅데이터 시대를 앞선 것이었다. 빅데이터 시대에는 모든 현상에 대한 방대한 양의 데이터를 값싼 센서로 쉽게 측정할 수 있고 어디에나 있는 빠른 무선망으로 보고하며 고성능 컴퓨터로 저장하고 처리하지만 그의 결론은 지금도 유효하다. 다시 말해 우리가 무언가를 측정할 수 있다고 해서 반드시 그것을 측정해야 하는 것은 아니다. 모든 지표를 동시에 고려하는 것보다 적절한 지표를 적절한 때에 쓰는 것이 중요하다.

9) 저자는 지난 30여 년 동안 정신분석 전문의로 일하며 수많은 환자들을 만나 왔다. 그들은 대부분 자신과 타인, 세상에 대해 부정적이었다. 그리고 사랑받을 만한 가치가 없는 사람이라며 스스로를 비하하고, 내일이 오지 않았으면 좋겠다고도 했다. 그런데 놀랍게도 그들은 정신분석 치료를 받으며 매번 부정적인 생각을 하게 되는 원인을 찾아냄으로써 캄캄한 동굴을 스스로 빠져나왔다. 그러므로 사소한 일들을 할 때조차 걱정과 고민이 너무 많다면, 이제는 매번 자신의 발목을 붙잡고 놔주지 않으며, 꼼짝도 못 하게 만드는 것이 무엇인지를 찬찬히 들여다봐야 할 때다. 부정적인 생각을 하게 되는 근본 원인을 찾아 그것을 해결해야만 생각의 함정에 빠지지 않을 수 있고, 좀 더 후회 없는 인생을 만들어 갈 수 있기 때문이다. 

10) 세상이 내 모든 것을 빼앗고, 나에게 최악의 상황을 주었더라도 나에게는 절대 빼앗길 수 없는 한 가지가 있음을 기억해야 한다. 그것은 바로 그 상황을 어떻게 받아들일 것인가에 대한 내 선택권이다. 만약 누군가 나에게 상처가 될 만한 말을 했다고 해 보자. 그러면 당연히 상처받을 수밖에 없다고 말하지만 실은 상처를 받을지 안 받을지를 선택할 수 있다. 상대방에게 받고 싶지 않은 선물을 받았을 때 돌려주면 그만이듯, 내가 그 상처를 받지 않으면 그만이다. 실수를 했을 때도 마찬가지다. 실수 하나에 마치 세상이 무너진 듯 절망하는 사람이 있는가 하면, ‘죄송합니다’라고 인정하고 빨리 수습에 나서는 사람이 있다. 즉 고통스러운 상황을 피할 수는 없지만 그것에 대해 괴로워할지 말지는 나의 선택에 달려 있다.

This post is licensed under CC BY 4.0 by the author.