더 나은 고객 응대 AI 대화를 위한 다섯 가지 패턴

프로덕션에서 검증된 다섯 가지 대화 설계 패턴으로 고객 응대 AI 에이전트가 더 명확하고 효과적으로 대화하도록 지원합니다.

핵심 요약

  • 대부분의 프롬프트 엔지니어링은 정확성과 지침의 포괄성에 초점을 맞춘다. 프로덕션 환경에서 가장 큰 개선은 대화 자체를 핵심 설계 과제로 다룰 때 얻을 수 있다.

  • 계기와 행동을 짝지은 의도를 명시하면 모델이 벗어날 수 없는 대본을 주는 대신 판단하는 방법을 안내할 수 있다. 프롬프트에서 내용이 놓이는 위치 자체가 하나의 지침이다. 정체성은 처음에, 행동의 세부 뉘앙스는 중간에, 엄격한 제약은 마지막에 두며, 정말 중요한 내용은 처음과 끝에 모두 둔다.

  • 목표 말투를 설명하는 대신 그 말투로 프롬프트를 작성하는 것은 가장 효과적인 개선 방법 중 하나다.

  • 가장 일관된 에이전트의 프롬프트는 대화의 각 순간을 저마다 적절한 형식이 필요한 별개의 상호작용으로 다루면서도, 전체적으로 같은 말투임을 분명히 느낄 수 있게 한다.

  • 경우에 따라 사고하는 에이전트와 말하는 에이전트를 분리하면 더 일관되고 근거 있는 응답을 만들고 내부 추론이 답변에 드러나는 것을 막을 수 있다.

앞서 언어학과 인지심리학 분야의 통찰을 바탕으로 한 새로운 프롬프팅 패러다임을 소개했다. 에이전트가 활동할 수 있는 명확하고 경계가 분명한 문제 공간을 만드는 것이 왜 중요한지, 그리고 그 문제 공간에 고객 응대 AI가 본질적으로 수행하는 대화라는 메타 과업을 어떻게 담아야 하는지 설명했다.

이제 이러한 원칙을 프로덕션에 적용하면서 프롬프트가 실질적으로 어떻게 달라졌는지 살펴보겠다.

실제 고객 응대 시스템에서 수백 차례 프롬프트를 개선한 결과, 가장 큰 성과는 지침을 더하거나 예시를 쌓거나 전형적인 프롬프트 엔지니어링 관행을 따르는 데서 나오지 않았다. 대신 대화를 문제의 중심으로 받아들였을 때 얻을 수 있었다.

지속적인 탐색과 테스트를 통해 여러 효과적인 기법이 나타났다. 프롬프트를 바꾸고 대화가 성공하거나 실패하는 지점을 관찰한 뒤, 실패 원인을 지침의 효과와 프롬프트 구조, 언어 사용 방식에서 추적했다. 그 결과 에이전트가 대화 속 자신의 역할을 해석하고 다음 행동을 결정하며, 변화하는 맥락에서도 일관된 말투를 유지하는 방식을 개선하는 몇 가지 반복 가능한 패턴을 얻었다.

이어지는 내용은 보편적인 프레임워크도, 프롬프팅 문제가 이제 ‘해결되었다’는 주장도 아니다. 기능적 정확성을 넘어 더 나은 대화, 즉 브랜드를 대표할 만큼 일관되고 자연스러우며 앞뒤가 맞는 응답을 목표로 했을 때 프로덕션에서 효과가 입증된 내용을 다섯 가지 패턴으로 정리한 것이다.

사고와 발화 분리하기

에이전트 시스템을 구성하는 방법은 다양하지만, 여러 에이전트를 오케스트레이션하는 워크플로는 여전히 널리 쓰인다. 특히 이러한 시스템에서 가장 일관된 개선 효과를 낸 방법은 사고하는 에이전트와 말하는 에이전트를 분리하는 것이었다.

의도 오케스트레이션, 분류, 지식 추출, 도구 사용은 모두 내부 처리 작업이다. 고객에게 전달되는 응답은 대외 응대 영역에 속한다. 같은 에이전트가 한 차례의 응답에서 두 작업을 모두 수행하면 내부 추론과 논리가 답변에 드러날 수 있다. 응답은 단정하지 못하고 지나치게 많은 조건을 달거나, 사용자의 필요가 아닌 처리 과정의 논리에 맞춰 구성된다.

멀티 에이전트 시스템에서 고객 응대 영역과 내부 처리 영역의 관계

고객 응대용 발화 계층과 사고 계층을 분리하고, 대외 대화를 내부 추론 및 도구와 연결한 다이어그램.

이 단 하나의 제약만으로도 놀라울 만큼 많은 효과를 얻을 수 있다. 응답이 실제 대화에 뿌리를 두게 하고, 맥락이 초기화되는 것을 막으며, 우리가 ‘델타 전달’이라고 부르는 방식에 가까운 결과를 만든다. 결국 에이전트는 사용자가 실질적으로 나아가는 데 필요한 최소한의 새로운 정보만 더한다.

