자습서: Azure AI Studio에서 프롬프트 흐름을 사용하여 질문 및 답변 Copilot 빌드 및 배포

참고 항목

Azure AI 스튜디오는 현재 공개 미리 보기로 제공됩니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

Azure AI Studio 자습서에서는 생성 AI와 프롬프트 흐름을 사용하여 Contoso라는 소매 회사를 위한 Copilot을 빌드, 구성 및 배포합니다. 사용자의 소매 회사는 야외 캠핑 장비 및 의류를 전문으로 취급합니다.

Copilot은 사용자의 제품과 서비스에 관한 질문에 답해야 합니다. 또한 고객에 대한 질문에 답변해야 합니다. 예를 들어, Copilot은 "TrailWalker 하이킹 신발 가격은 얼마인가요?", "다니엘 윌슨이 TrailWalker 하이킹 신발을 몇 개 구입했나요?"와 같은 질문에 답할 수 있습니다.

이 자습서의 단계는 다음과 같습니다.

  1. Azure AI Studio 프로젝트를 만듭니다.
  2. Azure OpenAI 모델을 배포하고 데이터와 채팅합니다.
  3. 플레이그라운드에서 프롬프트 흐름을 만듭니다.
  4. 여러 데이터 원본으로 프롬프트 흐름을 사용자 지정합니다.
  5. 질문 및 답변 평가 데이터 세트를 사용하여 흐름을 평가합니다.
  6. 사용량을 위한 흐름을 배포합니다.

필수 조건

Azure AI Studio에서 Azure AI 프로젝트 만들기

Azure AI 프로젝트는 Copilot을 빌드하는 동안 작업을 구성하고 상태를 저장하는 데 사용됩니다. 이 자습서가 진행되는 동안 프로젝트에는 데이터, 프롬프트 흐름 런타임, 평가 및 기타 리소스가 포함됩니다. Azure AI 프로젝트 및 리소스 모델에 대한 자세한 내용은 Azure AI 허브 리소스를 참조하세요.

Azure AI Studio에서 Azure AI 프로젝트를 만들려면 다음 단계를 따릅니다.

  1. 페이지 맨 위에 있는 빌드 탭을 선택합니다.

  2. + 새 AI 프로젝트를 선택합니다.

    새 프로젝트를 만드는 옵션이 표시된 Azure AI Studio의 빌드 탭 스크린샷.

  3. 프로젝트의 이름을 입력합니다.

  4. 드롭다운에서 Azure AI 허브 리소스를 선택하여 프로젝트를 호스팅합니다. 아직 Azure AI 허브 리소스에 액세스할 수 없다면 새 리소스 만들기를 선택합니다.

    프로젝트 만들기 대화 상자 내의 프로젝트 세부 정보 페이지 스크린샷.

    참고 항목

    Azure AI 허브 리소스를 만들려면 선택한 리소스 그룹에 대한 소유자 또는 기여자 권한이 있어야 합니다. Azure AI 허브 리소스를 팀과 공유하는 것이 좋습니다. 이를 통해 모든 프로젝트와 데이터 연결과 같은 구성을 공유하고 보안 설정 및 지출을 중앙에서 관리할 수 있습니다.

  5. 새 Azure AI 허브 리소스를 만드는 경우 이름을 입력합니다.

  6. 드롭다운에서 해당 Azure 구독을 선택합니다. 청구, 액세스 또는 관리상의 이유로 프로젝트에 대한 특정 Azure 구독을 선택합니다. 예를 들어, 이는 사용자 및 서비스 주체에게 프로젝트에 대한 구독 수준 액세스 권한을 부여합니다.

  7. 새 리소스 그룹을 만들려면 리소스 그룹을 기본값으로 둡니다. 또는 드롭다운에서 기존 리소스 그룹을 선택할 수 있습니다.

    특히 시작하려면 프로젝트에 대한 새 리소스 그룹을 만드는 것이 좋습니다. 이를 통해 프로젝트와 모든 리소스를 함께 쉽게 관리할 수 있습니다. 프로젝트를 만들면 Azure AI 허브 리소스, 컨테이너 레지스트리 및 스토리지 계정을 포함하여 리소스 그룹에 여러 리소스가 만들어집니다.

  8. Azure AI 허브 리소스의 위치를 입력하고 다음을 선택합니다. 위치는 Azure AI 허브 리소스가 호스트되는 지역입니다. Azure AI 허브 리소스의 위치는 프로젝트의 위치이기도 합니다. Azure AI 서비스 가용성은 지역마다 다릅니다. 예를 들어, 특정 모델은 특정 지역에서 사용하지 못할 수도 있습니다.

  9. 드롭다운에서 기존 Azure OpenAI 리소스를 선택하거나 새로 만듭니다.

    프로젝트 만들기 대화 상자 내의 리소스 만들기 페이지 스크린샷.

  10. 검토 및 완료 페이지에는 검토할 Azure OpenAI Service 리소스 이름과 기타 설정이 표시됩니다.

    프로젝트 만들기 대화 상자 내의 검토 및 완료 페이지 스크린샷.

  11. 프로젝트 세부 정보를 검토한 후 AI 프로젝트 만들기를 선택합니다. 리소스 만들기 진행률을 확인하고 프로세스가 완료되면 프로젝트가 만들어집니다.

    프로젝트 만들기 대화 상자 내 리소스 만들기 진행률의 스크린샷.

