욱영GPT_ 생각/액션/관찰 프롬프트(step by step 프롬프트)

**GPT-4에서 정상적으로 작동됩니다. GPT-3.5는 테스트해보지 않았습니다.**
프롬프트를 잘 만들려면 어떻게 해야할까 하고 고민하시는 분들이 많은 것 같습니다. 제가 만든 프롬프트 하나를 소개하고, 왜 이렇게 작성했는지 분석하는지 글을 작성하겠습니다.

소개할 프롬프트 - 생각/액션/관찰 프롬프트


<|im_start|>**contents**
[질문에 대한 배경지식]
<|im_end|>


<|im_start|>**system**:
You must follow the steps in '{steps}' to answer '{questions}'.
!IMPORTANT : Repeat until the final answer is obtained.
Focus on the content of '{contents}' when configuring responses.
<|im_end|>

<|im_start|>**steps**:

respond with a JSON in the format:

```json
{
‘Observation = false’

  If 'Observation == false', then:
  {
    "Thought" : string // Consider what is necessary to answer the question.
    "Action": string // Write an article focusing on '{contents}' to address '{question}'.
    "Observation" : boolean // true or false. Observe the results of the action. If the answer is sufficient, set 'Observation = true'. If the answer is insufficient, set 'Observation = false'.
  }

  Else if 'Observation == true', then:
  {
    Final Answer: string // Provide the final answer to the original input question.
  }
}
```
<|im_end|>

<|im_start|>**questions**:
[질문할 내용]
<|im_end|>

프롬프트 설명

프롬프트 해석

콘텐츠 : [질문에 대한 배경지식]

시스템 :
질문에 응답하려면 과정을 따라야 합니다.
!중요: 최종 답변을 얻을 때까지 반복합니다.
응답을 구성할 때 콘텐츠의 내용에 초점을 맞춥니다.

단계 :
다음 형식의 JSON으로 응답합니다:

JSON
{
생각 : 질문에 답하기 위해 필요한걸 생각하세요
액션 : 문제를 해결하세요
관측 : 액션이 충분했는지 확인하세요.
다시 생각해보면서 반복하고, 액션이 충분하다면 최종 답을 내놓으세요
}

질문 : [질문할 내용]
이해가 용이하게 정리해보면, 다음과 같은 프롬프트입니다.

<|im_start|>와 <|im_end|>

<|im_start|>
~~~
<|im_end|>

로 이용되는 프롬프트는 MS에서 제시하는 ChatML의 기본 프롬프트형식을 차용하였습니다. 자세한 MS의 가이드는 여기서 참고 바랍니다.

<!IMPORTANT : >

!IMPORTANT : Repeat until the final answer is obtained.
해당 부분에서 ! IMPORTANT는 중요한 부분임을 표시하기 위하여 사용하였습니다. 프롬프팅을 할 때, 'never'와 같은 단어보다는, 해당 부분 앞에 !IMPORTANT를 사용하는 것이 경험상 효과적으로 느껴졌습니다.



json format 형식

respond with a JSON in the format:
```json { "Thought" : string // Consider what is necessary to answer the question. ~~~~~~~~ } ```
 GPT가 제시한 프롬프트에 대해, 명확하게 이해할 수 있게 끔 코딩의 형식(json format)을 이용합니다. 이렇게 하면 프롬프트에 대한 다각도의 해석이 하나로 귀결되게 됩니다.


생각하고 - 액션하고 - 맞는지 확인하는 방식

  If 'Observation == false', then:
  {
    "Thought" : string // Consider what is necessary to answer the question.
    "Action": string // Write an article focusing on '{contents}' to address '{question}'.
    "Observation" : boolean // true or false. Observe the results of the action. If the answer is sufficient, set 'Observation = true'. If the answer is insufficient, set 'Observation = false'.
  }

  Else if 'Observation == true', then:
  {
    Final Answer: string // Provide the final answer to the original input question.
  }
생각(Thought)하고 액션(Action)하고 관찰(Obesrvation)하여, 다시 생각해봐야하는지 반복하는 과정입니다. GPT에게 GPT가 생각한 방식이 맞는지 되뇌이면서 명확한 답변을 얻게 해줍니다.

활용해보기

아래 기사의 사례가 '인권침해에 대한 기업의 연루'되었는지 확인하기문제 :

