๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Et-cetera/PromptEngineering

ChatGPT Prompt Engineering for Developers ๊ฐ•์˜๋ฅผ ๋ณด๊ณ ..

by YWTechIT 2023. 10. 4.
728x90

๐Ÿ“ ChatGPT Prompt Engineering for Developers ๊ฐ•์˜๋ฅผ ๋ณด๊ณ ..

์–ธ์  ๊ฐ€ tech-news ์ฑ„๋„์—์„œ prompt engineering์„ ๋‹ค๋ฃฌ ๊ธ€์„ ๋ณธ ์ ์ด ์žˆ์—ˆ๋‹ค. ๊ฑฐ๊ธฐ์„œ ๊ฐœ๋ฐœ์ž๋“ค์ด ChatGPT๋ฅผ ๋” ์ž˜ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ฐ•์˜๋ฅผ ๋ณด๋Š” ๊ฒƒ์ด ๋„์›€๋œ๋‹ค๋Š” ๋‚ด์šฉ์„ ๊นŒ๋งฃ๊ฒŒ ์žŠ๊ณ  ์žˆ๋‹ค๊ฐ€ ์ถ”์„ ์—ฐํœด ๋•Œ ์ƒ๊ฐ๋‚˜์„œ ๋ถ€๋žด๋ถ€๋žด ๊ฐ•์˜๋ฅผ ๋ดค๋‹ค. ์‚ฌ์ดํŠธ๋Š” DeepLearning.AI์ด๊ณ , Andrew Ng, Isa Fulford๋‹˜์ด ์ง„ํ–‰ํ•˜์˜€๋‹ค. ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ ๋…ธ์…˜์— ์ ์—ˆ๋˜ ๋‚ด์šฉ์„ ์กฐ๊ธˆ ์ ์—ˆ๋‹ค.

728x90

Two Types of Large Language Models (LLMs)

LLM์˜ ๊ฐœ๋ฐœ์—๋Š” ๋‘ ๊ฐ€์ง€์˜ ์œ ํ˜•์œผ๋กœ ๋‚˜๋‰˜๋Š”๋ฐ, Base LLM๊ณผ Instruction Tuned LLM์ด๋‹ค.

Base LLM์€ ํ…์ŠคํŠธ training data๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋‹ค์Œ ๋‹จ์–ด๋ฅผ ์˜ˆ์ธกํ•˜๋„๋ก ํ›ˆ๋ จ๋˜์—ˆ๊ณ , ์ธํ„ฐ๋„ท๊ณผ ์—ฌ๋Ÿฌ ์ถœ์ฒ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ ๋งŽ์€ ์–‘์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํ›ˆ๋ จํ•ด ๋‹ค์Œ์— ๋‚˜์˜ฌ ๊ฐ€๋Šฅ์„ฑ ๊ฐ€์žฅ ๋†’์€ ๋‹จ์–ด๊ฐ€ ๋ฌด์—‡์ธ์ง€ ํŒŒ์•…ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์˜›๋‚  ์˜›์ ์ด ์–ด๋Š ๋งˆ์„์—~๊นŒ์ง€ prompt์— ์ž…๋ ฅํ•˜๋ฉด ๋ฌธ๋งฅ์— ์˜ฌ๋ฐ”๋ฅธ ๋‹ต๋ณ€์„ ์˜ˆ์ธกํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ๋ฆฌ์˜ ์ˆ˜๋„๊ฐ€ ์–ด๋”˜๊ฐ€์š”?์™€ ๊ฐ™์€ ์งˆ๋ฌธ์€ ํŒŒ๋ฆฌ์˜ ๊ตญ๊ธฐ๋Š” ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋‚˜์š”? ํŒŒ๋ฆฌ์˜ ์ธ๊ตฌ๋Š” ์–ผ๋งˆ์ธ๊ฐ€์š”?์™€ ๊ฐ™์€ ์‹ ๋ฌธ ๊ธฐ์‚ฌ์—์„œ ๋ณผ ๋ฒ•ํ•œ ๋‹ต๋ณ€๋“ค์ด ๋‚˜์˜ฌ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค. (์ธํ„ฐ๋„ท์˜ ๊ธฐ์‚ฌ๋Š” ํ”„๋ž‘์Šค์— ๋Œ€ํ•œ ํ€ด์ฆˆ ์งˆ๋ฌธ์˜ ์ง‘ํ•ฉ์ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—..)

 