프로젝트가 만들어지면 왼쪽 탐색 패널에서 도구, 구성 요소AI 프로젝트 설정 자산에 액세스할 수 있습니다. Azure OpenAI를 지원하는 Azure AI 허브를 사용하는 프로젝트의 경우 도구 아래에 플레이그라운드 탐색 옵션이 표시됩니다.

채팅 모델 배포

Copilot을 위한 Azure OpenAI 채팅 모델을 배포하려면 다음 단계를 따릅니다.

  1. Azure OpenAI 리소스에 액세스할 수 있는 자격 증명을 사용하여 Azure AI Studio에 로그인합니다. 로그인 워크플로 도중 또는 이후에 적절한 디렉터리, Azure 구독 및 Azure OpenAI 리소스를 선택합니다. Azure AI Studio 페이지로 이동됩니다.

  2. 상단 메뉴에서 빌드를 선택한 다음 배포>만들기>실시간 엔드포인트를 선택합니다.

    새 프로젝트를 만드는 단추가 있는 배포 페이지의 스크린샷.

  3. 모델 선택 페이지의 모델 목록에서 배포하려는 모델을 선택합니다. 예를 들어, gpt-35-turbo-16k를 선택합니다. 그런 다음 확인을 선택합니다.

    모델 선택 페이지의 스크린샷.

  4. 모델 배포 페이지에서 배포 이름을 입력한 다음 배포를 선택합니다. 배포가 만들어지면 배포 세부 정보 페이지가 표시됩니다. 세부 정보에는 배포를 만든 날짜와 배포한 모델의 만든 날짜 및 버전이 포함됩니다.

  5. 이전 단계의 배포 세부 정보 페이지에서 플레이그라운드에서 열기를 선택합니다.

    GPT 채팅 배포 세부 정보 스크린샷.

모델 배포에 대한 자세한 내용은 모델 배포 방법을 참조하세요.

데이터 없이 플레이그라운드에서 채팅

Azure AI Studio 플레이그라운드에서는 데이터 유무에 관계없이 모델이 어떻게 반응하는지 관찰할 수 있습니다. 이 섹션에서는 데이터 없이 모델을 테스트합니다. 다음 섹션에서는 제품에 대한 질문에 더 잘 답할 수 있도록 모델에 데이터를 추가합니다.

  1. 플레이그라운드의 모드 드롭다운에서 채팅이 선택되어 있는지 확인합니다. 배포 드롭다운에서 배포된 GPT 채팅 모델을 선택합니다.

    채팅 모드와 모델이 선택된 채팅 플레이그라운드의 스크린샷.

  2. 도우미 설정 창의 시스템 메시지 텍스트 상자에 다음 프롬프트를 입력하여 도우미를 안내합니다. "You're an AI assistant that helps people find information.(당신은 사람들이 정보를 찾을 수 있도록 도와주는 AI 도우미입니다.)" 시나리오에 맞게 프롬프트를 조정할 수 있습니다. 자세한 내용은 프롬프트 샘플을 참조하세요.

  3. 변경 내용 적용을 선택하여 변경 내용을 저장하고 시스템 메시지를 업데이트할지 묻는 프롬프트가 표시되면 계속을 선택합니다.

  4. 채팅 세션 창에 "TrailWalker 하이킹 신발 가격은 얼마인가요?"라는 질문을 입력한 후 오른쪽 화살표 아이콘을 선택하여 보냅니다.

    기초가 되는 데이터가 없는 첫 번째 채팅 질문의 스크린샷.

  5. 도우미가 답을 모른다고 대답합니다. 해당 모델은 TrailWalker 하이킹 신발에 관한 제품 정보에 액세스할 수 없습니다.

    기초가 되는 데이터가 없는 도우미의 회신 스크린샷.

다음 섹션에서는 제품에 대한 질문에 답하는 데 도움이 되도록 모델에 데이터를 추가합니다.

데이터를 추가하고 채팅 모델을 다시 사용해 보세요.

제품 정보 예의 로컬 복사본이 필요합니다. 자세한 내용과 데이터 예에 대한 링크는 필수 조건을 참조하세요.

로컬 데이터 파일을 Azure Blob Storage에 업로드하고 Azure AI 검색 인덱스를 만듭니다. 데이터 원본은 특정 데이터로 모델을 구축하는 데 사용됩니다. 그라운딩은 모델이 데이터를 사용하여 질문의 컨텍스트를 이해하는 데 도움을 준다는 것을 의미합니다. 배포된 모델 자체는 변경되지 않습니다. 사용자의 데이터는 Azure 구독에 별도로 안전하게 저장됩니다. 자세한 내용은 데이터에 대한 Azure OpenAI를 참조하세요.