어떤 유형의 응답을 내놓을지 결정하는 것도 중요하다. 말하는 에이전트가 글을 쓰기 전에 답변, 명확화, 방향 전환, 대기 중 하나의 행동 유형을 선택하게 하자 가장 흔한 대화 실패가 확실히 줄었다. 문제는 서투른 문장이 아니라 완전히 잘못된 응답을 내놓는 것이었다.

다만 최신 프런티어 모델은 적절한 조건에서 이 패턴의 전제 자체를 흔들기 시작했다는 점에 주목할 필요가 있다. 그럼에도 여러 이유로 여전히 더 작거나 오래된 모델을 사용하는 개발자가 많다. 이런 경우에는 내부 처리 영역과 고객 응대 영역을 분리할 것을 적극 권장한다.

예시보다 실행 의도를 활용하기

추론 모델이 아닌 경우 퓨샷 예시는 구체적이고 빠르게 적용할 수 있으며 모델도 잘 반응하기 때문에 효과적이다. 문제는 과적합이다. 모델에 예시를 주면 단어와 리듬, 형식에 집착해 상황이 달라져도 같은 응답의 변형을 계속 만들어 낸다.

의도치 않게 모델이 벗어날 수 없는 대본을 써 준 셈이다.

실행 의도나 휴리스틱은 더 오래가는 대안이다. 특정 상황에서 무엇을 말할지 모델에 보여 주는 대신*,* 더 포괄적인 계기와 행동의 조합을 제시한다. 즉, if X happens, do Y.

핵심적인 차이는 예시를 하나씩 추가하며 X와 Y의 범위를 좁혀 점점 경직되게 만드는 대신, 예시가 필요 없을 만큼 정밀한 지침으로 각각의 경계를 명확히 설정한다는 데 있다. 그러면 에이전트는 템플릿의 패턴을 그대로 따르지 않고 실제 대화의 변화에 유연하게 반응할 수 있다.

실제로는 예시보다 다음과 같은 실행 가능한 경험칙에 가깝다.

  • 핵심 정보가 빠져 있으면 명확화 질문을 하나만 한다.

  • 답변에 근거가 없으면 그 사실을 직접 말하고 취할 수 있는 최선의 다음 단계를 제시한다.

  • 요청이 가드레일에 걸리면 짧게 거절하고 군더더기 없이 방향을 전환한다.

화려한 방법은 아니지만, 무엇을 반복할지가 아니라 어떻게 판단할지를 모델에 가르치므로 예시 응답 모음보다 훨씬 견고하다.

위치 자체를 지침으로 활용하기

프롬프트에서 내용이 놓이는 위치는 그 내용에 실리는 비중을 좌우한다. 이는 여러 모델과 배포 환경에서 일관되게 관찰한 패턴이다. 프롬프트의 시작과 끝은 유난히 눈에 잘 띈다. 중간에는 미묘한 세부 사항이 놓이며, 바로 그 자리가 가장 적절하다.

우리는 이를 고려해 프롬프트를 구성한다. 에이전트의 역할과 자아 인식은 맨 위에 둔다. 무엇보다 먼저 정체성을 확립하기 위해서다. 중간에는 대화가 전개될 가능성이 높은 방식, 응답을 이끄는 휴리스틱, 에이전트가 처리해야 할 다양한 상황 등 행동에 관한 세부 사항을 둔다. 엄격한 제약과 타협할 수 없는 조건은 맨 아래에 두어 가장 최근에 접한 내용으로 남긴다.

정말 중요한 내용은 시작과 끝에 모두 넣는다. 문장 부호나 형식에 관한 엄격한 지침처럼 구체적인 출력 규칙은 빽빽한 프롬프트 중간에 한 번만 등장하면 쉽게 묻힐 수 있다. 끝에서 반복하면 제대로 유지된다.

최신성 효과와 관련해 주목할 점은 구조화된 출력값을 사용할 경우 이것이 사실상 프롬프트의 맨 마지막 지침이 된다는 것이다. 구조화된 출력값의 설명 필드는 응답의 질에 영향을 미치며, 프롬프트의 나머지 부분보다 더 강력한 출력 계약을 형성한다.

고객 응대용 프롬프트의 구성(프롬프트가 100토큰이라면)

초두 효과부터 최신성 효과까지 역할 설정, 페르소나, 과업 설정, 응답 엔진, 예외 처리, 경계, 출력 계약을 보여 주는 색상별 프롬프트 구조 표.

프롬프트 자체를 예시로 삼기

말투를 정할 때도 퓨샷 예시를 사용하지 않는 편이 낫다는 사실을 알게 되었고, 이는 고객 응대 에이전트를 개선한 가장 효과적인 변화 중 하나였다.