Instruction Tuned LLM์€ ๋งŽ์€ LLM ์—ฐ๊ตฌ์™€ ์‹คํ—˜์ด ์ง„ํ–‰๋œ ์ง€์‹œ์‚ฌํ•ญ์— ๋งž์ถฐ ํ›ˆ๋ จ๋œ LLM์ธ instruction-tuned LLM์€ ์ง€์‹œ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋„๋ก ํ›ˆ๋ จ๋˜์—ˆ๋‹ค. ๋Œ€๋Ÿ‰์˜ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋กœ ํ›ˆ๋ จ๋œ ๊ธฐ๋ณธ LLM์—์„œ ์‹œ์ž‘ํ•˜์—ฌ, ์ง€์‹œ์‚ฌํ•ญ์˜ ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ๊ฐ’์„ ํ™œ์šฉํ•ด ๋”์šฑ fine-tunning ํ•˜๊ณ , ๊ทธ ํ›„์—๋Š” ์ข…์ข… RLHF๋ผ๋Š” ๊ธฐ๋ฒ•์„ ํ†ตํ•ด ๋”์šฑ ์„ธ๋ฐ€ํ•˜๊ฒŒ fine-tunning ํ•˜๋ฉฐ, ์‹œ์Šคํ…œ์— ๋„์›€์ด ๋˜๊ณ  ์ง€์‹œ์‚ฌํ•ญ์„ ๋”ฐ๋ฅด๋Š” ๋Šฅ๋ ฅ์„ ํ–ฅ์ƒํ•œ๋‹ค.

 

๋”ฐ๋ผ์„œ ๋„์›€์ด ๋˜๊ณ , ์ •์งํ•˜๋ฉฐ, ํ˜์˜ค ๋ฐœ์–ธ์ด ์—†๋Š” ํ…์ŠคํŠธ์—์„œ ํ›ˆ๋ จ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋ณธ LLM์— ๋น„ํ•ด ํŽธ๊ฒฌ์ด๋‚˜ ํ˜์˜ค ๋ฐœ์–ธ ๋“ฑ์˜ ๋ฌธ์ œ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ™•๋ฅ ์ด ๋‚ฎ๋‹ค. ๋”ฐ๋ผ์„œ ํ˜„์—…์—์„œ๋Š” instruction-tuned LLM๋ฅผ ์“ฐ๋Š” ์ถ”์„ธ์ด๋‹ค. ์ธํ„ฐ๋„ท์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ผ๋ถ€ ์ตœ์„ ์˜ ๋ฐฉ๋ฒ•๋“ค์€ ๊ธฐ๋ณธ LLM์— ๋” ์ ํ•ฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์˜ค๋Š˜๋‚  ์‹ค์šฉ์ ์ธ ๋ถ€๋ถ„์—์„œ instruction-tuned LLM์„ ๋” ๊ถŒ์žฅํ•˜๋Š”๋ฐ, ์ด๋Š” ์‚ฌ์šฉํ•˜๊ธฐ ์‰ฝ๊ณ  openAI์™€ ๋‹ค๋ฅธ LLM ํšŒ์‚ฌ๋“ค์˜ ๋ชจ๋ธ์ด ์•ˆ์ „ํ•˜๊ณ  ์ •๊ตํ•ด์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

Guidelines

ChatGPT๊ฐ€ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์›ํ•˜๋Š” ๋Œ€๋‹ต์„ ์–ป๊ธฐ ์œ„ํ•ด ๊ฐ•์กฐํ•˜๋Š” 2๊ฐ€์ง€ ์›์น™์ด ์žˆ๋‹ค. ์ฒซ ๋ฒˆ์งธ๋Š” ๋ช…ํ™•ํ•˜๊ณ  ๊ตฌ์ฒด์ ์ธ ์ง€์‹œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด๊ณ , ๋‘ ๋ฒˆ์งธ๋Š” ๋ชจ๋ธ์—๊ฒŒ ์ƒ๊ฐํ•  ์‹œ๊ฐ„์„ ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค.

 