도우미가 제품에 대한 질문에 답할 수 있도록 데이터를 플레이그라운드에 추가하려면 다음 단계를 따릅니다.

  1. 아직 Azure AI Studio 플레이그라운드에 있지 않은 경우 상단 메뉴에서 빌드를 선택한 다음 축소 가능한 왼쪽 메뉴에서 플레이그라운드를 선택합니다.

  2. 도우미 설정 창에서 데이터 추가(미리 보기)>+ 데이터 원본 추가를 선택합니다.

    데이터 원본을 추가하는 옵션이 표시된 채팅 플레이그라운드의 스크린샷.

  3. 표시되는 데이터 원본 페이지의 데이터 원본 선택 드롭다운에서 파일 업로드를 선택합니다.

    제품 데이터 원본 선택 옵션의 스크린샷

    데이터 원본 옵션과 지원되는 파일 형식 및 형식은 데이터에 대한 Azure OpenAI를 참조하세요.

  4. 제품 정보 인덱스 이름으로 product-info를 입력합니다.

    파일 업로드에 필요한 리소스 및 정보의 스크린샷.

  5. contoso-outdoor-search라는 Azure AI 검색 리소스를 선택하거나 만들고 이를 연결하면 계정에서 사용량이 발생한다는 데에 확인을 선택합니다.

    참고 항목

    이 자습서의 뒷부분에 나오는 프롬프트 흐름에서 product-info 인덱스와 contoso-outdoor-search Azure AI 검색 리소스를 사용합니다. 입력한 이름이 여기에 지정된 이름과 다른 경우 자습서의 나머지 부분에서 입력한 이름을 사용해야 합니다.

  6. 사용하려는 Azure OpenAI 리소스가 포함된 Azure 구독을 선택합니다. 그런 후 다음을 선택합니다.

  7. 파일 업로드 페이지에서 파일 찾아보기를 선택하고 업로드할 파일을 선택합니다. 이전에 다운로드했거나 만든 제품 정보 파일을 선택합니다. 필수 조건을 참조하세요. 두 개 이상의 파일을 업로드하려면 지금 업로드합니다. 나중에 동일한 플레이그라운드 세션에서 더 많은 파일을 추가할 수 없습니다.

  8. 업로드를 선택하여 Azure Blob Storage 계정에 파일을 업로드합니다. 그런 다음 페이지 하단에서 다음을 선택합니다.

    파일을 선택하고 업로드하는 대화 상자의 스크린샷.

  9. 데이터 관리 페이지의 검색 유형 아래에서 키워드를 선택합니다. 이 설정은 모델이 요청에 응답하는 방식을 결정하는 데 도움이 됩니다. 그 후 다음을 선택합니다.

    참고 항목

    데이터 원본 선택 또는 추가 페이지에 벡터 검색을 추가한 경우 추가 비용을 지불하면 여기에서 더 많은 옵션을 사용할 수 있습니다. 자세한 내용은 데이터에 대한 Azure OpenAI를 참조하세요.

  10. 입력한 세부 정보를 검토하고 저장 및 닫기를 선택하세요. 이제 모델과 채팅할 수 있으며 모델은 데이터의 정보를 사용하여 응답을 구성합니다.

    데이터 추가를 위한 검토 및 완료 페이지의 스크린샷.

  11. 이제 도우미 설정 창에서 데이터 수집이 진행 중인 것을 확인할 수 있습니다. 계속하기 전에 상태 대신 데이터 원본과 인덱스 이름이 표시될 때까지 기다리세요.

    데이터 수집 상태가 표시된 채팅 플레이그라운드의 스크린샷.

  12. 이제 이전과 동일한 질문("TrailWalker 하이킹 신발 가격은 얼마인가요?")을 묻는 모델과 채팅할 수 있으며, 이번에는 데이터 정보를 사용하여 응답을 구성합니다. 참조 단추를 확장하여 사용된 데이터를 볼 수 있습니다.

    기초가 되는 데이터가 포함된 도우미의 회신 스크린샷.

프롬프트 흐름에 필요한 컴퓨팅 및 런타임 만들기

프롬프트 흐름을 사용하여 Copilot의 채팅 모델로 전송되는 메시지를 최적화합니다. 프롬프트 흐름에는 컴퓨팅 인스턴스와 런타임이 필요합니다. 컴퓨팅 인스턴스와 런타임이 이미 있는 경우 이 섹션을 건너뛰고 플레이그라운드에 남아 있을 수 있습니다.

컴퓨팅 인스턴스와 런타임을 만들려면 다음 단계를 따릅니다.

  1. 컴퓨팅 인스턴스가 없으면 Azure AI Studio에서 인스턴스를 만들 수 있습니다.
  2. 그런 다음 런타임 만들기 방법의 단계에 따라 런타임을 만듭니다.

자습서의 나머지 부분을 완료하려면 런타임이 실행 중 상태인지 확인합니다. 업데이트된 상태를 보려면 새로 고침을 선택해야 할 수도 있습니다.

Important

컴퓨팅 인스턴스가 실행되는 동안에는 요금이 청구됩니다. 불필요한 Azure 비용이 발생하지 않도록 하려면 프롬프트 흐름에서 적극적으로 작업하지 않을 때 컴퓨팅 인스턴스를 일시 중지합니다. 자세한 내용은 컴퓨팅을 시작 및 중지하는 방법을 참조하세요.

플레이그라운드에서 프롬프트 흐름 만들기

이제 배포된 채팅 모델데이터와 함께 플레이그라운드에서 작동하므로 플레이그라운드에서 Copilot을 웹앱으로 배포할 수 있습니다.

