brunch

You can make anything
by writing

C.S.Lewis

by 서기슬 Aug 27. 2023

실시간 채팅 번역에 최적화된 프롬프트 만들기


많은 분들이 ChatGPT 거품이 곧 꺼진다고 하지만, 저는 여전히 하루하루 ChatGPT를 재밌게 그리고 유용하게 쓰고 있습니다. 이제 OpenAI가 유료 버전을 출시한 지도 6개월 정도 되었는데요, 개인적으로 온라인 커뮤니티에서 볼 수 있는 반응 중에 특히 어리둥절한 것은 'GPT 3.5나 GPT4나 퍼포먼스에 큰 차이가 없다' 같은 것들입니다.


정말요?

도구의 효용은 쓰는 사람과 쓰는 방법에 따라 천차만별이라는 것은 좀 뻔한 얘기입니다. 조심스레 짐작컨대 GPT3.5와 GPT4의 퍼포먼스 차이를 체감하지 못하는 분들은 실제로 GPT4를 충분히 사용해본 적이 없거나, 혹은 그런 수준의 간단한 질문만 해본 분들이 아닐까 생각합니다.


물론 대중에게 공유하는 프롬프트 디자인의 미덕 중 하나는 무료 버전인 GPT3.5와 유료 버전인 GPT4 양쪽 모두에서 잘 작동하는 결과물을 제공하는 것이겠지만요.




오늘은 일상에서 외국인과 대화해야할 때에 실시간 채팅 번역에 최적화된 프롬프트 만들기 노하우를 공유해볼까 합니다.

이 프롬프트를 만들게 된 동기는 간단합니다. 얼마 전에 다양한 국적의 외국인과 비즈니스적인 문제로 영어로 대화할 일이 있었는데요, '받는 언어'와 '보내는 언어'를 각각 번역해야하는데, 이걸 각각 번역하기도 귀찮기 때문에 하나의 ChatGPT 프롬프트에서 대화 나누듯 번역기를 사용하고 싶었기 때문입니다.


그리고 구글 번역기로는 원하는 만큼 번역이 안 됩니다!


사용 시나리오는 다양합니다. 요즘은 해외의 다양한 비즈니스이 대부분 고객 응대에 실시간 채팅을 지원합니다. 이메일보다는 문제 해결이 빠른 느낌입니다. 이를테면 최근에는 도메인 구매 문제 때문에 Godaddy라는 서비스의 고객센터와 소통할 일이 있었는데, 이메일 문의 채널을 아예 제공하지 않고 실시간 채팅만 지원하더라고요(이 또한 글로벌 아웃소싱과 SaaS의 도입 덕분이겠죠).


실시간 채팅에 최적화된 ChatGPT 프롬프트는 여러분이 호텔 예약을 변경해야할 때, 외국 여행 가서 레스토랑이나 장소의 디테일을 확인하고 싶을 때, 혹은 여러분이 비즈니스를 제공하고 있는데 외국인으로 문의를 받아야만 할 때에 모두 유용하게 사용할 수 있습니다.



간략한 기호로 '보내는 말'과 '받는 말'의 구분 주기

다른 분들은 어떻게 파악하고 계신지 모르지만, 저는 2개 국어의 산출물을 내야하는 경우 프롬프트에 2개 국어가 들어가는 것이 결과의 안정성이 좋다고 느끼고 있습니다(체험으로 익힌 것이라 따로 논문 레퍼런스 등은 찾지 않았음, 아는 분은 댓글로 알려주세요).


저는 화살표를 좋아하니
보내는 말은 ->로

받는 말은 <- 로 GPT에게 가이드를 줘보도록 하겠습니다.




실시간 채팅 번역 세션을 시작합니다.


-> 이것은 다른 사람에게 보내는 문장입니다.

('->'  This symbol indicates the sentence I've sent. Please translate every sentence following this symbol into English.)


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다.)


준비가 되었다면, Ready 라고 답해주세요.




마지막에 Ready라고 스탠바이 시키는 것은 사실 불필요한데, 왠지 똑똑한 GPT를 부사수처럼 쓰는 재미를 위해 추가하는 제 스타일입니다 :)


잘 작동하네요.




받는 문장에 부연 설명 추가하기

그런데 실제로 외국인과 대화를 하다보면, GPT가 번역을 잘 해주긴 하지만 애초에 제가 잘 모르는 약어가 등장하는 경우가 꽤 있더라고요.


그래서 받는 문장에만 이에 대한 부연 설명을 해달라는 프롬프트를 추가하고 싶어졌습니다.




실시간 채팅 번역 세션을 시작합니다.


-> 이것은 다른 사람에게 보내는 문장입니다.

