๐ ChatGPT Prompt Engineering for Developers ๊ฐ์๋ฅผ ๋ณด๊ณ ..
์ธ์ ๊ฐ tech-news ์ฑ๋์์ prompt engineering์ ๋ค๋ฃฌ ๊ธ์ ๋ณธ ์ ์ด ์์๋ค. ๊ฑฐ๊ธฐ์ ๊ฐ๋ฐ์๋ค์ด ChatGPT๋ฅผ ๋ ์ ํ์ฉํ๊ธฐ ์ํด ์ด ๊ฐ์๋ฅผ ๋ณด๋ ๊ฒ์ด ๋์๋๋ค๋ ๋ด์ฉ์ ๊น๋งฃ๊ฒ ์๊ณ ์๋ค๊ฐ ์ถ์ ์ฐํด ๋ ์๊ฐ๋์ ๋ถ๋ด๋ถ๋ด ๊ฐ์๋ฅผ ๋ดค๋ค. ์ฌ์ดํธ๋ DeepLearning.AI์ด๊ณ , Andrew Ng, Isa Fulford๋์ด ์งํํ์๋ค. ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ ๋ ธ์ ์ ์ ์๋ ๋ด์ฉ์ ์กฐ๊ธ ์ ์๋ค.
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
- Use delimeters: ๊ตฌ๋ถ์(delimeter)๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฅ์ ๊ตฌ๋ถ๋ ๋ถ๋ถ์ ๋ช ํํ๊ฒ ํ์ํ์ฌ prompt injection์ ํผํ ์ ์๋ค.
- Ask for structured output: ๋ชจ๋ธ ์ถ๋ ฅ์ ๊ตฌ๋ฌธ ๋ถ์์ ๋ ์ฝ๊ฒ ํ๊ธฐ ์ํด, HTML์ด๋ JSON๊ณผ ๊ฐ์ ๊ตฌ์กฐํ๋ ์ถ๋ ฅ์ ์์ฒญํ๋ค.
- Check whether conditions are satisfied: ์์ ์ด ์กฐ๊ฑด์ ๋ถํฉํ์ง ์๋ ๊ฐ์ ์ ํ๋ค๋ฉด, ๋ชจ๋ธ์๊ฒ ์ด๋ฌํ ๊ฐ์ ์ ํ์ธํ๋๋ก ์ง์ํ๋ค.
- Few-shot prompting: ์ํ๋ ์์ ์ ์ฑ๊ณต์ ์ธ ์คํ ์์๋ฅผ ์ ๊ณตํ๋ ๊ฒ. ๋ชจ๋ธ์๊ฒ ์ค์ ๋ก ์ํ๋ ์์ ์ ์ํํ๋๋ก ์์ฒญํ๊ธฐ ์ ์ ์ด๋ฃจ์ด์ง๋ค.
Principle 2. Give the model time to think: ๋ชจ๋ธ์ด ๊ฒฐ๋ก ์ ์๋๋ฅด๋ค๊ฐ ์๋ชป๋ ๊ฒฐ๋ก ์ ๋ด๋ฆฌ๋ ์ถ๋ก ์ค๋ฅ๋ฅผ ๋ฒํ๋ค๋ฉด, ๋ชจ๋ธ์ด ์ต์ข ๋ต๋ณ์ ์ ๊ณตํ๊ธฐ ์ ์, ์ง์๋ฅผ ์ฌ๊ตฌ์ฑํ์ฌ ์ฐ๊ด๋ ์ถ๋ก ์ chain์ด๋ series๋ฅผ ์์ฒญํด์ผ ํ๋ค. ๋ค์ ๋งํด, ๋ชจ๋ธ์๊ฒ ์งง์ ์๊ฐ์ด๋ ์ ์ ๋จ์ด๋ก ๋๋ฌด ๋ณต์กํ ์์ ์ ์ฃผ๋ฉด, ๋ชจ๋ธ์ ์๋ชป๋ ์ถ์ธก์ ํ๊ฒ ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
- Specify the steps to complete a task
- Instruct the model to work out its own solution before rushing to a conclusion
Iterative
- ๊ฐ๋ ์ฌ์ฉ์๊ฐ ์ต๋ n์ ์ด๋ด๋ก ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ผ๋ prompt๋ฅผ ๋ณด๋๋ฐ ์ด๋ ์ถ์ฒํ์ง ์๋๋ค. LLM์ ํ ์คํธ๋ฅผ ํด์ํ๋ ๋ฐฉ์์ ํ ํฌ๋์ด์ (tokenizer)๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ด๋ค. ํ ํฌ๋์ด์ ๋ ๋ฌธ์๋ฅผ ์ธ๋ ๋ฐ ๊ทธ๋ค์ง ๋ฅํ์ง ์๊ธฐ ๋๋ฌธ์ ๋ณดํต์ LLM์ ๋น์ทํ๊ฒ ๋ง์ถ์ง ๋ชปํ๋ค.(๊ฐ์์์ ChatGPT๋ n์๋ฅผ ๊ฑฐ์ ๋ง์ถฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.)
- ํ ๋ฒ์ ํ๋กฌํํธ๋ก ์๋ฒฝํ ๋ต๋ณ์ ์ป์ผ๋ ค ํ์ง ๋ง๊ณ , ๋ฐ๋ณต์ ์ผ๋ก ์ง์์ฌํญ์ ์ด๋ป๊ฒ ๋ช ํํ๊ฒ ํ ์ง ์๊ฐํ๋ ๊ณผ์ ์ ๊ฑฐ์ณ์ผ ํ๋ค. ์ ๋ฅํ ํ๋กฌํํธ ์์ง๋์ด์ ํต์ฌ์ ์๋ฒฝํ ํ๋กฌํํธ๋ฅผ ์๊ณ ์๋ ๊ฒ์ด ์๋๋ผ, ์ฌ๋ฌ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํจ๊ณผ์ ์ธ ํ๋กฌํํธ๋ฅผ ๊ฐ๋ฐํ๋ ์ข์ ๊ณผ์ ์ ์๊ณ ์๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ค.
์ด์ธ์๋ Model Limitations, Inferring, Transforming, Expanding ๋ฑ์ ๊ดํ ์ค๋ช ์ ๋ค์๋ค. ๋ฌผ๋ก ๊ฐ์์์ ์ค๋ช ํด์ฃผ๋ ๋ด์ฉ์ด ๊ฐ๋ฐ์ ํ๋๋ฐ ์ ๋ถ ์ฌ์ฉ๋์ง ์๋๋ค. ํ์ง๋ง ๊ฐ๋ ค์ด ๊ณณ์ ๊ธ์ด์ฃผ๋ ๋ด์ฉ๋ ์์๋ค. ์๋ฅผ ๋ค๋ฉด, ChatGPT์๊ฒ ๊ถ๊ธํ ์ ์ ๋ฌผ์ด๋ณด๋ฉด ๊ทธ๋ด๋ฏํ์ง๋ง ์ค์ ๋ก ์ฌ์ค์ด ์๋ ๊ฒ์ ๋ง๋ค์ด๋ด๋ ํ์(Hallucination)์ผ๋ก ๋ต๋ณํ๋ ๊ฒฝ์ฐ๊ฐ ์ข ์ข ์๋ค.
๊ฐ์์์๋ ์ด๋ฐ ๊ฒฝ์ฐ ๊ด๋ จ๋ ์ธ์ฉ๊ตฌ๋ฅผ ์ฐพ๊ฒ ํ์ฌ ์ง๋ฌธ์ ๋ตํ๋๋ก ์์ฒญํ๊ณ , ๊ทธ ๋ต๋ณ์ ์๋ฌธ์์ ์ถ์ ํ๋ ๊ฒ์ด ๋๋ถ๋ถ ๊ฒฝ์ฐ ๋งค์ฐ ์ ์ฉํ๋ค๊ณ ๋ง์ํ์
จ๋ค. ์ธ์ฉ๊ตฌ๋ผ๋ฉด ๊ณต์๋ฌธ์, issues ๋ฑ์์ ์ฐพ์์ ๋ต๋ณํ๋๋ก ์ ๋ํ๋ผ๋ ์๊ธฐ์ธ๊ฐ ์ถ์๊ณ , ํํธ์ผ๋ก๋ ํ๋ํ๋์ฉ ChatGPT์๊ฒ ๋งฅ๋ฝ์ ์ค๋ช
ํ์ฌ ์ ๋ํ๊ธฐ๋ณด๋จ ์ฐจ๋ผ๋ฆฌ ๋ด๊ฐ ๊ณต์๋ฌธ์๋ฅผ ์ฝ๋ ๊ฒ ๋ ๋น ๋ฅผ ์๋ ์์ง์์๊น?๋ ์๊ฐ์ด ๋ค์๋ค. (๊ณต์๋ฌธ์ ์ต๊ณ ..)
์ฌํผ 2์๊ฐ ๋จ์งํ ๊ฐ์๋ฅผ ๋ค์ผ๋ฉฐ LLM์ ์ ํ๊ณผ prompt engineering์ ๊ธฐ๋ณธ์ ์ธ ๋ฐฉ๋ฒ์ ๋ฐฐ์ ๋ค. ChatGPT๋ฅผ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์๋ prompt engineer๋ฅผ ๋ฐฐ์ฐ๊ณ ์ถ์ ์ ๋ฌธ์์๊ฒ๋ ์ถ์ฒํ ๋งํ ๊ฐ์์๋ค.
๋๊ธ