하지만 "이 Copilot을 추가로 사용자 지정하려면 어떻게 해야 하나요?"라고 물을 수도 있습니다. 여러 데이터 원본을 추가하고, 다양한 프롬프트를 비교하거나, 여러 모델의 성능을 비교할 수 있습니다. 프롬프트 흐름은 LLM 기반 AI 애플리케이션 개발을 간소화하는 실행 가능한 워크플로 역할을 합니다. 이는 애플리케이션 내에서 데이터 흐름 및 처리를 관리하기 위한 포괄적인 프레임워크를 제공합니다.

이 섹션에서는 플레이그라운드에서 프롬프트 흐름으로 전환하는 방법을 알아봅니다. 추가한 데이터에 대한 연결을 포함하여 플레이그라운드 채팅 환경을 내보냅니다. 이 자습서의 후반부에서는 흐름을 평가한 다음 사용량를 위해 흐름을 배포합니다.

참고 항목

프롬프트 흐름의 변경 내용은 플레이그라운드 환경을 업데이트하기 위해 역방향으로 적용되지 않습니다.

다음 단계에 따라 플레이그라운드에서 프롬프트 흐름을 만들 수 있습니다.

  1. 아직 Azure AI Studio 플레이그라운드에 있지 않은 경우 상단 메뉴에서 빌드를 선택한 다음 축소 가능한 왼쪽 메뉴에서 플레이그라운드를 선택합니다.

  2. 채팅 세션 창 위의 메뉴에서 프롬프트 흐름에서 열기를 선택합니다.

  3. 프롬프트 흐름의 폴더 이름을 입력합니다. 그런 다음, 열기를 선택합니다. Azure AI Studio는 프롬프트 흐름을 위한 데이터 연결을 포함하여 플레이그라운드 채팅 환경을 내보냅니다.

    프롬프트 흐름 대화 상자에서 열기의 스크린샷.

흐름 내에서 노드는 고유한 기능을 갖춘 특정 도구를 나타내는 중심 스테이지를 차지합니다. 이러한 노드는 입출력을 통해 데이터 처리, 작업 실행 및 알고리즘 작업을 처리합니다. 노드를 연결하면 애플리케이션을 통해 데이터 흐름을 안내하는 원활한 작업 체인이 설정됩니다. 자세한 내용은 프롬프트 흐름 도구를 참조하세요.

노드 구성 및 미세 조정을 용이하게 하기 위해 워크플로 구조의 시각적 개체가 DAG(방향성 비순환 그래프) 그래프를 통해 제공됩니다. 이 그래프는 노드 간의 연결성과 종속성을 보여 주며 전체 워크플로에 대한 명확한 개요를 제공합니다. 여기에 표시된 그래프의 노드는 프롬프트 흐름으로 내보낸 플레이그라운드 채팅 환경을 나타냅니다.

프롬프트 흐름을 위해 플레이그라운드에서 내보낸 기본 그래프의 스크린샷.

노드를 추가, 업데이트, 재배열 또는 제거할 수 있습니다. 이 시점에서 흐름의 노드에는 다음이 포함됩니다.

  • DetermineIntent: 이 노드는 사용자 쿼리의 의도를 결정합니다. 시스템 프롬프트를 사용하여 의도를 결정합니다. 시스템 프롬프트를 편집하여 시나리오별 몇 장의 예를 제공할 수 있습니다.
  • ExtractIntent: 이 노드는 DetermineIntent 노드의 출력 형식을 지정하고 이를 RetrieveDocuments 노드로 보냅니다.
  • RetrieveDocuments: 이 노드는 쿼리와 관련된 상위 문서를 쿼리합니다. 이 노드는 플레이그라운드에서 미리 구성한 검색 유형과 매개 변수를 사용합니다.
  • FormatRetrievedDocuments: 이 노드는 RetrieveDocuments 노드의 출력 형식을 지정하고 이를 DetermineReply 노드로 보냅니다.
  • DetermineReply: 이 노드에는 LLM이 검색된 문서만을 사용하여 회신하도록 요청하는 광범위한 시스템 프롬프트가 포함되어 있습니다. 두 가지 입력이 있습니다.
    • RetrieveDocuments 노드는 가장 많이 검색된 문서를 제공합니다.
    • FormatConversation 노드는 최신 쿼리를 포함하여 형식이 지정된 대화 기록을 제공합니다.

FormatReply 노드는 DetermineReply 노드의 출력 형식을 지정합니다.

프롬프트 흐름에서는 다음도 확인해야 합니다.

  • 저장: 상단 메뉴에서 저장을 선택하여 언제든지 프롬프트 흐름을 저장할 수 있습니다. 이 자습서에서 변경 내용을 적용할 때 프롬프트 흐름을 주기적으로 저장합니다.

  • 런타임: 이 자습서의 앞부분에서 만든 런타임입니다. 왼쪽 메뉴의 AI 프로젝트 설정을 통해 런타임과 컴퓨팅 인스턴스를 시작 및 중지할 수 있습니다. 프롬프트 흐름에서 작업하려면 런타임이 실행 상태인지 확인합니다.

    프롬프트 흐름 편집기 및 주변 메뉴의 스크린샷.

  • 도구: 왼쪽 메뉴의 도구에서 프롬프트 흐름을 선택하면 언제든지 프롬프트 흐름으로 돌아갈 수 있습니다. 그런 다음 이전에 만든 프롬프트 흐름 폴더(샘플 흐름 아님)를 선택합니다.

    프롬프트 흐름 목록의 스크린샷.