Principle 1. Write clear and specific instructions

  1. Use delimeters: ๊ตฌ๋ถ„์ž(delimeter)๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž…๋ ฅ์˜ ๊ตฌ๋ถ„๋œ ๋ถ€๋ถ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œํ•˜์—ฌ prompt injection์„ ํ”ผํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. Ask for structured output: ๋ชจ๋ธ ์ถœ๋ ฅ์˜ ๊ตฌ๋ฌธ ๋ถ„์„์„ ๋” ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด, HTML์ด๋‚˜ JSON๊ณผ ๊ฐ™์€ ๊ตฌ์กฐํ™”๋œ ์ถœ๋ ฅ์„ ์š”์ฒญํ•œ๋‹ค.
  3. Check whether conditions are satisfied: ์ž‘์—…์ด ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜์ง€ ์•Š๋Š” ๊ฐ€์ •์„ ํ•œ๋‹ค๋ฉด, ๋ชจ๋ธ์—๊ฒŒ ์ด๋Ÿฌํ•œ ๊ฐ€์ •์„ ํ™•์ธํ•˜๋„๋ก ์ง€์‹œํ•œ๋‹ค.
  4. Few-shot prompting: ์›ํ•˜๋Š” ์ž‘์—…์˜ ์„ฑ๊ณต์ ์ธ ์‹คํ–‰ ์˜ˆ์‹œ๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ. ๋ชจ๋ธ์—๊ฒŒ ์‹ค์ œ๋กœ ์›ํ•˜๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก ์š”์ฒญํ•˜๊ธฐ ์ „์— ์ด๋ฃจ์–ด์ง„๋‹ค.

Principle 2. Give the model time to think: ๋ชจ๋ธ์ด ๊ฒฐ๋ก ์„ ์„œ๋‘๋ฅด๋‹ค๊ฐ€ ์ž˜๋ชป๋œ ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๋Š” ์ถ”๋ก  ์˜ค๋ฅ˜๋ฅผ ๋ฒ”ํ•œ๋‹ค๋ฉด, ๋ชจ๋ธ์ด ์ตœ์ข… ๋‹ต๋ณ€์„ ์ œ๊ณตํ•˜๊ธฐ ์ „์—, ์งˆ์˜๋ฅผ ์žฌ๊ตฌ์„ฑํ•˜์—ฌ ์—ฐ๊ด€๋œ ์ถ”๋ก ์˜ chain์ด๋‚˜ series๋ฅผ ์š”์ฒญํ•ด์•ผ ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•ด, ๋ชจ๋ธ์—๊ฒŒ ์งง์€ ์‹œ๊ฐ„์ด๋‚˜ ์ ์€ ๋‹จ์–ด๋กœ ๋„ˆ๋ฌด ๋ณต์žกํ•œ ์ž‘์—…์„ ์ฃผ๋ฉด, ๋ชจ๋ธ์€ ์ž˜๋ชป๋  ์ถ”์ธก์„ ํ•˜๊ฒŒ ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’๋‹ค.

  1. Specify the steps to complete a task
  2. Instruct the model to work out its own solution before rushing to a conclusion

Iterative

  1. ๊ฐ€๋” ์‚ฌ์šฉ์ž๊ฐ€ ์ตœ๋Œ€ n์ž ์ด๋‚ด๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋ผ๋Š” prompt๋ฅผ ๋ณด๋Š”๋ฐ ์ด๋Š” ์ถ”์ฒœํ•˜์ง€ ์•Š๋Š”๋‹ค. LLM์€ ํ…์ŠคํŠธ๋ฅผ ํ•ด์„ํ•˜๋Š” ๋ฐฉ์‹์„ ํ† ํฌ๋‚˜์ด์ €(tokenizer)๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ† ํฌ๋‚˜์ด์ €๋Š” ๋ฌธ์ž๋ฅผ ์„ธ๋Š” ๋ฐ ๊ทธ๋‹ค์ง€ ๋Šฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๋ณดํ†ต์˜ LLM์€ ๋น„์Šทํ•˜๊ฒŒ ๋งž์ถ”์ง€ ๋ชปํ•œ๋‹ค.(๊ฐ•์˜์—์„œ ChatGPT๋Š” n์ž๋ฅผ ๊ฑฐ์˜ ๋งž์ถฐ์„œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ–ˆ๋‹ค.)
  2. ํ•œ ๋ฒˆ์˜ ํ”„๋กฌํ”„ํŠธ๋กœ ์™„๋ฒฝํ•œ ๋‹ต๋ณ€์„ ์–ป์œผ๋ ค ํ•˜์ง€ ๋ง๊ณ , ๋ฐ˜๋ณต์ ์œผ๋กœ ์ง€์‹œ์‚ฌํ•ญ์„ ์–ด๋–ป๊ฒŒ ๋ช…ํ™•ํ•˜๊ฒŒ ํ• ์ง€ ์ƒ๊ฐํ•˜๋Š” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•œ๋‹ค. ์œ ๋Šฅํ•œ ํ”„๋กฌํ”„ํŠธ ์—”์ง€๋‹ˆ์–ด์˜ ํ•ต์‹ฌ์€ ์™„๋ฒฝํ•œ ํ”„๋กฌํ”„ํŠธ๋ฅผ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ๋ถ„์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํšจ๊ณผ์ ์ธ ํ”„๋กฌํ”„ํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ์ข‹์€ ๊ณผ์ •์„ ์•Œ๊ณ  ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ์ƒ๊ฐํ•œ๋‹ค.

