-
Notifications
You must be signed in to change notification settings - Fork 1
/
prompt_in_practice.qmd
199 lines (137 loc) · 12.6 KB
/
prompt_in_practice.qmd
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
---
title: "chatGPT"
subtitle: "프롬프트 실무"
description: |
챗GPT의 텍스트 생성에 환각/환영(hallucination) 발생에 유의하여 일상생활 활용에 대해서 법률, 건강, 투자, 학업 등 챗GPT를 효과적으로 사용할 수 있는 방안을 살펴보자.
author:
- name: 이광춘
url: https://www.linkedin.com/in/kwangchunlee/
affiliation: 한국 R 사용자회
affiliation-url: https://github.com/bit2r
title-block-banner: true
#title-block-banner: "#562457"
format:
html:
css: css/quarto.css
theme: flatly
code-fold: true
toc: true
toc-depth: 3
toc-title: 목차
number-sections: true
highlight-style: github
self-contained: false
filters:
- lightbox
lightbox: auto
link-citations: true
knitr:
opts_chunk:
message: false
warning: false
collapse: true
comment: "#>"
R.options:
knitr.graphics.auto_pdf: true
editor_options:
chunk_output_type: console
editor:
markdown:
wrap: 72
---
:::{.callout-note collapse="false"}
[서울 디지털재단](https://sdf.seoul.kr/)에서 챗GPT 활용 사례집을 업무활용과
일상생활/창작활동/교육분야 로 나눠 두번에 걸쳐 보고서를 발간했다. [@sdf2023] [@sdf2023v2] 최근에는 교육분야 전반에 챗GPT 활용 책도 출간되었다. [@stan2023]
:::
# 전체적인 현황
서울 디지털재단에서 업무활용과 일상생활 활용에 챗GPT 다양한 사례를 보고서로 공개하여
챗GPT 초기 갖고 있었던 우려를 불식시키며 일상생활에 녹아들고 있다.
생산성 향상을 위해서 사무업무에 보고서 작서, 사업기획 아이디어 도출, 보도자료 및 엑셀과 데이터 과학, 프로그래밍 자동화 분야에 챗GPT 활용이 소개되고 있다.
챗GPT의 텍스트 생성에 **환각/환영(hallucination)** 이 발생할 수 있음에 유의하여 일상생활 활용에 대해서 법률, 건강, 투자, 학업 등 사례를 제시하고 있다.
특히 챗GPT를 교육에 활용할 수 있는 80가지 방식을 제시한 사례는 음미할 필요가 있다.[@stan2023]
```{r}
library(tidyverse)
library(collapsibleTree)
library(readxl)
practice_raw <- read_excel("data/chatGPT_applictions.xlsx")
practice <- practice_raw %>%
fill(대구분, .direction = "down") %>%
fill(중구분, .direction = "down") %>%
mutate(소구분 = str_remove(소구분, "^[0-9]{1,2}\\.+ ")) %>%
mutate(중구분 = str_remove(중구분, "[0-9]{1,2}$"))
collapsibleTree(practice, c("대구분", "중구분", "소구분"),
tooltipHtml = "tooltip",
root = "챗GPT 활용")
```
# 챗GPT 환영/환각 방지
생성 AI의 문제점 중 가장 우려되는 것이 **환각/환영(hallucination)**이다. 이를 줄이기 위해서 다음 사항을 고려하면 많은 부분 문제를 해결할 수 있다.
[출처: [How to Prevent AI Model Hallucinations](https://chatbotkit.com/tutorials/how-to-prevent-ai-model-hallucinations)]{.aside}
- 잘 작성된 프롬프트: 역할을 부여, 목표설정, 구체적이고, 예제를 제시하고 단계적 수행 등 목표달성을 위해 프롬프트를 프로그램 작성에 준하는 노력을 하여 작성한다. 결국 잘 작성된 프롬프트는 결과물에 큰 영향을 미친다.
- AI 모델 선정: GPT-4와 text-dainci-003은 gpt-3.5-turbo와 비교하여 환각이 덜 발생하는 것으로 알려졌다. 따라서, 다소 비싸지만 고성능 AI 모델을 사용할 경우 그렇지 않은 경우와 비교하여 환각을 대폭 줄일 수 있다.
- 모형 패러미터 지정: `temperature` 모수 값을 높이면 모델이 더 많은 위험을 감수하고 더 다양한 결과물을 생성하도록 장려하는 반면 모수 값을 낮추면 정반대로 동작한다. 도한, `presence` 페널티를 높이면 모델이 덜 반복적이고 일관성 있고 완전한 결과물을 생성하도록 장려되고 낮추면 반대방향으로 동작한다.
| 모델 | 설명 |
| ---------------- | ------------------------------------------------------------ |
| gpt4 | 매우 정확하지만 느리고 비싸다 |
| gpt-3.5-turbo | 매우 빠르지만 종종 환각이 발생하기 쉬움 |
| text-davinci-003 | gpt4 및 gpt-3.5만큼 성능이 뛰어나지는 않지만 속도와 정확성 사이의 균형이 잘 잡혀 있습니다. |
# 챗GPT 패러미터
챗GPT API에 다양한 패러미터를 지정하여 텍스트 작업결과 품질을 원하는 방향으로 조절할 수 있다. 대표적인 패러미터로 다음을 들 수 있다.
- 토큰 크기(`max_tokens`): 영문 기준 100개 토큰은 대략 75개 단어(word)로 간주할 수 있는데 토큰 크기를 지정해서 출력되는 텍스트 길이를 조절한다. `text-davinci-003` 기준으로 토큰최대길이는 1 ~ 4,000을 갖는다.
- 온도(`temperature`): 온도를 조정하여 텍스트 생성에 더욱 창의성을 발휘할 수 있지만 창의적인 텍스트는 환각/환영도 만들어낼 가능성이 높아진다. `text-davinci-003` 기준으로 온도는 0 ~ 1 사이 값을 갖는다.
- 최상위 확률(`top_p`): `top_p=0.1`을 지정하면 상위 10%를 구성하는 가장 높은 확률값을 갖는 토큰을 고려하여 텍스트가 생성된다. 텍스트 생성 과정에서 생성된 토큰의 확률 분포에서 최상위 p%만 고려하도록 합니다. 예를 들어, top_p=0.9이면, 다음 토큰을 선택할 때, 모델이 예측한 확률 분포에서 상위 90%만 고려하고, 나머지 10%는 무시하게 된다.
- 존재 벌칙(`presence_penalty`): 텍스트 생성 시 중복을 제거하거나, 이전에 생성한 내용과 비슷한 내용이 반복되는 것을 방지하는 데 사용되는데, `presence_penalty`가 높을수록, 모델은 이전에 생성한 토큰을 가능한 한 피하게 된다. `presence_penalty`는 0.6 ~ 0.9 사이의 값을 둔다. `text-davinci-003` 기준으로 온도는 0 ~ 2 사이 값을 갖는다.
- 빈도 벌칙(`frequency_panalty`): 모델이 특정 토큰을 생성할 때, 해당 토큰이 이전에 생성된 횟수에 따라 더 작은 확률로 선택되도록 한다. 이를 통해 모델은 특정 토큰을 일정한 빈도로 생성하려는 경향을 줄일 수 있다. 0은 이전 토큰의 빈도수에 대한 제약을 적용하지 않는 것을 의미하며, 값이 클수록 모델이 이전에 생성된 토큰과 다른 새로운 토큰을 선택하도록 유도한다. 일반적으로, Frequency_penalty는 0.6 ~ 1.2 사이의 값으로 설정됩니다. `text-davinci-003` 기준으로 온도는 0 ~ 2 사이 값을 갖는다.
- 몇개중 최고 선정(`best_of`): 생성된 여러 후보 텍스트 중에서 최상의 텍스트를 선택하는 데 사용한다. 즉, 모델은 지정된 후보 텍스트 수 중에서 가장 높은 점수를 받은 텍스트를 선택한다. 예를 들어, best_of가 3으로 설정된 경우, 모델은 생성된 3개의 후보 텍스트 중에서 최상의 텍스트를 선택한다. `text-davinci-003` 기준으로 온도는 1 ~ 20 사이 값을 갖는다.
- 시작 텍스트 주입(`Inject start text`): 모델이 특정 텍스트로부터 시작하도록 지정하는 데 사용된다. 예를 들어, "Inject start text" 매개 변수를 사용하여 "나는"으로 시작하는 텍스트를 생성하도록 지정할 수 있다. 이 경우 모델은 "나는"으로 시작하는 텍스트를 생성하기 위해 해당 단어를 사용하여 생성을 시작해서 "나는 대학에서 경영학을 전공했고, 지금은 기업의 경영 전략을 담당하는 직원입니다."라는 텍스트가 생성된다.
- 텍스트 재시작 주입(`Inject restart text`): 모델이 생성된 텍스트의 일부를 재사용하여 새로운 텍스트를 생성하도록 지시하는 데 사용된다. 예를 들어, "벚꽃이 피는 계절에"라는 문장이 이미 생성되어 있다면, Inject restart text를 사용하여 "나는"이라는 문장을 생성하면, 모델은 "나는 벚꽃이 피는 계절에"라는 새로운 문장을 생성할 수 있다.
- 어조(`tone`) : neutral (중립적인), positive (긍정적인), negative (부정적인), formal (격식 있는), informal (비격식적인), professional (전문적인), casual (친근한), witty (똑똑한), serious (진지한), playful (장난스러운), sad (슬픈), happy (행복한), angry (화난), calm (차분한), romantic (로맨틱한), mysterious (신비로운), surprised (놀란)
- 저작 스타일(`writing_style`): `normal` (일반적인), `academic` (학술적인), `creative` (창조적인), `formal` (격식 있는), `informal` (비격식적인), `professional` (전문적인), `casual` (친근한), `technical` (기술적인)
# 사례
[광명시 생활안정지원금 신청](https://tdis.konacard.co.kr/41210/1)
:::{.panel-tabset}
## 웹공고 {.unnumbered}
![](images/kwangmyung_application.jpg)
## 공고문 내용 {.unnumbered}
지급금액 : 세대 당 10만원
2023. 3. 6.일 24시 기준 광명시에 주민등록을 둔 세대주
기간
온라인 : 2023. 03. 20(월) 09:00 ~ 4. 28(금)
오프라인 : 2023. 03. 27(월) ~ 5. 4(목) 18:00 (토요일, 공휴일 제외)
문의처
광명사랑화폐 콜센터(1899-7997)
광명시 민원콜센터(1688-3399)
※ 온라인 신청 시 동명이인이 다수 존재하는 경우
[오프라인 신청 대상]으로 표시
→ 온라인 진행이 불가하며
오프라인 신청기간에 주소지 동 방문 신청 필요
※ 광명사랑화폐 온라인 발급 방법
구글플레이 앱 스토어에서 '경기지역화폐'앱 다운로드 받고
광명사랑화폐 신청,
광명사랑화폐가 배송되면 앱에 등록하고 사용
온라인 카드 신청방법 : ‘경기지역화폐’앱 설치 → 카드 신청 → 카드 발급 및 배송(약 1주일) → (수령 후)카드 등록(‘경기지역화폐’앱) → 사용
## 프롬프트1
> 다음 사업공고를 홍보할 수 있도록 보도자료를 작성해주세요. writing_style : journalistic, temperature:0.0
<공고문 내용>
```
광명시가 생활안정지원금 신청을 받습니다. 세대 당 10만원의 지원금이 지급됩니다. 광명시에 주민등록을 둔 세대주라면 신청이 가능합니다.
온라인 신청은 2023년 3월 20일(월) 09:00부터 4월 28일(금)까지 가능합니다. 오프라인 신청은 2023년 3월 27일(월)부터 5월 4일(목)까지 가능하며, 토요일과 공휴일은 제외됩니다.
온라인 신청 시, 동명이인이 다수 존재하는 경우에는 오프라인 신청 대상으로 표시되며, 온라인 진행이 불가하므로 오프라인 신청기간에 주소지 동을 방문하여 신청해야 합니다.
광명사랑화폐 콜센터(1899-7997) 또는 광명시 민원콜센터(1688-3399)로 문의하실 수 있습니다.
또한, 광명사랑화폐 온라인 발급 방법은 구글플레이 앱 스토어에서 '경기지역화폐'앱을 다운로드 받은 후, 광명사랑화폐를 신청하고, 배송된 광명사랑화폐를 앱에 등록하여 사용할 수 있습니다.
온라인 카드 신청방법은 '경기지역화폐'앱을 설치한 후, 카드를 신청하고, 약 1주일 내에 카드가 발급되며, 수령 후에는 카드를 앱에 등록하여 사용할 수 있습니다.
광명시에 거주하는 세대주라면 꼭 지원금 신청을 하시기 바랍니다.
```
## 프롬프트2
> 다음 사업공고를 홍보할 수 있도록 한글로 보도자료를 작성해주세요. writing_style : journalistic, temperature:1.0 tone: witty
<공고문 내용>
```
광명시민 여러분, 세금으로 납부하신 돈이 이제 생활안정지원금으로 돌아옵니다!
지금부터 4월 말까지, 광명시에 주민등록을 둔 세대주님들은 10만원의 지원금을 받을 자격이 있습니다.
어떻게 신청하냐고요?
온라인으로 신청하실 분들은 3월 20일부터 4월 28일까지, 오프라인으로 신청하실 분들은 3월 27일부터 5월 4일까지 신청 기간이 주어집니다.
아, 그리고 주의하셔야 할 점! 온라인 신청 시 동명이인이 다수 존재한다면, 오프라인 신청을 해야합니다. 집에서 뻥튀기한 성의는 알겠는데, 동명이인은 답이 없어요.
궁금한 점이 있다면 광명사랑화폐 콜센터(1899-7997) 혹은 광명시 민원콜센터(1688-3399)로 연락주세요.
그리고 광명사랑화폐 온라인 발급 방법도 알려드릴게요. 구글플레이 앱 스토어에서 '경기지역화폐'앱을 다운로드 하신 후, 광명사랑화폐를 신청하시면 배송되면 앱에 등록하시고 사용하시면 됩니다.
간단하죠? 이번 생활안정지원금으로 조금이라도 여유를 만들어 보세요!
```
:::