여러 데이터 원본으로 프롬프트 흐름 사용자 지정

앞부분의 Azure AI Studio 플레이그라운드에서 데이터를 추가하여 Contoso Copilot을 위한 제품 데이터가 포함된 하나의 검색 인덱스를 만들었습니다. 지금까지 사용자는 "TrailWalker 하이킹 신발 가격은 얼마인가요?"와 같은 질문이 있는 제품에 대해서만 문의할 수 있었습니다. 하지만 “다니엘 윌슨이 TrailWalker 하이킹 신발을 몇 개 구입했나요?”와 같은 질문에는 답을 가져올 수 없습니다. 이 시나리오를 사용하도록 설정하기 위해 고객 정보가 포함된 또 다른 인덱스를 흐름에 추가합니다.

고객 정보 인덱스 만들기

고객 정보 예의 로컬 복사본이 필요합니다. 자세한 내용과 데이터 예에 대한 링크는 필수 조건을 참조하세요.

새 인덱스를 만드는 방법에 대한 다음 지침을 따릅니다.

  1. 왼쪽 메뉴에서 인덱스를 선택합니다. 그런 다음 + 새 인덱스를 선택합니다.

    새 인덱스를 만드는 단추가 있는 인덱스 페이지의 스크린샷.

    인덱스 만들기 마법사로 이동됩니다.

  2. 원본 데이터 페이지의 업로드 드롭다운에서 폴더 업로드를 선택합니다. 이전에 다운로드했거나 만든 고객 정보 파일을 선택합니다. 필수 조건을 참조하세요.

    고객 데이터 원본 선택 옵션의 스크린샷

  3. 페이지 아래쪽의 다음을 선택합니다.

  4. 제품 정보 인덱스(product-info)에 사용한 것과 동일한 Azure AI 검색 리소스(contoso-outdoor-search)를 선택합니다. 그런 후 다음을 선택합니다.

    선택한 Azure AI 검색 리소스의 스크린샷.

  5. 검색 유형으로 하이브리드 + 의미 체계(권장)을 선택합니다. 이 형식은 기본적으로 선택되어야 합니다.

  6. Azure OpenAI 리소스 드롭다운에서 Default_AzureOpenAI를 선택합니다. Azure OpenAI 포함 모델이 아직 배포되지 않은 경우 배포될 것임을 확인하는 확인란을 선택합니다. 그런 후 다음을 선택합니다.

    인덱스 검색 유형 옵션의 스크린샷

    참고 항목

    포함 모델은 배포 페이지에 다른 모델 배포와 함께 나열됩니다.

  7. 인덱스 이름으로 customer-info를 입력합니다. 그런 후 다음을 선택합니다.

    인덱스 이름 및 가상 머신 옵션의 스크린샷

  8. 입력한 세부 정보를 검토하고 만들기를 선택합니다.

    검토 및 인덱스 만들기 완료 페이지의 스크린샷.

    참고 항목

    이 자습서 뒷부분의 프롬프트 흐름에서 customer-info 인덱스와 contoso-outdoor-search Azure AI 검색 리소스를 사용합니다. 입력한 이름이 여기에 지정된 이름과 다른 경우 자습서의 나머지 부분에서 입력한 이름을 사용해야 합니다.

  9. 인덱스 만들기 상태를 확인할 수 있는 인덱스 세부 정보 페이지로 이동됩니다.

    고객 정보 인덱스 세부 정보 스크린샷

인덱스를 만드는 방법에 대한 자세한 내용은 인덱스 만들기를 참조하세요.

흐름에 고객 정보 추가

인덱스 만들기를 완료한 후 프롬프트 흐름으로 돌아가서 다음 단계에 따라 고객 정보를 흐름에 추가합니다.

  1. 그래프에서 RetrieveDocuments 노드를 선택하고 이름을 RetrieveProductInfo로 바꿉니다. 이제 제품 정보 검색 노드를 흐름에 추가하는 고객 정보 검색 노드와 구분할 수 있습니다.

    제품 정보를 검색하기 위한 프롬프트 흐름 노드의 스크린샷.

  2. 상단 메뉴에서 + Python을 선택하여 고객 정보를 검색하는 데 사용되는 새 Python 노드를 만듭니다.

    고객 정보를 검색하기 위한 프롬프트 흐름 노드의 스크린샷.

  3. 노드 이름을 RetrieveCustomerInfo로 지정하고 추가를 선택합니다.

  4. RetrieveProductInfo 노드의 Python 코드를 복사하여 RetrieveCustomerInfo 노드에 붙여넣어 기본 코드를 모두 바꿉니다.

  5. 입력 유효성 검사 및 구문 분석 단추를 선택하여 RetrieveCustomerInfo 노드에 대한 입력의 유효성을 검사합니다. 입력이 유효한 경우 프롬프트 흐름은 입력을 구문 분석하고 코드에서 사용할 필수 변수를 만듭니다.

    입력 유효성 검사 및 구문 분석 단추의 스크린샷.

  6. 프롬프트 흐름이 customer-info 인덱스에 연결할 수 있도록 구문 분석한 RetrieveCustomerInfo 입력을 편집합니다.

    고객 정보 검색 노드에서 편집할 입력 스크린샷.

    참고 항목

    그래프는 쿼리 입력 값을 ExtractIntent.output.search_intents로 설정한 직후 업데이트됩니다. 그래프에서 RetrieveCustomerInfoExtractIntent에서 입력을 가져오는 것을 볼 수 있습니다.

    입력은 대/소문자를 구분하므로 다음 값과 정확히 일치하는지 확인합니다.

    이름 타입
    embeddingModelConnection Azure OpenAI Default_AzureOpenAI
    embeddingModelName string 없음
    IndexName string customer-info
    queries string ${ExtractIntent.output.search_intents}
    queryType string 간단한
    searchConnection Cognitive Search contoso-outdoor-search
    semanticConfiguration string 없음
    topK int 5
  7. 변경 내용을 저장하려면 상단 메뉴에서 저장을 선택합니다.

