Nudge
지금까지 제품이나 서비스는 사용자가 사용법을 어느정도 익힌 후 자신에게 맞게 사용했습니다.
자동차, TV, 냉장고 등이 그 예시입니다.
대체적으로 제품이나 서비스가 제공하는 기능의 범위 안에서 사용자가 사용했습니다.
사용자에게 제공되는 선택지가 넓어질수록 사용하기 더 어려워지는 것 같습니다.
예시로 스마트폰과 키오스크 등이 있습니다.
키오스크만 하더라도 포인트 적립, 결제 수단, 할인 쿠폰, 포장 여부 등등 선택해야 할 조건들이 많습니다.
스마트폰은 말할 것도 없죠.
ChatGPT를 비롯한 Bard, Bing의 LLM모델은 더 선택지가 넓어졌습니다.
ChatGPT는 구글의 첫 페이 지와 마찬가지로 검색창만 있습니다.
지금까지의 것들과 비교했을 때 제공되는 선택지가 정말 넓어졌습니다.
이때 사용자가 프롬프트를 입력하는데 (ChatGPT를 사용하는데) 발생하는 가장 큰 문제는
“무엇을 입력해야 하는지 모른다”
입니다.
사용자에게 매우 불친절한 UI라 생각합니다.
그래서 자신에게 맞게 사용하기 위해서 Prompt Engineering을 공부해야 합니다.
OpenAI 공식 Prompt Engineering Guide
공부하기 괜찮은 Prompt Engineering Guide
프롬프트 엔지니어링을 위한 중요 요소
제가 생각하는 중요 요소는
나의 상황과 목적, 의도를 GPT에게 자세히 설명하는 것이라 생각합니다.
왜냐하면 사람들은 대부분 자기 중심적이기 때문입니다.
인지 편향(Cognitive bias)중 하나인 지식의 저주(Curse of knowledge)가 그 예시입니다.
지식의 저주(curse of knowledge)란 어떤 개인이 다른 사람들과 의사소통을 할 때 다른 사람도 이해할 수 있는 배경을 가지고 있다고 자신도 모르게 추측하여 발생하는 인식적 편견이다.
자신의 생각을 이미 GPT도 알고 있다는 가정하에 프롬프트를 작성하면 아쉬운 결과가 나올 수 밖에 없습니다.
그리고
“AI도 별거 없네?”
“ChatGPT는 입만 열면 구라여”
라고 할지도 모릅니다.
그래서 처음 프롬프트 엔지니어링을 접하시는 분들에게 도움이 되고자 GPTs를 활용하여
“프롬프트 생성기”를 만들었습니다.
프롬프트 생성기를 만든 로직
1. Daveshap의 Custom Instruction
# Mission
- Outcome or goal
- Not procedure
# Context
- Background info
- Where in the process are you
- Why does it need to be done
# Rules
- Boundaries and constraints
- Specific subgoals and objectives
# Instructions
- Do X, Y, and Z
# Expected Input
- What to anticipate and why
- Variability
# Output Format
- Formatting, type of output, length
- JSON, XML, lists, etc
# Example Output
- Simple demonstration
이것을 활용하여 프롬프트를 생성하기 위해 무엇을 해야하는지 구체적으로 언급하였습니다.
Mission, Rule, Instruction을 언급하였습니다.
Step-by-step으로 순서대로 하라 하였습니다.
영어의 답변이 더 우수하여 영어로 답변하라 하였습니다.
대화의 내용을 잊지 않게 반복적으로 언급하라 하였습니다.
인간적인 요소를 넣었습니다.
2. Format of the Flipped Interaction Pattern
To use this pattern, your prompt should make the following fundamental contextual statements:
- I would like you to ask me questions to achieve X
- You should ask questions until condition Y is met or to achieve this goal (alternatively, forever)
Examples:
- I would like you to ask me questions to help me create variations of my marketing materials. You should ask questions until you have sufficient information about my current draft messages, audience, and goals. Ask me the first question.
- I would like you to ask me questions to help me diagnose a problem with my Internet. Ask me questions until you have enough information to identify the two most likely causes. Ask me one question at a time. Ask me the first question.
이 방법을 활용하여 USER의 상황, 목적을 구체적으로 수집하도록 하였습니다.
그래서 USER에게 최적의 Prompt를 작성하기 위해 전문가 페르소나를 설정할 것입니다.
3. 전문가 페르소나 설정(Tree-of-Thought 기법)
아래와 같은 ToT방법으로 위의 2번에서 수집한 User의 정보를 토대로 가장 적합한 전문가 페르소나를 생성하였습니다.
1. 전문가 페르소나를 생성합니다. : 전문가 페르소나는 문제를 해결하기 위한 다양한 접근 방식을 나타내는 가상의 인물입니다. 다양한 기술, 경험, 관점을 가진 전문가 페르소나를 생성합니다.
2. 전문가 페르소나의 잠재력을 평가합니다. :각 전문가 페르소나의 장점과 단 점, 적합성, 성공 가능성 등을 평가합니다. 가장 가능성이 높은 두 개의 전문가 페르소나를 선택합니다.
3. 선택한 전문가 페르소나를 구현 방식으로 확장합니다. : 각 전문가 페르소나에 대해 두 개의 구현 방식을 생성합니다. 각 구현 방식은 전문가 페르소나의 접근 방식을 구체화한 것입니다.
4. 각 구현 방식에 대한 사고 과정을 심화합니다. : 각 구현 방식에 대해 다양한 시나리오, 구현 전략, 잠재적 장애물 극복 방법 등을 고려합니다.각 구현 방식의 성공 가능성을 평가합니다.
5. 가장 가능성이 높은 구현 방식을 선택합니다. : 두 개의 구현 방식 중에서 가장 가능성이 높은 구현 방식을 선택합니다.
6. 최종 해결책을 요약합니다. : 선택한 구현 방식을 바탕으로 최종 해결책을 요약합니다.
그리고 이 전문가는 User에게 최적화된 prompt를 생성합니다.
추가적으로 더 나은 프롬프트를 만드는 방법도 언급하였습니다.
Here's how to create a better prompt: {
-Write clear instructions:
These models can’t read your mind. If outputs are too long, ask for brief replies. If outputs are too simple, ask for expert-level writing. If you dislike the format, demonstrate the format you’d like to see. The less the model has to guess at what you want, the more likely you’ll get it.
-Tactics:"
Include details in your query to get more relevant answers.
Ask the model to adopt a persona.
Use delimiters to clearly indicate distinct parts of the input.
Specify the steps required to complete a task.
Provide examples.
Specify the desired length of the output."
-Provide reference text:
Language models can confidently invent fake answers, especially when asked about esoteric topics or for citations and URLs. In the same way that a sheet of notes can help a student do better on a test, providing reference text to these models can help in answering with fewer fabrications.
-Tactics:"
Instruct the model to answer using a reference text.
Instruct the model to answer with citations from a reference text."
-Split complex tasks into simpler subtasks:
Just as it is good practice in software engineering to decompose a complex system into a set of modular components, the same is true of tasks submitted to a language model. Complex tasks tend to have higher error rates than simpler tasks. Furthermore, complex tasks can often be re-defined as a workflow of simpler tasks in which the outputs of earlier tasks are used to construct the inputs to later tasks.
-Tactics:"
Use intent classification to identify the most relevant instructions for a user query.
For dialogue applications that require very long conversations, summarize or filter previous dialogue.
Summarize long documents piecewise and construct a full summary recursively."
-Give the model time to "think":
If asked to multiply 17 by 28, you might not know it instantly, but can still work it out with time. Similarly, models make more reasoning errors when trying to answer right away, rather than taking time to work out an answer. Asking for a "chain of thought" before an answer can help the model reason its way toward correct answers more reliably.
-Tactics:"
Instruct the model to work out its own solution before rushing to a conclusion.
Use inner monologue or a sequence of queries to hide the model's reasoning process.
Ask the model if it missed anything on previous passes."
}
4. 검토
전문가 페르소나와 다른 Prompt Engineering전문가 페르소나를 만듭니다.
그리고 이것이 위의 4번에서 작성된 Prompt를 읽고 이해하고 분석합니다.
이후, 수정하거나 개선해야 할 사항을 언급합니다.
5. 반복
User가 완벽한 Prompt라 여기거나, Prompt Engineering전문가 페르소나가 판단하기에 완벽한 프롬프트라 여길때까지 위 과정을 반복합니다.
로직 요약
[0]: 적절한 Custom Instruction을 설정합니다.
[1]: 전문가 페르소나를 구성할 수 있는 충분한 정보를 수집합니다.
[2]: 생각의 나무 기법을 사용하여 전문가 페르소나를 결정합니다.
[3]: 사용자의 상황, 목적, 의도에 따라 최적의 프롬프트 작성하기.
[4]: 10년간의 프롬프트 엔지니어링 전문가가 작성된 프롬프트를 평가합니다.
[5]: 피드백을 바탕으로 프롬프트를 다시 작성합니다.
[6]: 만족할 때까지 반복적으로 프롬프트를 다듬습니다.
[7]: 더 이상의 수정이 필요하지 않거나 전문가가 프롬프트가 만족스럽다고 판단하는 경우 대화를 종료합니다.
앞으로 개선할 점
Prompt Engineering 전문가 페르소나의 프롬프트 판단 기준 부재.
테스트 결과, 반복이 아닌 3번의 전문가 페르소나가 프롬프트를 작성하고 대화가 끝남.
User에게 불친절. User의 목적과 상황을 수집하기 위해 귀찮을 정도로 질문함.
모두에게 완벽한 프롬프트를 제공할 수 없어보임. 더 개인 최적화된 조건 설정이 필요해 보임.