대신 프롬프트 전체를 목표로 하는 말투로 작성한다. 말투에 대한 설명이나 비슷한 느낌을 나타내는 형용사의 나열이 아니라, 첫 줄부터 마지막 줄까지 완전한 문장으로 실제 말투를 구현한다. 즉, 프롬프트 자체가 예시가 되는 것이다. 이러한 방식을 ‘안티스크립트니스(anti-scriptness)’라고 부른다. 모델이 입력된 프롬프트를 모방하도록 유도하면서도, 프롬프트와 비슷한 범위 안에서 더욱 다양하고 폭넓은 언어와 표현을 사용할 수 있도록 하는 것이다.

이러한 방식으로 일관된 말투를 유지하면서도 다양한 표현을 이끌어 낸다. 이는 명시적인 지침을 최소화하면서 모든 에이전트의 작업에서 대화를 핵심에 두기 위한 전략의 일부다.

말투에 관한 명시적인 예시를 사용한다면, ‘하지 말아야 할 것’을 보여주는 예시를 사용한다. 예를 들면 '엠 대시(em dash)는 절대 사용하지 않는다. 상투적인 표현을 사용하지 않는다. 정책 내용을 한꺼번에 늘어놓지 않는다. 한 문장으로 충분히 설명할 수 있는 내용을 지나치게 길게 설명하지 않는다.'와 같은 식이다. 부정형 제약 조건은 모델이 빠지기 쉬운 오류 유형을 구체적으로 짚어 주기 때문에, 긍정적인 지향점을 제시하는 것보다 더 정확하면서도 제약은 덜하다.

여기서는 형식도 중요하며 응답의 분위기를 좌우한다. 글머리 기호, 제목, 괄호로 묶인 지침이 가득한 프롬프트는 모델이 보다 체계적이고 딱딱한 응답을 생성하도록 유도한다. 대화처럼 자연스럽게 느껴지는 결과물을 원한다면, 입력 역시 축약된 사양 문서처럼 보여서는 안 된다.

개성보다 중요한 것은 상황에 맞는 격식

말투를 위한 프롬프팅은 대부분 개성을 설명하는 데 그친다. 에이전트가 어떤 말투를 써야 하는지 형용사 몇 개로 설명하는 식이다. 따뜻하게. 전문적으로. 친절하되 간결하게. 이런 표현이 틀린 것은 아니다. 하지만 대화에서 말투가 실제로 어떻게 받아들여지는지를 좌우하는 것은 격식과 어조다. 즉, 동일한 기본 성격이 서로 다른 사회적 상황에서 어떻게 행동하는지가 중요하다.

질의를 처리하는 동안 보내는 대기 메시지가 최종 답변처럼 들려서는 안 된다. 가드레일 응답이 가벼운 잡담과 같은 분위기를 띠어서도 안 된다. 불만을 느끼는 고객에게 가볍게 둘러보는 고객과 똑같은 수준의 재치나 유머를 보여서는 안 된다.

하나의 프롬프트, 서로 다른 격식, 예시는 불필요

유해한 입력, 주제에서 벗어난 요청, 모호한 입력, 프롬프트 인젝션에 대한 응답 패턴과 거절 또는 명확화 표현의 예시를 보여 주는 사분면 다이어그램.

이것이 브랜드 보이스와 대화 설계의 차이다. 브랜드 보이스가 주로 성격을 설명한다면, 대화 설계는 상황이 바뀔 때 그 성격이 어떻게 드러날지를 결정한다. 이를 제대로 구현하려면 단순히 AI 출력 문구를 작성하는 카피라이터에 머물러서는 안 된다. 우리는 대화의 흐름에 따라 말투가 어떻게 달라질지를 설계한다.

대화 중심 프롬프팅

이러한 패턴 중 기술적으로 복잡한 것은 하나도 없다는 점을 알 수 있다. 바로 그것이 핵심이기도 하다. 에이전트 시스템의 아키텍처도 중요하지만, 대화 품질을 높이려면 프롬프트를 설계하고 다듬는 데 상당한 시간을 들여야 한다.

단순히 기능만 수행하는 AI와 진정으로 대화하는 AI의 격차는 기술 설계만으로 좁힐 수 없다. 인간의 대화에서 언어와 주의가 어떻게 작동하는지 더 명확히 이해하고, 에이전트가 풀어야 할 문제의 중심에 대화를 놓아야 한다.

AI 제품팀과 엔지니어, 경험 디자이너는 고객 응대 AI의 대화 설계에도 기술적 완성도와 같은 수준의 엄밀함을 적용해야 한다. 대화 상대에게는 모델도, 멀티 에이전트 협업도, 도구 호출도 보이지 않는다. 그저 자연스럽게 느껴지거나 그렇지 않은 상호작용만 있을 뿐이다. 그 상호작용은 신뢰를 쌓기도 하고 무너뜨리기도 한다.

결국 사용자가 경험하는 것은 아키텍처가 아니다. 사용자는 대화를 경험한다.

대화가 곧 제품이다.

작성자

Douglas Smith 및 Sam Netherwood