출력할 검색된 문서의 형식 지정

이제 프롬프트 흐름에 제품 및 고객 정보가 모두 있으므로 대규모 언어 모델에서 사용할 수 있도록 검색된 문서의 형식을 지정합니다.

  1. 그래프에서 FormatRetrievedDocuments 노드를 선택합니다.

  2. 다음 Python 코드를 복사하여 붙여넣어 FormatRetrievedDocuments 코드 블록의 모든 콘텐츠를 바꿉니다.

    from promptflow import tool
    
    @tool
    def format_retrieved_documents(docs1: object, docs2: object, maxTokens: int) -> str:
      formattedDocs = []
      strResult = ""
      docs = [val for pair in zip(docs1, docs2) for val in pair]
      for index, doc in enumerate(docs):
        formattedDocs.append({
          f"[doc{index}]": {
            "title": doc['title'],
            "content": doc['content']
          }
        })
        formattedResult = { "retrieved_documents": formattedDocs }
        nextStrResult = str(formattedResult)
        if (estimate_tokens(nextStrResult) > maxTokens):
          break
        strResult = nextStrResult
    
      return {
              "combined_docs": docs,
              "strResult": strResult
          }
    
    def estimate_tokens(text: str) -> int:
      return (len(text) + 2) / 3
    
  3. 입력 유효성 검사 및 구문 분석 단추를 선택하여 FormatRetrievedDocuments 노드에 대한 입력의 유효성을 검사합니다. 입력이 유효한 경우 프롬프트 흐름은 입력을 구문 분석하고 코드에서 사용할 필수 변수를 만듭니다.

  4. RetrieveProductInfoRetrieveCustomerInfo 노드에서 제품 및 고객 정보를 추출할 수 있도록 구문 분석된 흐름을 표시하는 FormatRetrievedDocuments 입력을 편집합니다.

    검색된 문서 노드 형식에서 편집할 입력의 스크린샷.

    입력은 대/소문자를 구분하므로 다음 값과 정확히 일치하는지 확인합니다.

    이름 타입
    docs1 개체 ${RetrieveProductInfo.output}
    docs2 개체 ${RetrieveCustomerInfo.output}
    maxTokens int 5000
  5. 그래프에서 DetermineReply 노드를 선택합니다.

  6. 설명서 입력을 ${FormatRetrievedDocuments.output.strResult}로 설정합니다.

    회신 결정 노드에서 설명서 입력 값을 편집하는 스크린샷.

  7. 그래프에서 출력 노드를 선택합니다.

  8. fetched_docs 입력을 ${FormatRetrievedDocuments.output.combined_docs}로 설정합니다.

    출력 노드에서 fetched_docs 입력 값을 편집하는 스크린샷.

  9. 변경 내용을 저장하려면 상단 메뉴에서 저장을 선택합니다.

제품 및 고객 정보에 대한 프롬프트 흐름 채팅

이제 프롬프트 흐름에 제품과 고객 정보가 모두 있습니다. 프롬프트 흐름으로 모델과 채팅하고 "다니엘 윌슨이 TrailWalker 하이킹 신발을 몇 개 구입했나요?"와 같은 질문에 대한 답변을 가져올 수 있습니다. 보다 공식적인 평가를 진행하기 전에 선택적으로 모델과 채팅하여 질문에 어떻게 응답하는지 확인할 수 있습니다.

  1. 채팅을 시도하려면 프롬프트 흐름의 상단 메뉴에서 채팅을 선택합니다.

  2. "다니엘 윌슨이 TrailWalker 하이킹 신발을 몇 개 구입했나요?"를 입력합니다. 그런 다음 오른쪽 화살표 아이콘을 선택하여 보냅니다.

  3. 응답을 예상할 수 있습니다. 모델은 고객 정보를 사용하여 질문에 답합니다.

    제품 및 고객 기초가 되는 데이터가 포함된 도우미의 회신 스크린샷.

질문 및 답변 평가 데이터 세트를 사용하여 흐름을 평가합니다.

Azure AI Studio에서는 사용량를 위해 흐름을 배포하기 전에 흐름을 평가하려고 합니다.

이 섹션에서는 기본 제공 평가를 사용하여 질문 및 답변 평가 데이터 세트로 흐름을 평가합니다. 기본 제공된 평가는 AI 지원 메트릭을 사용하여 근거, 관련성, 검색 점수 등 흐름을 평가합니다. 자세한 내용은 기본 제공 평가 메트릭을 참조하세요.

