Prompt Engineering for 사람인 자소서 초안 생성
2023년 8월 초, 사람인에서 ChatGPT기반으로 자소서 초안 생성 및 다듬기 서비스를 런칭하였다. 이번 포스팅에서는 서비스 내부의 (1) 자소서 본문과 소제목 생성 (2) 에디팅 기능에 관련한 텍스트 프롬프트 최적화 방법에 대해 자세히 풀어보겠다.
🙄GPT로 자소서 작성 — 대필일까? 참고일까?
서비스 개발 과정에서 고민이 가장 많이 되었던 부분은 자소서 작성에 있어서 생성 AI의 역할 범위를 설정하는 것이었다. 사용자와 프롬프트 엔지니어의 편의만을 생각하면, 간단하게 “{IT} 직군 자기소개서 작성해줘”라고 명령하면 그만이다. 사용자는 지원직군 정보만 제공하고 프롬프트는 보다시피 엔지니어링할 것도 없다. 모두가 편하지만 AI의 역할이 100%로 설정되면 대필로 간주되기 때문에 윤리적 혹은 법적 이슈가 발생할 수 있다.
이에, 弱인공지능 (즉, 사용자를 위한 지원도구로써의 AI) 원칙을 바탕으로 사용자의 지원 직무와 경험 및 이력값을 받아, 대필이 아닌 참고용 자기소개서 초안이 생성되도록 유도하였다.
자소서/소제목 생성
입력이 좋아야 출력이 좋다 — 여기서 좋은 출력은 일정한 포맷과 고품질의 생성 내용을 말한다.
포맷은 json 구조로 제목과 본문이 고정 분리되게 하였고, title과 contents 값만 취하여 출력하여 포맷이 깨지는 것을 방지하였다.
{“title”: …, “contents”: …}
본문 생성에서는 사용자가 500자/1000자를 선택할 수 있는데 여기서 문제가 발생하였다. “500자 생성해줘”, “1000자 생성해줘”라고 입력해도 출력 길이가 300 ~ 600자 내외로 동일하였다 . ChatGPT 하이퍼파라미터의 max_length를 최대치로 설정해도 650자 이상은 생성이 되지 않았다. Reddit 등의 커뮤니티에서도 ChatGPT 는 정확한 글자수 카운팅을 할 수 없다는 이슈가 논의되고 있었고 대안으로 글의 parts (예. 서론 300자, 본론 300자, 결론 300자)를 분리 생성하여 이어붙이는 방법이 있다고 하였다. 소요시간이나 비용적인 면에서 서비스에 적용하기에는 부담이 있었기 때문에, 이 방법은 현실성이 없었다. 대신, 글자수가 아니라 문단수를 엔지니어링하여, 1000자를 선택할 경우 한번에 여러 문단이 생성되게 그리고 문단 간에 중복내용이 없도록 하여 이슈를 해소하였다.
소제목 생성에서는 간단하게 “자소서 소제목 생성해줘”라고 입력하면 대부분 “홍길동의 자기소개서”와 같은 흔한 제목이 출력되었다. 이를 해결하기 위해 독자의 시선을 사로잡을 임팩트있는 제목이 자주 사용되는 도메인을 특정하여 “{도메인}처럼 제목 생성해줘”로 제목을 Catchphrase화하였다.
에디팅 (글 다듬기)
ChatGPT로 자소서를 생성해보면 그 한계점이 두드러지게 나타나는 포인트가 있는데 무분별한 접속부사와 지시관형사의 사용이다 (예. Figure 1 하이라이트 부분).
문단 시작점에 “또한”의 반복 사용과 대용어를 사용한 상호참조 표현 남용은 은 텍스트의 응집성 (Cohesion)을 방해하고 Reader의 피로감을 증폭시킨다. 즉, 글이 부드럽게 읽히지 않는다는 것인데, 이를 해결하기 위해 프롬프트 처리 외에도 후처리 과정을 추가하여 에디팅에 필요한 프롬프트 입력값 길이를 최소화하였다.
제거해도 텍스트의 흐름에 직접적인 영향이 없는 불필요한 품사들을 Rule-base로 후처리 적용하였다. 예를 들어, Figure 1에서 1인칭 대명사 “저는”은 특별한 조건 없이 제거하여도 맥락의 흐름이 자연스럽다. 대명사, 연결사 남용 등은 함께 연동되어 있는 AI 자소서 코칭 서비스에서도 잘 탐지할 수 있기 때문에 혹시나 (매우 낮은 확률로) 결과값에 노출이 되어도 유저가 수정하는 데 어려움이 없다.
프롬프트에서는, ChatGPT에게 Editor로서의 역할을 부여하고 제거하면 상호참조 구조가 무너져 텍스트의 흐름에 중대한 영향을 미치는 대용 (Anaphora)에 대해 엔지니어링하였다. Figure 1의 첫 문단에 “이 프로젝트를 통해..”라는 문장에서 “이”의 선행어는 이전 문장의 “해커톤 회원가입 개선”이다. 해당 상호참조해결 표현을 무형대용어(Zero anaphora)로 대체하면 “…다양한 경험을 얻었습니다. 참여 기간 동안 사용자들의 의견을 수렴하고…”와 같이 변경되어 맥락은 해치지 않으면서 글의 장황성도 줄일 수 있다.
그 외, ㅋㅋㅋ 와 같이 무의미한 정보, 비속어 입력값은 전처리로 필터링하였고 결과값에서 사람 이름과 같은 개인정보가 출력되지 않도록 마스킹처리하였다.
사람인 AI 생성 원칙
자소서 생성 서비스는, 사람인 면접코칭 서비스와 마찬가지로 아래 5가지 원칙을 준수하며 ChatGPT를 사용하여 개발되었다.
“약인공지능” > 사용자가 더많은 정보를 쉽고 빠르게 습득할수 있도록 조언하는 역할 즉 합리적이고 효율적인 가치판단의 지원도구로 AI가 사용되어야 합니다.
“사실에 기반한 AI” > AI는 무에서 유를 창조하는 것이 아니라 사실에 근거를 두어야 합니다.
“설명 가능한 AI” > 사람인은 설명가능성 (Explainability)에 유의하여, AI가 특정 수준의 정확도를 이루는데 영향을 준 요인을 사용자에게 설명할 수 있도록 서비스를 설계하고 개발합니다.
“개인정보보호” > 사람인은 AI가 사용자의 프라이버시를 손상시키는 상황이 발생하지 않도록, 서비스 전 과정에서 데이터 마스킹과 랜덤화를 통해 개인정보 처리와 보호에 최선을 다하고 있습니다.
“편향성 배재” > 사람인은 AI가 인종, 장애, 성적지향, 종교 등과 관련하여 편향된 결정을 내리지 않도록, 서비스 전 과정에서 데이터 공정성을 고려한 설계를 적용합니다.
앞으로도, ChatGPT를 단순하게 사용하는데 그치는 것이 아니라 AI 자소서코칭, 면접코칭 등을 통해 쌓아온 내부 자연어처리 기술과 한국어의 특징을 고려한 프롬프트 엔지니어링 세밀화를 통해 HR 분야에서 생성 AI 적용성의 한계를 보완하고자 한다.