('->'  This symbol indicates the sentence I've sent. Please translate every sentence following this symbol into English.)


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다. 그리고 만약 약자, 특정 전문 용어, 은어나 속어를 포함하고 있다면 아래 Note에 부연 설명을 적어주세요.)

Note: 여기에 한국어로 설명해주세요.


준비가 되었다면, Ready 라고 답해주세요.





RSVP라는 약어가 등장했는데 Note에 부연 설명을 해주지 않는군요!

위에서 말씀 드렸듯이, 오는 언어가 영어인 경우 이럴 때에는 영어를 섞어서 프롬프트를 주는 것이 작동 확률이 높습니다. 그리고 Note에 대한 요청 사항을 별도의 문장으로 분리해서 적어보았습니다.




실시간 채팅 번역 세션을 시작합니다.  


-> 이것은 다른 사람에게 보내는 문장입니다.  

('->'  This symbol indicates the sentence I've sent. Please translate every sentence following this symbol into English.)


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다.)

And if the sentence contains connotations, abbreviations, jargon, or slang, please provide additional explanations in the Note below.

Note: 여기에 Connotations, abbreviations, jargon or slang에 대해 한국어로 설명해주세요.  


준비가 되었다면, Ready 라고 답해주세요.





슬슬 프롬프트가 지저분해지고 있습니다만, Note가 잘 작동하니 번역기가 한층 스마트해진 것 같아서 기분이 좋습니다. 역시 2개 국어 산출물을 원할 때에는 프롬프트에 2개 국어를 섞는 것이 성능이 좋네요.


참고로 Note: 뒤에 굳이 한국어 설명을 넣은 이유는, 이걸 넣지 않으면 Note 부분만 영어로 나오는 경우도 있기 때문입니다. 주어진 양식대로 확률적으로 따라하는 ChatGPT의 특성 때문이죠.


그런데 위의 프롬프트를 그대로 작동시키면 한 가지 번거로운 문제가 사이드 이펙트로 발생하는데, '보내는 말'에도 Note가 붙어 나온다는 겁니다.


Note는 '받는 말'에만 붙으면 되는데, '보내는 말'에 Note가 계속 붙어서 나오면 인터페이스가 좀 번거로워 보이죠? 간단한 디버깅을 통해 이 문제를 해결해보겠습니다.


'보내는 문장을 번역할 때에는 Note를 붙이지 말아라'라는 단서를 줘보겠습니다.





실시간 채팅 번역 세션을 시작합니다.  


-> 이것은 다른 사람에게 보내는 문장입니다.  

('->'  This symbol indicates the sentence I've sent. Please translate every sentence following this symbol into English.)

-> When translating Korean to English, please Do Not write Notes at the below. Please provide translations Without additional explanations in the Note.


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다.)

And if the received sentence contains connotations, abbreviations, jargon, or slang, please provide additional explanations in the Note below.

Note: 여기에 Connotations, abbreviations, jargon or slang에 대해 한국어로 설명해주세요.  


준비가 되었다면, Ready 라고 답해주세요.





하지만 잘 작동하지 않습니다.


자꾸 한->영 번역에서도 Note를 붙여서 설명해주네요. 이것이 프롬프트 엔지니어링의 맹점이기도 하죠. 역시 많은 분들이 체험으로 아시겠지만, 프롬프트에서 긍부정 문장을 통해 조건절을 제어하는 것은 쉽지 않습니다. 명령형 프로그래밍 언어를 쓴다면 if문으로 아주 쉽게 제어 가능한 출력을, GPT 프롬프트에서는 늘 확률적으로 접근해야합니다.


해답은 무엇일가요? 이런 경우 대부분 해답은 'few shot prompt'를 주는 것입니다. 설명으로 이렇게 해라 저렇게 해라 명령하는 것이 아니라, 산출물의 명확한 예시를 프롬프트에 주는 것입니다.


프롬프트 디자인을 할 때마다 깨닫는 것이지만, 이것은 사실 사람이 사람에게 일을 시킬 때에도 마찬가지인 것 아닐까요? 방향성을 주거나 복잡한 조건절로 업무 지시를 하는 것보다, 예시 형태를 주면서 이대로 만들라고 하는 것이 결과물 산출물을 분명하게 하는 데에는 더 도움이 되기 때문이지요.


아예 설명 형태의 부정 명령문을 지우고, Caution!을 붙인 다음에, 예시를 주는 방식을 써보겠습니다.




실시간 채팅 번역 세션을 시작합니다.  


-> 이것은 다른 사람에게 보내는 문장입니다.  

('->'  This symbol indicates the sending sentences. Please translate every sentence following this symbol into English.)


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다.)

And if the received sentence contains connotations, abbreviations, jargon, or slang, please provide additional explanations in the Note below.