평가 만들기

시나리오와 관련된 질문과 답변이 포함된 질문과 답변 평가 데이터 세트가 필요합니다. 로컬에서 qa-evaluation.jsonl이라는 새 파일을 만듭니다. 다음 질문과 답변("truth")을 복사하여 파일에 붙여넣습니다.

{"question": "What color is the CozyNights Sleeping Bag?", "truth": "Red", "chat_history": [], }
{"question": "When did Daniel Wilson order the BaseCamp Folding Table?", "truth": "May 7th, 2023", "chat_history": [] }
{"question": "How much does TrailWalker Hiking Shoes cost? ", "truth": "$110", "chat_history": [] }
{"question": "What kind of tent did Sarah Lee buy?", "truth": "SkyView 2 person tent", "chat_history": [] }
{"question": "What is Melissa Davis's phone number?", "truth": "555-333-4444", "chat_history": [] }
{"question": "What is the proper care for trailwalker hiking shoes?", "truth": "After each use, remove any dirt or debris by brushing or wiping the shoes with a damp cloth.", "chat_history": [] }
{"question": "Does TrailMaster Tent come with a warranty?", "truth": "2 years", "chat_history": [] }
{"question": "How much did David Kim spend on the TrailLite Daypack?", "truth": "$240", "chat_history": [] }
{"question": "What items did Amanda Perez purchase?", "truth": "TrailMaster X4 Tent, TrekReady Hiking Boots (quantity 3), CozyNights Sleeping Bag, TrailBlaze Hiking Pants, RainGuard Hiking Jacket, and CompactCook Camping Stove", "chat_history": [] }
{"question": "What is the Brand for TrekReady Hiking Boots", "truth": "TrekReady", "chat_history": [] }
{"question": "How many items did Karen Williams buy?", "truth": "three items of the Summit Breeze Jacket", "chat_history": [] }
{"question": "France is in Europe", "truth": "Sorry, I can only truth questions related to outdoor/camping gear and equipment", "chat_history": [] }

이제 평가 데이터 세트가 있으므로 다음 단계에 따라 흐름을 평가할 수 있습니다.

  1. 프롬프트 흐름의 상단 메뉴에서 평가>기본 제공 평가를 선택합니다.

    프롬프트 흐름에서 기본 제공 평가를 만드는 옵션의 스크린샷.

    새 평가 만들기 마법사로 이동됩니다.

  2. 평가 이름을 입력하고 런타임을 선택합니다.

  3. 시나리오 옵션에서 검색 증강 생성을 사용한 질문 및 답변 쌍을 선택합니다.

    평가 시나리오 선택 스크린샷

  4. 평가할 흐름을 선택합니다. 이 예에서는 Contoso Outdoor Flow 또는 흐름 이름을 지정한 대로 선택합니다. 그런 후 다음을 선택합니다.

  5. 흐름을 평가하는 데 사용할 메트릭을 선택합니다. 이 예에서는 근거, 관련성검색 점수를 선택합니다.

    평가 메트릭 선택 스크린샷

  6. 평가에 사용할 모델을 선택합니다. 이 예에서는 gpt-35-turbo-16k를 선택합니다. 그 후 다음을 선택합니다.

    참고 항목

    AI 지원 메트릭을 사용한 평가에서는 계산을 수행하기 위해 다른 GPT 모델을 호출해야 합니다. 최상의 성능을 위해서는 gpt-4-32k 또는 gpt-35-turbo-16k 모델과 같이 최소 16,000개의 토큰을 지원하는 모델을 사용합니다. 이전에 이러한 모델을 배포하지 않은 경우 채팅 모델 배포의 단계에 따라 다른 모델을 배포할 수 있습니다. 그런 다음 이 단계로 돌아가 배포한 모델을 선택합니다.

  7. 새 데이터 세트 추가를 선택합니다. 그런 후 다음을 선택합니다.

    새 데이터 세트나 기존 데이터 세트를 사용하는 옵션의 스크린샷

  8. 파일 업로드를 선택하고 파일을 찾아본 후 이전에 만든 qa-evaluation.jsonl 파일을 선택합니다.

    데이터 세트 업로드 파일 단추의 스크린샷

  9. 파일이 업로드된 후 파일(데이터 원본)의 속성을 평가 속성에 매핑해야 합니다. 각 데이터 원본 속성에 대해 다음 값을 입력합니다.

    평가 데이터 세트 매핑의 스크린샷

    속성 Description Type 데이터 원본
    chat_history 채팅 기록 list ${data.chat_history}
    query 쿼리 string ${data.question}
    질문 특정 정보를 찾는 쿼리 string ${data.question}
    대답 모델이 답변으로 생성한 질문에 대한 답변 string ${run.outputs.reply}
    documents 검색된 문서의 컨텍스트가 포함된 문자열 string ${run.outputs.fetched_docs}
  10. 다음을 선택합니다.

  11. 평가 세부 정보를 검토한 후 제출을 선택합니다.

    평가 만들기 대화 상자 내의 검토 및 완료 페이지 스크린샷.

    메트릭 평가 페이지로 이동됩니다.

평가 현황 및 결과 보기