최근(2022. 11. 21) 내한한 유엔 미얀마 인권특별보고관(토마스 앤드루스)은 ‘미얀마 군부의 핵심자금출처인 쉐(Shwe)가스전 사업의 공동운영자인 포스코(POSCO)가 협력사업 단절을 통해 군부의 자국민들에 대한 인권 침해에 연루되지 않도록 권고’한 바 있다. 이는 “인권침해에 대한 기업의 연루”에 해당할 수 있는 사례이다. 1. ‘인권침해에 대한 기업의 연루’의 개념과 요건, 국내외 사례들을 알아보고, 2. 이문제에대한유엔등국제적기준과원칙을설명하고, 3. 위 미얀마 사례의 사실관계를 자세히 설명한 후 이 사례가 ‘인권침해에 대한 기업의 연루’에 해당할 수 있는지 판단하라. 
https://sharegpt.com/c/QpYpmyQ

답변입니다.
{
"생각": "이러한 질문에 답하기 위해 먼저 '인권 침해에 대한 기업의 관여'의 개념을 살펴보고, 국내외 사례의 예를 제시하고, 유엔 등 이 문제에 대한 국제 기준과 원칙을 설명한 다음, 미얀마 사례를 평가하여 인권 침해에 대한 기업의 관여에 해당하는지 여부를 판단해야 합니다.",
"조치": "인권 침해에 대한 기업의 관여는 기업이 사업 활동을 통해 직간접적으로 인권 침해에 기여하는 상황을 말합니다. 이는 기업이 고의로 인권 침해를 초래하는 활동을 통해 이익을 얻거나 이를 지원하는 경우, 또는 그러한 침해를 방지하기 위한 주의 의무를 다하지 않는 경우에 발생할 수 있습니다.\n\n국내 및 해외 사례의 예는 다음과 같습니다.\n1. 우즈베키스탄 면화 산업에서 강제 노동 사용에 대한 국제 기업의 개입.\n2. 표현의 자유와 사생활의 자유를 억압하는 것으로 알려진 정부에 감시 장비를 제공하는 데 있어 기술 기업의 공모.\n3. 적절한 협의나 보상 없이 환경 파괴와 지역 사회 이주를 야기하는 채굴 산업\n\n인권 침해에 대한 기업의 관여에 대한 국제적 기준과 원칙에는 유엔 기업과 인권에 관한 원칙(UNGP)이 있습니다. UNGP는 인권 존중을 위한 기업의 책임과 인권에 대한 부정적 영향을 예방, 완화, 구제하기 위한 인권 실사의 필요성을 강조하고 있습니다.\n\n미얀마 사례에서 토마스 앤드류스 유엔 미얀마 인권 특별보고관은 쉐 가스전 프로젝트의 공동 사업자인 포스코가 미얀마 국민에 대한 인권 침해에 연루되지 말 것을 촉구한 바 있습니다. 쉐 가스전 프로젝트는 수많은 인권 침해에 연루된 미얀마 군부의 주요 자금원입니다. 포스코인터내셔널은 2023년 2월 유럽연합의 제재를 받은 미얀마석유가스공사(MOGE)와 함께 이 프로젝트의 지분을 보유하고 있습니다.\n\n제공된 정보에 따르면, 포스코의 쉐 가스전 프로젝트 참여는 인권침해를 유발하는 활동을 통해 고의로 이익을 얻거나 지원하는 경우, 또는 프로젝트와 관련된 사업 활동에서 적절한 실사를 수행하지 않는 경우 기업의 인권 침해 연루에 해당할 수 있다고 주장할 수 있습니다.",
"Observation": true
}

{
"최종 답변": "인권 침해에 대한 기업의 관여는 기업이 사업 활동을 통해 직간접적으로 인권 침해에 기여하는 상황을 말합니다. 이러한 사례의 예로는 우즈베키스탄 면화 산업의 강제 노동, 억압적인 정부에 감시 장비를 제공하는 기술 기업, 환경 파괴와 지역 사회 이주를 야기하는 채굴 산업 등이 있습니다. 이 문제에 대한 국제 표준으로는 인권 존중과 실사의 필요성을 강조하는 유엔 기업과 인권에 관한 기본 원칙이 있습니다. 포스코와 쉐 가스전 프로젝트와 관련된 미얀마 사례에서도 "인권침해를 초래하는 활동을 통해 고의로 이익을 얻거나 지원하거나 해당 프로젝트와 관련된 사업 활동에서 적절한 실사를 수행하지 않은 경우 인권침해에 대한 기업 공모에 해당할 수 있다"고 주장할 수 있습니다.
}

이런 프롬프트는 어떠신가요? /n/n 같은 코드 언어가 생기는 등 몇몇 문제점도 있습니다. 그렇지만 꽤나 쓸만한 프롬프트라고 생각합니다. 어떻게 프롬프트를 작성했는지를 위주로 읽어주세요. 읽어주셔서 감사합니다 🙂
13
1개의 답글

👉 이 게시글도 읽어보세요!

📚 AI 활용 사례 더 보기