Note: 여기에 Connotations, abbreviations, jargon or slang에 대해 한국어로 설명해주세요.  

(Caution! Do not add a Note to the sending sentences)


The actual chat translation sessions will proceed as follows;

-----------------------------------------------------------


<- In order to attend the event, you need to respond to the RSVP. Would you like me to send you the RSVP response link?

<- 이벤트에 참석하려면 RSVP에 응답해야 합니다. RSVP 응답 링크를 보내드릴까요?

Note:  RSVP는 "Répondez s'il vous plaît"의 약자로, 프랑스어로 "답장해 주세요"라는 뜻입니다. 초대에 대한 응답을 요구할 때 사용하는 용어입니다.


-> 저는 행사에 무단으로 참석할 예정입니다 LOL  

-> I'm planning to attend the event without permission LOL.


-----------------------------------------------------------


준비가 되었다면, Ready 라고 답해주세요.




짠!

이제 아주 잘 작동합니다. 내가 한국어로 쓰는 표현은 깔끔하게 영어로 번역만 하고, 영어로 받는 문장에는 Note를 붙여서 한글로 부연 설명을 합니다.


이제 제 마음에 쏙 드는, 편리하고 스마트한 실시간 채팅 번역기를 만들었습니다. 짝짝짝!



참고로 ChatGPT와의 대화 중 ‘세션 내 학습'을 통해서 물론 출력 형태를 제어할 수 있습니다. 다음과 같이 ‘하지 말라’고 강조해서 얘기해주면, 세션 내에서는 다음부터는 안 그럽니다. 다음과 같이 말이죠.


그렇게 꼭 '죄송합니다'까진 하지 않아도 괜찮다규ㅠㅠ



그런데 시작 프롬프트에 꼭 모든 조건을 담지 않고 이렇게 세션 중간에도 명령을 해도 되는데, 굳이 시작 프롬프트에 모든 조건을 담아두는 이유는, 이것이 '프롬프트 자산화'를 하는 데에 훨씬 유리한 방법이기 때문입니다. 프롬프트를 저장해두고 그때 그때 꺼내 쓰는 데에는 역시, 한 번에 복사-붙여넣기 해서 쓰는 것이 편리하니까요.



맥락에 따라 다른 말투로 번역하기

이미 '실시간 채팅 번역에 최적화된 프롬프트 만들기' 과업은 v1.0 끝난 셈이지만, 평소에제가 사용하던 다른 프롬프트를 조합하여, 번역 말투를 바꾸며 사용합니다.


저는 똑같은 문장의 한->영 번역도, 크게 세 가지 경우로 사용합니다.

1) 친한 친구에게 말하는 것 같은 친근한 영어

2) 비즈니스 맥락에서 프로페셔널하게 보이는 영어

3) 비영어권의 사람들도 쉽고 자연스럽게 이해할 수 있는 보편적 영어


각각 다르게 필요할 때가 있더라고요.

특히 3)의 경우 제가 대학원을 다니며 영어에 대해 이전부터 갖고 있던 인식인데요, 실제로 번역을 하다보면, 항상 미국식 영어가 좋은 것도 아니고, 항상 영국식 영어가 좋은 것도 아닙니다. 이를테면, 종종 유튜브 동영상을 보면 미국 사람과 영국 사람끼리도 서로, 서로 각자의 영어 단어가 이상하고 우습다고 하는 밈이 있죠.


간혹 학회나 국제 행사에 가면 영어 네이티브가 한 명도 없는 상황에서, 아시아든 유럽이든 각국의 사람들이 서로 영어로 소통하는 경우가 있거든요. 이 때에는 Non-native라는 것을 서로 알고 있는데 굳이 미국식 영어를 흉내내는 것을 오히려 종종 촌스럽게 보기도 합니다. 말하거나 듣는 사람도 약간은 broken English라는 것을 인식하고 있음에도, 의사소통을 위해 훨씬 직관적인 표현에 집중하기도 하고요.


물론 콩글리시를 피하고 제대로된 영어를 써야하지만, 또 무작정 미국식 영어를 따를 필요도 없습니다. 상황과 맥락에 맞는 설정이 중요하겠죠.


"When you translate from Korean to English, please write in universally understandable English that can be easily comprehended by non-native English speakers."


그래서 영어로 대화하긴 하지만, 상대도 영어 네이티브가 아니라는 것을 알고 대화할 때에는, 위와 같은 문장 정도를 프롬프트에 추가해주면 좀 더 중학교 교과서적인 영어가 나옵니다. 저도 최근에 동남아 국가에 출장 겸 여행을 다녀오며 역시 제가 만든 번역 실시간 채팅 번역 프롬프트를 알차게 써먹었죠.