이제 다음 단계에 따라 평가 상태와 결과를 볼 수 있습니다.

  1. 평가를 만든 후 아직 평가가 없으면 빌드>평가로 이동합니다. 메트릭 평가 페이지에서 평가 상태와 선택한 메트릭을 확인할 수 있습니다. 완료됨 상태를 확인하려면 몇 분 후에 새로 고침을 선택해야 할 수도 있습니다.

    메트릭 평가 페이지의 스크린샷

    평가가 완료됨 상태가 되면 이 자습서의 나머지 부분을 완료하기 위해 런타임이나 컴퓨팅이 필요하지 않습니다. 불필요한 Azure 비용이 발생하지 않도록 컴퓨팅 인스턴스를 중지할 수 있습니다. 자세한 내용은 컴퓨팅을 시작 및 중지하는 방법을 참조하세요.

  2. 먼저 완료된 평가의 이름(contoso-evaluate-from-flow_variant_0)을 선택하여 이전에 매핑한 열과 함께 평가 세부 정보를 확인합니다.

    세부 메트릭 결과 페이지의 스크린샷.

  3. 두 번째로 완료된 평가의 이름(evaluation_contoso-evaluate-from-flow_variant_0)을 선택하여 평가 메트릭인 근거성, 관련성검색 점수를 확인합니다.

    평균 메트릭 점수의 스크린샷.

자세한 내용은 평가 결과 보기를 참조하세요.

흐름 배포

이제 흐름을 빌드하고 메트릭 기반 평가를 완료했으므로 실시간 유추를 위한 온라인 엔드포인트를 만들 차례입니다. 이는 배포된 흐름을 사용하여 실시간으로 질문에 답할 수 있음을 의미합니다.

Azure AI Studio에서 온라인 엔드포인트로 프롬프트 흐름을 배포하려면 다음 단계를 따릅니다.

  1. 배포를 위한 프롬프트 흐름을 준비합니다. 프롬프트 흐름이 없는 경우 프롬프트 흐름을 빌드하는 방법을 참조하세요.

  2. 선택 사항: 채팅을 선택하여 흐름이 제대로 작동하는지 테스트합니다. 배포하기 전에 흐름을 테스트하는 것이 권장되는 모범 사례입니다.

  3. 흐름 편집기에서 배포를 선택합니다.

    프롬프트 흐름 편집기의 배포 단추 스크린샷

  4. 배포 마법사의 기본 설정 페이지에서 요청된 정보를 제공합니다.

    배포 마법사의 기본 설정 페이지 스크린샷.

  5. 고급 설정 페이지로 이동하려면 다음을 선택합니다.

  6. 고급 설정 - 엔드포인트 페이지에서 기본 설정을 그대로 두고 다음을 선택합니다.

  7. 고급 설정 - 배포 페이지에서 기본 설정을 그대로 두고 다음을 선택합니다.

  8. 고급 설정 - 출력 및 연결 페이지의 엔드포인트 응답에 포함에서 모든 출력이 선택되어 있는지 확인합니다.

    배포 마법사의 고급 설정 페이지 스크린샷

  9. 검토 + 만들기를 선택하여 설정을 검토하고 배포를 만듭니다.

  10. 프롬프트 흐름을 배포하려면 만들기를 선택합니다.

    검토 프롬프트 흐름 배포 설정 페이지의 스크린샷

자세한 내용은 흐름 배포 방법을 참조하세요.

배포된 흐름 사용

Copilot 애플리케이션은 배포된 프롬프트 흐름을 사용하여 실시간으로 질문에 답할 수 있습니다. REST 엔드포인트 또는 SDK를 사용하여 배포된 흐름을 사용할 수 있습니다.

  1. Azure AI Studio에서 배포 상태를 보려면 왼쪽 탐색 메뉴에서 배포를 선택합니다. 배포가 성공적으로 만들어지면 배포를 선택하여 세부 정보를 볼 수 있습니다.

    진행 중인 프롬프트 흐름 배포 상태의 스크린샷.

    참고 항목

    "현재 이 엔드포인트에는 배포가 없음"이라는 메시지가 표시되거나 상태가 여전히 업데이트인 경우 몇 분 후에 새로 고침을 선택해야 배포를 확인할 수 있습니다.

  2. 선택적으로 세부 정보 페이지에서 인증 유형을 변경하거나 모니터링을 사용하도록 설정할 수 있습니다.

    프롬프트 흐름 배포 세부 정보 페이지의 스크린샷.

  3. 사용 탭을 선택합니다. 배포된 흐름을 사용하기 위해 Copilot 애플리케이션에 대한 코드 샘플과 REST 엔드포인트를 볼 수 있습니다.

    프롬프트 흐름 배포 엔드포인트 및 코드 샘플의 스크린샷.

리소스 정리

불필요한 Azure 비용이 발생하지 않도록 하려면 이 자습서에서 만든 리소스가 더 이상 필요하지 않은 경우 삭제해야 합니다. 리소스를 관리하려면 Azure Portal을 사용할 수 있습니다.

Azure AI Studio에서 컴퓨팅 인스턴스를 중지하거나 삭제할 수도 있습니다.

Azure AI Studio 엔터프라이즈 채팅 솔루션 데모

엔드투엔드 연습 비디오에서는 Azure AI Studio에서 데이터를 사용하여 소매 copilot을 만드는 방법을 알아봅니다.

다음 단계