챗 방식을 위한 프롬프트 엔지니어링: AI와의 대화를 디자인하라 2
기본을 튼튼히 하는 두 번째 시간을 갖도록 하겠습니다. 이번에는 Anthropic의 프롬프트 엔지니어링 문서를 기준으로 삼겠습니다.
프롬프트 엔지니어링의 기본을 제대로 익히는 것은 마치 요리에서 칼질을 익히는 것과 같습니다. 처음에는 지루하고 반복적으로 느껴질 수 있지만, 이 기초가 없다면 아무리 비싼 재료와 고급 주방기구를 가지고 있어도 맛있는 요리를 만들 수 없죠.
AI와의 대화에서 프롬프트는 여러분의 칼입니다. 기본을 익히면, 복잡한 문제도 간단하게 ‘썰어낼’ 수 있고, 정확하고 창의적인 결과물을 ‘요리해낼’ 수 있습니다.
프롬프트 엔지니어링의 기본을 익히는 것은 AI라는 거대한 도서관에서 원하는 책을 찾는 방법을 배우는 것과도 같습니다. 기본을 알면, 수많은 정보 속에서도 정확히 원하는 ‘지식의 책’을 찾아낼 수 있습니다.
결국, 프롬프트 엔지니어링의 기본을 제대로 익히는 것은 AI라는 강력한 도구를 자유자재로 다룰 수 있는 마법사가 되는 첫걸음입니다. 기본부터 차근차근 익혀나가면, 언젠가는 AI의 무한한 가능성을 당신의 손끝에서 춤추게 할 수 있을 거예요!
프롬프트 엔지니어링의 기본
후임에게 업무를 지시 한다고 생각하면서 따라오세요.
- 명확하고 직접적으로 지시합니다. 지시 수행 시 참고할 자료가 있을 수 있습니다. 생성을 지시하는 이유를 나타내는 키워드와 지시어를 사용합니다.
-
- 내가 알고 있다고 해서 상대방도 아는 것은 아닙니다. 나도 모르면서 시키는 경우가 많습니다. 원하는 것을 얻기 위해 지시할 때는 명확하게 알려야 합니다. 상대방도 명확하게 이해할 수 있도록 말이죠. 너무 당연한 이야기지만, 생성형 AI와 대화를 해보면 내가 뭘 원하는지 정확하게 알고 있는지 의심스러울 때가 많습니다. 내가 무엇을 원하는지 분명히 말했는데도 생성형 AI의 응답이 마음에 안 든다면, 내가만 알고 상대는 모르는 경우입니다. 상대 입장에서 내가 아는 만큼 상대도 알도록 설명하는 노력이 필요합니다.
-
- 역할을 부여하면 어떤 일을 해야 하는지 길게 설명하지 않아도 될 것입니다.
- 복잡한 일이라면 단계별로 분해해서 생각하라고 할 것입니다.
- 원하는 형식이 있을 수 있습니다. json, xml과 같이 구조화된 형식을 요구할 때가 있습니다. 이런 경우는 대부분 다른 소프트웨어 도구에서 결과를 사용하고자 할 때가 주 입니다. 형식을 갖춘 보고서를 작성한다면 mark down이 좋습니다. 특정 형식이 아니더라도 자연어로 작성하는 것이니 원하는 톤이나 스타일이 있을 수 있습니다. 또는 글머리 기호나 목록이나 표를 원할 수도 있고, 길이나 단어 제한을 할 수도 있습니다.
- 예시 사용
- 백문이 불여일견이라 하듯이, 여러 말보다 예시 하나가 더 효과적일 수 있습니다.
- 4번 항목에 대한 요구가 조금 복잡해지면 예시를 들고 나오세요.
- 맥락이 있으면, 맥락을 제공합니다. 이것도 너무 당연한 말이죠.
- 맥락이 좀 길면 맥락을 먼저 제공해 주고 그 맥락을 포함해서 일 처리하도록 하는게 좋겠죠? CDPE는 대화로 협력하니 맥락을 먼저 제공하고, 제공한 맥락으로 처리할 일을 요청하면 됩니다. CDPE에서는 사용자가 어떤 것을 제공하고 제공한 것에 대해서 무엇을 하라고 지시할 것인지를 대화 시작할 때 이야기 하도록 합니다. 이 경우 “나는 맥락을 먼저 제공하고, 그 맥락을 사용해 해야 할 일을 맥락 제공 후 알려줄 것입니다.” 이렇게 시작합니다. 그럼 협력하는 에이전트는 맥락을 제공해 달라고 하고, 맥락을 제공하면 해야 할 일을 제공해 달라고 합니다. 사용자는 요청에 따라 맥락과 할 일을 알려줍니다. 에이전트는 사용자의 지시를 수행합니다.
- 해야 할 일이 크고 복잡한 경우, 지시를 읽다보면 무엇을 하라고 것인지를 알기 어려울 때가 있습니다. 이런 경우에 지시를 좀 더 작게 나눠서 해 준다면 좋겠죠? 전체 프롬프트 하나, 부분 프롬프트들 여러 개가 됩니다. 전체 프롬프트에는 어떤 부분들이 있고 이 부분들이 어떤 순서로 연결되어 전체를 이루는지가 있으면 좋겠죠? 전체 프롬프트는 부분 프롬프트들의 체인이 되는 겁니다. 프롬프트 체인을 지시하는 사람이 직접 만들지 않으려 할 때 그렇게 하도록 지시합니다. 지시 받는 쪽에서 프롬프트 체인을 만들어 지시를 수행하도록 하게 합니다.
- 결과에 대한 평가 방법을 언급해 줍니다.
- 결론이 제일 뒤에 나오는 것처럼, 프롬프트를 작성하는 이유가 되는 지시는 되도록 뒤에 둡니다. 이것도 너무 당연한 말이죠?
이 정도가 기본 입니다. 포스트 잇에 작성해서 생성형 인공지능과 협력 시작할 때 한 번 보고, 생성형 인공지능에 프롬프트를 전달할 때 한 번 더 보고 해서 기본기를 탄탄히 합니다.
복잡한 일을 시킬 때 단계별로 생각해서 하라고 하는 것처럼, 프롬프트 엔지니어링에서 연구 수준의 기법들은 연구할 필요가 없어질 때까지는 새롭게 계속 나오고 나올 것입니다. 생성형 인공지능과 협력하는데 기대 이하의 결과가 나올 때, 어떤 새로운 기법들이 어떤 문제를 해결하기 위해 나왔나 보고 해결하려는 문제에 도움되는게 있으면 그때 좀 더 살펴보고 사용하면 됩니다.
CDPE
- 대화 중에 변하지 않는 것들을 가장 먼저 말합니다.
- 역할, 맥락, 전체 대화를 지배하는 지침이나 규정
- 해결할 문제가 복잡하다면, 복잡하다는 전제를 깔고 대화를 시작합니다.
- 생각해 보자라고 하면서 대화를 시작합니다. 신중하게 분석하고 응답해 달라고 합니다.
- 토론하고자 하는 주제나 아이디어가 있을 때 유용하다.
- 일관성 유지가 중요하다면, “대화할 때 일관성을 유지해 달라”고 합니다.
- 복잡한 일을 요청하는 경우나, 생성형 인공지능이 잘 못하는 일인 경우에는
– “단계 별로” 하라고 합니다. 예) 단계 별로 생각하고 문제를 풀어주세요, 단계 별로 설명해 주세요. - 하나의 프롬프트로 해결 되지 않을 정도로 복잡하다면, “프롬프트 체인을 사용해도 된다”고 해 줍니다.
- 생각해 보자라고 하면서 대화를 시작합니다. 신중하게 분석하고 응답해 달라고 합니다.