Copilot Studio를 사용하면 고객과 여러 언어로 소통하는 다국어 에이전트를 만들 수 있습니다. 다국어 에이전트는 사용자의 웹 브라우저 설정을 기반으로 원하는 언어를 자동으로 감지하고 동일한 언어로 응답하여 고객에게 더욱 개인화되고 몰입감 있는 경험을 제공합니다.
에이전트를 만들 때 기본 언어를 지정합니다.
에이전트에 보조 언어를 추가한 후에는 직접 생성한 토픽 내 메시지의 번역을 제공해야 합니다. 생성형 오케스트레이션을 활용하는 에이전트의 경우, 생성된 메시지는 자동으로 번역됩니다.
고객이 게시된 에이전트와 세션을 시작하면, 에이전트는 고객의 클라이언트 또는 브라우저에서 지정한 언어에 맞는 언어를 자동으로 선택합니다. 에이전트가 언어를 감지하지 못하거나 지원하지 않는 언어를 감지하면, 기본 언어가 자동으로 적용됩니다.
에이전트가 대화 중 사용하는 언어를 변경하도록 설계할 수 있습니다(에이전트가 다른 언어로 전환하도록 만들기 참고). 또한 생성형 오케스트레이션을 사용하여 현재 대화 차례에서 사용된 언어에 맞춰 동적으로 언어를 전환하는 에이전트를 설정할 수도 있습니다(동적 언어 전환을 위한 에이전트 설정 참조).
지원되는 언어 목록은 언어 지원을 참조하세요.
참고
클래식 챗봇은 한 가지 언어만 지원합니다. 클래식 챗봇을 에이전트로 변환하는 방법에 대한 자세한 내용은 Copilot Studio 통합 작성으로 업그레이드를 참조하세요.
에이전트에 언어 추가
에이전트의 설정 페이지로 이동하여 언어를 선택합니다.
언어 추가를 선택합니다.
언어 추가 패널에서 에이전트에 추가할 언어를 선택한 후, 추가를 선택합니다.
언어 목록을 검토하고 설정 페이지를 닫으세요.
다국어 에이전트의 지역화 관리
Copilot Studio에서는 모든 토픽과 콘텐츠를 에이전트의 기본 언어로 편집합니다. 이 섹션에서는 에이전트에서 문자열을 다운로드하고 에이전트의 보조 언어로 번역하는 방법을 설명합니다. 번역된 문자열을 업로드한 후에는 테스트 패널에서 언어를 전환하고, 보조 언어의 대화도 예상대로 진행되는지 확인할 수 있습니다.
현지화된 콘텐츠 준비
보조 언어에 대한 지역화 파일을 처음 다운로드하면 모든 문자열이 에이전트의 기본 언어로 작성되어 있습니다. 지역화 파일을 다운로드한 후 원하는 지역화 프로세스와 함께 사용합니다.
에이전트의 설정 페이지로 이동하여 언어를 선택합니다.
언어 페이지의 보조 언어 목록에서 업데이트하려는 언어에 대해 업로드를 선택합니다.
지역화 업데이트 패널에서 JSON 또는 ResX 형식을 선택하여 해당 언어에 대한 현재 지역화 파일을 다운로드합니다.
참고
다운로드한 파일에는 에이전트에 대한 최신 현지화 콘텐츠가 포함되어 있습니다. 이전 버전의 현지화 파일을 다운로드하려면 에이전트의 솔루션을 엽니다.
다운로드한 파일을 열고 기본 언어 문자열을 적절하게 번역된 텍스트로 바꿉니다.
지역화 업데이트 패널로 돌아가서 찾아보기를 선택하고 번역된 파일을 업로드합니다.
지역화 업데이트 패널과 설정 페이지를 닫으세요.
지역화된 콘텐츠 업데이트
기본 언어 문자열을 변경하면 보조 언어의 콘텐츠를 반드시 업데이트해야 합니다. 이 프로세스에는 새 콘텐츠와 수정된 콘텐츠가 모두 포함됩니다. 증분 변경사항은 자동으로 번역되지 않습니다. 보조 언어의 JSON 또는 ResX 파일을 다운로드한 후, 번역되지 않은 문자열을 원하는 지역화 프로세스를 사용하여 업데이트해야 합니다.
다음 시나리오는 번역된 콘텐츠에 대한 일반적인 워크플로입니다. 이전에 기본 언어(en-US)를 보조 언어(fr-FR)로 번역했으며 기본 언어로 콘텐츠를 추가 및 수정했습니다. 보조 언어의 지역화 파일을 다운로드하면, 신규 문자열은 기본 언어(en-US)로 되어 있고, 이전에 번역된 문자열은 보조 언어(fr-FR)로 유지됩니다. 그러나 원본 텍스트가 마지막으로 지역화 파일을 업로드한 이후에 수정된 경우, 이전에 번역된 문자열은 보조 언어로 마지막 번역된 상태 그대로 남아 있습니다. 문자열 ID가 변경되지 않기 때문에, 기본 언어에서 변경이 발생하면 보조 언어 문자열과 기본 언어 문자열이 불일치할 수 있습니다. 새로운 지역화 파일을 마지막으로 업로드한 버전과 비교하여 기본 언어 문자열의 변경 사항을 확인하는 절차를 지역화 과정에 포함해야 합니다.
적응형 카드의 동적 콘텐츠를 현지화에 활용할 수 있도록 하세요
지역화 파일에는 적응형 카드의 혼합 형식 문자열이 포함되지 않습니다. 적응형 카드에서 정적 텍스트와 변수(동적 콘텐츠)가 모두 포함된 문자열을 현지화해야 하는 경우, 다음 우회 방법을 사용하세요. 이 절차에서는 텍스트 변수 설정 노드를 사용하여 정적 텍스트와 변수가 포함된 전체 문자열을 중간 변수에 저장하는 방법을 보여줍니다. 그 다음 적응형 카드에서 중간 변수만 참조하면 됩니다. 에이전트의 지역화 파일을 다운로드하면, 정적 텍스트와 변수 참조를 포함한 중간 변수의 값이 setVariable 작업의 일부로 지역화에 사용할 수 있습니다.
적응형 카드의 동적 콘텐츠를 지역화할 수 있도록 하려면:
적응형 카드 앞에 변수 값 설정 노드를 삽입합니다. 이 단계에서는 YAML 표현이 생성되며, 코드 편집기를 사용하여 노드를 텍스트 변수 설정 노드로 변환하여 업데이트할 수 있습니다. 제작 캔버스에서 직접 텍스트 변수 설정 노드를 생성할 수 없습니다.
변수 값 설정 노드에서 새 변수를 만들되 아직 값을 설정하지 마세요.
토픽의 코드 편집기를 엽니다.
코드 편집기에서 변수 값 설정 노드를 나타내는 부분을 찾아
kind: SetVariable을kind: SetTextVariable로 변경하세요. 이 변경을 통해 변수 값 설정 노드가 텍스트 변수 설정 노드로 변환됩니다.코드 편집기를 닫습니다.
텍스트 변수 설정 노드의 하단 필드를 선택하고, 적응형 카드에 표시하고 싶은 정적 텍스트와 변수가 포함된 전체 문자열을 입력하세요. 메시지에서 변수를 삽입하는 것과 동일한 방식으로 변수를 삽입하세요.
이 새로운 변수를 참조하여 적응형 카드를 업데이트하세요.
토픽을 저장합니다. 이제 지역화 파일을 다운로드하여 적응형 카드의 동적 콘텐츠가 포함되어 있는지 확인할 수 있습니다.
자세한 내용은 적응형 카드 콘텐츠 지역화에서 확인하세요.
다국어 에이전트 테스트
테스트 패널을 엽니다.
테스트 패널 상단의 점 세 개(…)를 선택하고 원하는 언어를 선택하세요. 테스트 패널이 선택한 언어로 자동으로 다시 로드됩니다. 제작 캔버스는 기본 언어로 유지되며, 토픽에 변경한 내용을 저장하려면 기본 언어로 다시 전환해야 합니다.
에이전트를 테스트하려면 선택한 언어로 메시지를 입력합니다.
또한 브라우저 언어를 에이전트의 언어 중 하나로 설정하고, 사전 빌드된 데모 웹사이트에 접속할 수도 있습니다. 데모 웹사이트는 지정된 언어로 열리고, 에이전트는 그 언어로 채팅을 합니다.
에이전트 언어 전환하기
에이전트 제작 시, 대화 중에 다른 언어로 전환하도록 에이전트를 설정할 수 있습니다. 로직은 에이전트의 어떤 토픽에도 구현할 수 있습니다. 그러나 가장 좋은 방법은 질문 노드 바로 다음에 언어를 전환하는 것입니다. 이렇게 하면 다음 질문 노드까지 모든 메시지가 동일한 언어로 표시됩니다.
에이전트의 보조 언어 중 하나로 User.Language시스템 변수를 설정하세요. 이 옵션을 선택하면 에이전트에서 사용하는 언어가 즉시 변경됩니다.
동적 언어 전환 에이전트 설정
참고
이 기능은 생성형 오케스트레이션이 켜져 있는 에이전트에서만 사용할 수 있습니다.
고객이 사용하는 언어를 감지하고 동일한 언어로 응답하도록 에이전트를 설정할 수 있습니다. 이 구성으로 에이전트는 단일 대화에서 여러 번 언어를 전환할 수 있습니다. 다음 시나리오는 네덜란드어와 영어를 전환할 수 있도록 에이전트를 설정하는 방법을 보여줍니다. 에이전트가 지원하는 모든 언어 조합으로 확장할 수 있습니다.
경고
이 동적 언어 전환 방식은 브라우저 기반 언어 감지와 호환되지 않습니다. 사용자 언어를 동적으로 감지하는 토픽이 User.Language 변수를 설정하면, 브라우저 기반 언어 감지는 해당 사용자에게 더 이상 적용되지 않으며, 이후 해당 토픽이 꺼지거나 삭제되더라도 마찬가지입니다. 두 방법을 실험하거나 검증하려면 별도의 테스트 에이전트를 사용하세요. 동적 언어 전환을 테스트한 후에는 브라우저 기반 언어 감지 테스트를 시도하기 전에 반드시 영구 사용자 언어 상태를 지워야 합니다.
이 시나리오는 메시지 수신토픽 트리거가 포함된 토픽을 사용합니다. 이 토픽 트리거는 에이전트가 수신하는 모든 메시지를 확인할 수 있게 합니다. 이 토픽은 사용자 지정 프롬프트를 사용하여 언어를 감지하고, 조건을 통해 에이전트 언어 시스템 변수를 설정합니다.
해당 토픽의 기본 트리거 유형을 메시지 수신됨으로 대체하세요.
토픽에 프롬프트를 추가하세요.
트리거 노드 아래에 위치한 노드 추가 아이콘
을 선택합니다.도구 추가>새 프롬프트를 선택합니다.
프롬프트 편집기에서 프롬프트에 대해 "언어 감지"와 같은 대표적인 이름을 입력하세요.
지침 창에 "이 메시지가 작성된 언어를 확인하세요:"를 입력하세요.
지침 창 하단에서 콘텐츠 추가를 선택한 다음 텍스트를 선택하세요. 이름과 샘플 메시지를 입력할 수 있는 창이 나타납니다.
이름에는 "Message"를 입력하고, 샘플 데이터에는 "Message from the user"를 입력한 후 닫기를 선택하세요.
모델 응답 창에서 출력 형식을 JSON으로 변경하세요.
테스트를 선택합니다. 프롬프트에는 언어를 영어로 지정하는 단일 속성이 포함된 JSON 리터럴이 표시됩니다.
저장을 선택합니다. 프롬프트 노드가 캔버스에 나타납니다.
프롬프트 노드를 구성합니다.
-
입력에서, 시스템 변수
Activity.Text(수신 메시지의 텍스트)를 선택하세요. -
출력에
DetectedLanguage라는 새로운 변수를 만드세요.
-
입력에서, 시스템 변수
감지된 언어에 따라 논리를 분기하세요.
프롬프트 노드 아래에 조건을 추가합니다.
감지된 언어의 이름을 담고 있는 사용자 지정 변수
DetectedLanguage.structuredOutput.language를 기준으로 조건을 설정하세요.감지해야 할 각 언어마다 조건 분기를 추가하세요.
각 분기 아래에 변수 값 설정 노드를 추가하여
User.Language시스템 변수를 해당 언어에 맞게 설정합니다. 다음 이미지는 네덜란드어와 영어 사이에서 언어를 전환하는 조건이 포함된 토픽을 보여줍니다.
브라우저 기반 언어 감지 복원
동적 언어 전환을 위해 구성된 에이전트가 User.Language 시스템 변수를 설정하면, 선택한 언어는 에이전트 사용자에게 재정의로 유지됩니다. 사용자의 선호 언어는 다음과 같은 우선순위로 결정됩니다.
- 사용자가 명시적으로 설정한 언어 선호도는 이 사용자에 대해 우선적으로 적용되어 유지됩니다(최우선 순위).
- 사용자가 에이전트가 지원하는 언어 중 하나로 보낸 메시지(
Activity.Locale). - 에이전트의 기본 언어(대체)입니다.
동적 언어 전환 테스트 후 저장된 언어를 지우려면:
-
/debug clearstate를 에이전트에게 전송하세요. 이 명령은 사용자 상태에서 언어 재정의를 해제합니다.
다국어 에이전트 문제 해결하기
이 섹션에서는 예상치 못한 다국어 에이전트 동작을 이해하는 데 도움이 되는 팁을 제공합니다.
구성되지 않은 언어에 대한 다국어 에이전트 동작
사용자가 브라우저를 에이전트에 구성하지 않은 언어로 설정하면, 에이전트는 기본 언어로 응답합니다.
에이전트를 만들 때 에이전트의 기본 언어를 지정합니다. 만든 후에는 기본 언어를 변경할 수 없지만 둘 이상의 지역을 사용할 수 있는 경우 에이전트의 기본 언어에 대한 지역을 변경할 수 있습니다.
누락된 번역에 대한 다국어 에이전트 동작
에이전트의 기본 언어로 메시지를 추가했지만 새 메시지에 대한 번역을 업로드하지 않으면, 에이전트는 번역되지 않은 변경 사항을 기본 언어로 표시합니다. 에이전트를 변경한 후 항상 번역이 최신 상태(up-to-date)인지 확인합니다.
지역화 파일에는 적응형 카드의 혼합 형식 문자열이 포함되지 않습니다. 적응형 카드에서 정적 텍스트와 변수(동적 콘텐츠)가 모두 포함된 문자열을 현지화해야 하는 경우, 우회 방법을 사용해야 합니다. 적응형 카드에서 사용하기 전에 텍스트 변수에 혼합 형식 문자열을 저장하는 방법을 알아보세요.
다국어 에이전트 게시할 때 발생하는 오류
다국어 에이전트를 게시하려고 하면 "봇 검증 실패" 오류 메시지와 원시 응답 오류 코드 SynonymsNotUnique가 표시될 수 있습니다. 이 오류는 로컬라이제이션 파일에 중복된 동의어가 있거나 동의어가 DisplayName 값과 일치하는 경우임을 의미합니다. 이 오류는 일반적으로 노드에 Entity.Definition.'closedListItem'이 포함되어 있고 다음 시나리오 중 하나가 발생했을 때 나타납니다.
-
Synonyms요소 중 하나가 고유하지 않습니다. -
Synonyms요소 중 하나가DisplayName요소와 동일한 값을 가집니다.
동일한 엔터티에 대한 모든 Synonyms은 고유해야 하며 DisplayName 요소와 다른 이름을 가져야 합니다.
오류를 수정하려면 보조 언어의 JSON 또는 ResX 파일을 검토하고, 이 조건이 해당되는 항목이 있는지 확인하세요.