A real-time chat translation session

실시간 채팅 번역 세션을 시작합니다.  


When you translate from Korean to English, please write in universally understandable English that can be easily comprehended by non-native English speakers.


-> 이것은 다른 사람에게 보내는 문장입니다.  

('->'  This symbol indicates the sending sentences. Please translate every sentence following this symbol into English.)


<- This indicates a sentence received from the other person

('<-' 이 기호는 내가 받은 문장을 뜻합니다. 이 기호 뒤에 오는 말은 모두 한국어로 번역해주기 바랍니다.)

And if the received sentence contains connotations, abbreviations, jargon, or slang, please provide additional explanations in the Note below.

Note: 여기에 Connotations, abbreviations, jargon or slang에 대해 한국어로 설명해주세요.  

(Caution! Do not add a Note to the sending sentences)


The actual chat translation sessions will proceed as follows;

-----------------------------------------------------------

<- In order to attend the event, you need to respond to the RSVP. Would you like me to send you the RSVP response link?

<- 이벤트에 참석하려면 RSVP에 응답해야 합니다. RSVP 응답 링크를 보내드릴까요?

Note:  RSVP는 "Répondez s'il vous plaît"의 약자로, 프랑스어로 "답장해 주세요"라는 뜻입니다. 초대에 대한 응답을 요구할 때 사용하는 용어입니다.


-> 저는 행사에 무단으로 참석할 예정입니다 LOL  

-> I'm planning to attend the event without permission LOL.

-----------------------------------------------------------

준비가 되었다면, Ready 라고 답해주세요.




참고: 위의 프롬프트는 GPT4 기준으로 작성했습니다. 동일한 프롬프트로 GPT 3.5에서 목적하는 내용이 상당 부분 작동하지만, Note 부분 제어나, 세션 내 맥락 학습을 통한 제어는 거의 GPT4에서만 작동합니다. 물론 프롬프트 내의 as follows 이하의 예시는 본 게시물에서 작성한 사례로 이해를 돕기 위한 것이고, 형식을 동일하게 한 상태에서 해당 예시를 자신이 사용하는 맥락에 맞게 수정하시면 더 결과가 좋아집니다.


위의 프롬프트는 크리에이티브 커먼즈 'CC BY' 라이선스로 누구든 복사하여 하셔도 됩니다.

(출처 표기만 한다면 영리 활용, 변경, 재창작에 제한 없음)  

출처 표기: by 탄트의 실험실(https://brunch.co.kr/magazine/tantlab) under CC BY





프롬프트는 '쌓아가는 것'이라는 점을 잊지 마세요.

이런 프롬프트 하나의 효력이 대단히 중요하다기보다는, 제가 생각하기에 프롬프트 디자인에 익숙해지는 최대 매력은 '쌓아가는 재미'인 것 같습니다. 위에도 '프롬프트 자산화'라는 표현을 썼는데요, 처음 ChatGPT를 접하는 분들을 보면 놀라움과 실망 양쪽 모두, 특정 프롬프트 하나의 산출물에 대해 놀라거나 또 실망하는 쪽인 경우가 많은 것 같아요. 하지만 디지털 도구, 특히 생산성 도구의 힘은 그 예전 에버노트나 노션부터 마찬가지였지만, 결국 활용법의 습관과 축적에서 나온다는 공통점이 있는 것 같습니다.


저는 몇 가지 제 업무에 관하여 약 40개 정도 프롬프트를 관리하고 있는데요, 평소에 작업과 노하우를 노트에 누적해두고, 필요할 때마다 손쉽게 재현해서 꺼내쓰면서 차곡차곡 저축하듯 생산성이 향상되는 것을 느낍니다. 아카이브와 버전 관리가 물론 중요하겠죠!


여러분도 위의 프롬프트에 맥락과 조건을 추가하면서, 여러분의 사용 목적에 최적화된 ChatGPT 실시간 채팅 번역기를 만들어보세요!





글쓴이 소개: 서기슬(탄트)

'탄트'는 제가 회사에서 동료들과 소통할 때에 쓰는 닉네임입니다. Constacts, Inc.의 Co-founder이자 CEO로서 진정성 있는 소통과 신뢰도 있는 관계의 문제를 풀기 위한 소셜 미디어 서비스를 만들고 있습니다. 온라인에 IT 서비스와 대중문화 등에 대한 다양한 에세이를 써왔는데요, '탄트의 실험실' 매거진은 스타트업 대표이자 또한 데이터 사이언티스트로서 일하고 연구하며 소소하게 깨닫은 인사이트를 공유하기 위해 쓰기 시작했습니다.

https://brunch.co.kr/magazine/constacts-life









브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari