대화형 AI 시스템 프롬프트 작성법
- 작성자
- Cindy Liu
- 게시일
- 최종 업데이트
오늘날 LLM은 대화형 AI 시스템의 핵심으로 자리 잡았습니다. 특히 LLM은 대화형 AI — 원래 복잡한 전화 안내 트리를 중심으로 구축된 — 에 동적인 기능을 더하고 사람과 같은 경험을 제공할 수 있게 합니다. 하지만 LLM이 만능 업그레이드인 것은 아닙니다. 기본적으로 사람의 말에 맞춰 파인튜닝되지 않았기 때문에 특화된 프롬프팅이 필요합니다.
개발자가 대화형 AI용으로 LLM을 프롬프팅할 때 흔히 하는 실수는 사람 직원 교육에 쓰던 방식을 그대로 재활용하는 것입니다. 직관적으로 들릴 수 있지만, 이 전략은 좀처럼 효과를 내지 못합니다. LLM은 일반적인 사람과 다른 가정을 하며, 기본 말투와 범위도 음성 상호작용에 적합하지 않습니다.
이 글에서는 성공적인 대화형 AI 시스템을 구축하기 위해 LLM을 프롬프팅하는 방법에 대해 알아보겠습니다. 이 주제를 더 포괄적이고 기술적으로 다룬 가이드는 ElevenLabs 개발자 문서에서 확인할 수 있습니다.
기존 시스템
LLM 이전의 대화형 AI 시스템은 음성 입력에 따라 요청을 분류하는 복잡한 로직 트리를 활용했습니다. 이러한 방식은 고객 서비스 전화번호(예: 항공사 핫라인)와 결제 시스템(예: 신용카드 전화 서비스)에서 널리 쓰였습니다.
이전 시스템은 느리고 로봇처럼 느껴졌으며, 사람이 입력할 수 있는 내용도 매우 제한적이었습니다. 안내에 답하려고 전화기에 대고 “예”라고 단호하게 외친 경험이 있을 수도 있습니다. 이런 불편한 경험 때문에 대부분의 사용자는 실제 상담원과 연결되기 위해 “시스템을 이기려” 했습니다.
하지만 이 전화 안내 트리에는 장점도 있었습니다. 범위가 제한되어 있었다는 점입니다. 대화가 진행될 수 있는 경로는 한정되어 있었고, 개발자는 허용되지 않은 입력을 무시하는 가드레일을 쉽게 구현할 수 있었습니다. 이러한 제약은 LLM의 장단점을 뒷받침합니다. LLM은 전화 안내 트리의 제한된 특성을 크게 뛰어넘지만, 예측하기 어렵고 실현 불가능한 약속을 하거나 고객에게 화를 내고 민감한 데이터를 유출하는 등의 위험으로 가득한 판도라의 상자를 열 수 있습니다.
기본 설정의 격차
LLM을 단순히 사람을 위해 원래 설계된 매뉴얼로 학습시키면, 몇 가지 핵심적인 격차 때문에 성과가 평범할 수 있습니다. 이러한 격차를 이해하면 이를 해결하는 프롬프트를 설계하는 데 도움이 됩니다.
말투 불일치
LLM은 사람의 피드백이 구조화된 응답을 생성하도록 유도하는 강화 학습을 통해 훈련됩니다. 특히 LLM의 응답은 장황하고 글머리 기호, 강조 블록, 제목으로 가득한 경향이 있습니다.
하지만 대화형 AI 환경에서 LLM은 간결하고 평이한 음성 상호작용의 특성을 따라야 합니다.
가정의 격차
LLM은 질문하는 대신 추론한 지식으로 모르는 부분을 채우는 경향이 있습니다. 이로 인해 사용자를 오도하는 잘못된 가정을 하거나, 비용이 큰 실수(예: 환불 약속)를 저지를 수 있습니다. 뒤에서 지식 베이스와 가드레일을 활용해 LLM이 잘못된 약속을 하거나 허용되지 않은 작업을 실행하지 않도록 더 효과적으로 제한하는 방법을 살펴보겠습니다.
지연 시간
LLM은 프로그래밍 방식으로 함수 호출을 실행하여 사람을 대신해 데이터를 수집하고 작성할 수 있습니다. 이는 일반적으로 LLM의 가장 큰 장점 중 하나이지만, 통화 상담원이 작업을 수행하는 동안 “시간을 벌도록” 하던 기존 교육 지침이 더 이상 필요하지 않다는 의미이기도 합니다. 그렇다고 함수 호출이 즉시 완료되는 것은 아니므로, 지연이 예상될 때마다 LLM은 사용자에게 이를 정확히 미리 알려야 합니다(예: “사안을 확인할 시간을 잠시 주시겠어요?”).
구성
성격
LLM은 특정 스타일에 맞춰 말투를 조정하는 데 꽤 능숙합니다. LLM은 친근하고, 유머러스하고, 간결하거나, 격식 있게, 또는 여러 스타일을 조합한 방식으로 설정할 수 있습니다. 이는 LLM을 프롬프팅할 때 중요한 입력값입니다.
예를 들어, 불만을 품은 항공사 고객을 지원하도록 설계된 고객 서비스 대화형 AI 애플리케이션의 개발자는 다음과 같은 프롬프트를 사용할 수 있습니다.
Nicole
형식
LLM에는 응답 방식에 관한 명확한 지침을 제공해야 합니다. 불필요한 군더더기 텍스트를 포함하지 않도록, 사용자에게 전달할 응답을 담는 구조를 LLM에 제공해야 합니다.
예를 들어 LLM에 다음과 같이 프롬프팅할 수 있습니다.
이러한 구조는 LLM이 소리 내어 읽도록 설계된 응답을 제공하도록 유도합니다.
하지만 LLM은 서면 콘텐츠와 직관적으로 다르지 않아 보이는 요소에서 간혹 실수할 수 있습니다. 대표적인 예가 숫자입니다. LLM이 10023과 같은 우편번호를 출력하면 텍스트 음성 변환 모델이 이를 “만 이십삼”이라고 읽을 수 있습니다. 대신 LLM이 숫자를 하나씩 읽고 그 숫자가 무엇을 의미하는지 알려 주도록 명시적으로 프롬프팅해야 합니다. 예: “우편번호는 일 영 영 이 삼입니다.”
온도
온도는 대화형 AI용 LLM을 구성할 때 중요한 파라미터입니다. 온도가 낮으면 작업 중심 대화에 적합한 더 집중적이고 결정론적인 응답이 생성되며, 온도가 높으면 더 창의적이고 다양한 응답이 생성됩니다.
낮은 온도는 일관된 응답이 필요한 대화형 AI 시스템(예: 환불 고객 서비스 라인)에 적합합니다. 반면 고객에게 더 몰입감 있고 현실적인 느낌을 제공하려는 시스템(예: 디지털 코치)에는 높은 온도가 더 적합합니다.
High Temperature: Hey hey! You've landed at ElevenLabs support—ready to tackle your tech troubles! What's on your mind?
지식 베이스
더 큰 지식 저장소를 활용하는 대화형 AI 시스템에서는 프롬프트 길이를 줄이기 위해 지식 베이스를 활용해야 합니다. 프로덕션 환경에서는 일반적으로 벡터 데이터베이스(Pinecone 또는 Elasticsearch 등)나 LLM 제공업체의 직접 지식 저장소를 통해 이를 구현합니다.
일반적으로 지식 베이스는 LLM의 응답을 사실에 기반하고 승인된 정보에 근거하도록 하는 데 필수적입니다. 대화형 AI 시스템을 구축할 때는 제품, 서비스, 정책 및 절차에 대한 정확하고 최신의 정보를 담은 포괄적인 지식 베이스를 LLM에 제공해야 합니다. 이렇게 하면 LLM이 환각을 일으키거나 정보를 지어내는 것을 방지하고, 대화 전반에서 일관되고 신뢰할 수 있는 응답을 유도할 수 있습니다.
프로세스
LLM은 사용자를 대신해 함수를 호출하는 경우가 많기 때문에, 어떤 입력값이 명시적으로 필요한지도 알아야 합니다. 예를 들어 LLM이 사용자의 미용실 예약을 돕는 역할이라면, 다음 정보를 확보해야 합니다.
- 사용자 이름
- 희망 날짜 및 시간
- 사용자 주소
- 사용자의 서비스 선호도
단순하게 구현하면 LLM이 한 번의 대화 차례에서 모든 정보를 요청할 수 있습니다. 텍스트로는 전혀 문제가 없지만, 대화에서는 부담스러울 수 있습니다.
Customer: My name is Mathew and anytime Wednesday afternoon works. What else did you ask for?
정보는 보통 대화를 통해 점진적으로 수집되므로, LLM이 이 정보를 조금씩 수집하도록 유도해야 합니다. 그러면 훨씬 더 자연스러운 대화 경험을 만들 수 있습니다.
Customer: My name is Mathew Pregasen.
Support Agent: Thanks Mathew. When would you like to make an appointment?
Customer: Anytime on Wednesday afternoon works fine.
Support Agent: Great. Now can I get your address to find the nearest location?
Customer: 555 West Main Street
Support Agent: Perfect. Now what service are you look for?
Customer: I'm looking for a haircut and if you could also do my beard that would be great!
가드레일
권한
분산 시스템을 구축할 때는 언젠가 서버가 장애를 일으킬 것이라고 가정합니다. 마찬가지로 AI 시스템을 구축할 때는 언젠가 LLM이 실수할 것이라고 가정해야 합니다. 그 실수의 영향 범위를 최소화하려면, 시스템에 현재 작업에 필요한 최소한의 권한만 부여해야 합니다. 다음은 이를 실천할 수 있는 몇 가지 방법입니다.
- 읽기/쓰기 권한을 올바르게 설정하세요. LLM이 데이터 소스에서 정보를 읽기만 하면 된다면, 읽기 전용 엔드포인트를 제공해야 합니다.
- API 엔드포인트 접근을 제한하세요. LLM이 특정 엔드포인트에만 접근하면 된다면, 다른 엔드포인트에는 접근할 수 없도록 해야 합니다.
- 휴먼 인 더 루프 에스컬레이션: 고위험 작업을 수행해야 한다면, 작업을 실행하기 전에 “관리자 승인”을 요구하는 휴먼 인 더 루프 워크플로를 고려하세요.
검증 및 확인
대화형 AI 음성 에이전트 시스템을 구축해 도구 사용을 통해 작업을 수행할 때는, 사용자로부터 올바른 정보를 수집하고 있는지 확인하는 검증 및 확인 프로세스를 마련하는 것이 좋습니다. 오늘날 사람 상담원과 통화하면, 상담원은 정확히 들었는지와 고객이 잘못 말하지 않았는지를 확인하기 위해 제공한 중요한 정보를 반복해서 말합니다. LLM도 비슷한 수준의 오류 검사가 도움이 될 수 있습니다.
Customer: 555 West Main Street
Support Agent: I got five five five west main street. Did I miss anything?
검증을 위해 고객에게서 받은 모든 정보는 해당 정보의 일반적인 형식과 대조해 확인해야 합니다. 전화번호의 자릿수가 올바른가요? 고객이 말한 나이가 합리적인 범위에 있나요? 고객이 유효한 주소를 제공했나요?
Customer: 317-798-97289
Support Agent: I think I might have misheard you. I heard 11 numbers. Would you mind repeating that again?
사용 사례에 따라 수신한 모든 정보를 검증하거나, 검증에 실패한 정보만 확인할 수 있습니다. 또한 정보가 들어올 때마다 각각 확인할지, 마지막에 모든 정보를 확인할지도 결정할 수 있습니다.
마무리
대화형 AI 에이전트 시스템을 성공적으로 프롬프팅하려면, 더 높은 효율로 사람과 대화하는 듯한 경험을 만들 수 있도록 적절한 구성과 가드레일의 균형을 맞춰야 합니다. 기존 교육 자료로 LLM을 프롬프팅하는 것만큼 단순한 과정은 아닙니다. LLM은 예측 가능하고 효과적인 결과를 만들기 위해 특화된 구조와 전략이 필요한 도구입니다.