์ด์™ธ์—๋„ Model Limitations, Inferring, Transforming, Expanding ๋“ฑ์— ๊ด€ํ•œ ์„ค๋ช…์„ ๋“ค์—ˆ๋‹ค. ๋ฌผ๋ก  ๊ฐ•์˜์—์„œ ์„ค๋ช…ํ•ด์ฃผ๋Š” ๋‚ด์šฉ์ด ๊ฐœ๋ฐœ์„ ํ•˜๋Š”๋ฐ ์ „๋ถ€ ์‚ฌ์šฉ๋˜์ง„ ์•Š๋Š”๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€๋ ค์šด ๊ณณ์„ ๊ธ์–ด์ฃผ๋Š” ๋‚ด์šฉ๋„ ์žˆ์—ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ChatGPT์—๊ฒŒ ๊ถ๊ธˆํ•œ ์ ์„ ๋ฌผ์–ด๋ณด๋ฉด ๊ทธ๋Ÿด๋“ฏํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ ์‚ฌ์‹ค์ด ์•„๋‹Œ ๊ฒƒ์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ํ™˜์˜(Hallucination)์œผ๋กœ ๋‹ต๋ณ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์ข…์ข… ์žˆ๋‹ค.

 

๊ฐ•์˜์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ ๊ด€๋ จ๋œ ์ธ์šฉ๊ตฌ๋ฅผ ์ฐพ๊ฒŒ ํ•˜์—ฌ ์งˆ๋ฌธ์— ๋‹ตํ•˜๋„๋ก ์š”์ฒญํ•˜๊ณ , ๊ทธ ๋‹ต๋ณ€์„ ์›๋ฌธ์—์„œ ์ถ”์ ํ•˜๋Š” ๊ฒƒ์ด ๋Œ€๋ถ€๋ถ„ ๊ฒฝ์šฐ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค๊ณ  ๋ง์”€ํ•˜์…จ๋‹ค. ์ธ์šฉ๊ตฌ๋ผ๋ฉด ๊ณต์‹๋ฌธ์„œ, issues ๋“ฑ์—์„œ ์ฐพ์•„์„œ ๋‹ต๋ณ€ํ•˜๋„๋ก ์œ ๋„ํ•˜๋ผ๋Š” ์–˜๊ธฐ์ธ๊ฐ€ ์‹ถ์—ˆ๊ณ , ํ•œํŽธ์œผ๋กœ๋Š” ํ•˜๋‚˜ํ•˜๋‚˜์”ฉ ChatGPT์—๊ฒŒ ๋งฅ๋ฝ์„ ์„ค๋ช…ํ•˜์—ฌ ์œ ๋„ํ•˜๊ธฐ๋ณด๋‹จ ์ฐจ๋ผ๋ฆฌ ๋‚ด๊ฐ€ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฝ๋Š” ๊ฒŒ ๋” ๋น ๋ฅผ ์ˆ˜๋„ ์žˆ์ง€์•Š์„๊นŒ?๋ž€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. (๊ณต์‹๋ฌธ์„œ ์ตœ๊ณ ..)

 

์—ฌํŠผ 2์‹œ๊ฐ„ ๋‚จ์ง“ํ•œ ๊ฐ•์˜๋ฅผ ๋“ค์œผ๋ฉฐ LLM์˜ ์œ ํ˜•๊ณผ prompt engineering์˜ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ•์„ ๋ฐฐ์› ๋‹ค. ChatGPT๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋‚˜ prompt engineer๋ฅผ ๋ฐฐ์šฐ๊ณ  ์‹ถ์€ ์ž…๋ฌธ์ž์—๊ฒŒ๋Š” ์ถ”์ฒœํ• ๋งŒํ•œ ๊ฐ•์˜์˜€๋‹ค.

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€