다음을 통해 공유


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

Important

이 문서에 설명된 기능 중 일부는 미리 보기로만 제공될 수 있습니다. 이 미리 보기는 서비스 수준 계약 없이 제공되며, 프로덕션 워크로드에는 권장되지 않습니다. 특정 기능이 지원되지 않거나 기능이 제한될 수 있습니다. 자세한 내용은 Microsoft Azure Preview에 대한 추가 사용 약관을 참조하세요.

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

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

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

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

필수 조건

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

AI 스튜디오 플레이그라운드 빠른 시작(이 자습서의 필수 조건)에서는 데이터 없이 모델이 어떻게 반응하는지 관찰할 수 있습니다. 이제 제품에 대한 질문에 답하는 데 도움이 되는 데이터를 모델에 추가합니다.

이 섹션을 완료하려면 제품 데이터의 로컬 복사본이 필요합니다. GitHub의 Azure-Samples/aistudio-python-quickstart-sample 리포지토리에는 이 자습서 시나리오와 관련된 샘플 소매 고객 및 제품 정보가 포함되어 있습니다. 리포지토리를 복제하거나 3-product-info에서 파일을 복사합니다.

Important

Azure AI 스튜디오 플레이그라운드의 데이터 추가 기능은 다음 리소스에서 가상 네트워크 또는 프라이빗 엔드포인트 사용을 지원하지 않습니다.

  • Azure AI 검색
  • Azure OpenAI
  • 스토리지 리소스

도우미가 제품에 대한 질문에 답변할 수 있도록 채팅 플레이그라운드에 데이터를 추가하려면 다음 단계를 따릅니다. 배포된 모델 자체는 변경되지 않습니다. 사용자의 데이터는 Azure 구독에 별도로 안전하게 저장됩니다.

  1. Azure AI 스튜디오에서 프로젝트로 이동합니다.

  2. 왼쪽 창에서 플레이그라운드>채팅을 선택합니다.

  3. 배포 드롭다운에서 배포된 채팅 모델을 선택합니다.

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

  4. 채팅 플레이그라운드 왼쪽에서 데이터 추가>+ 새 데이터 원본 추가를 선택합니다.

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

  5. 데이터 원본 드롭다운에서 파일 업로드를 선택합니다.

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

  6. 로컬 파일을 찾아보려면 업로드>파일 업로드를 선택합니다.

  7. 업로드할 파일을 선택합니다. 이전에 다운로드했거나 만든 제품 정보 파일(3-product-info)을 선택합니다. 이제 모든 파일을 추가합니다. 나중에 동일한 플레이그라운드 세션에서 더 많은 파일을 추가할 수 없습니다.

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

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

  9. Azure AI 검색 서비스를 선택합니다. 이 예에서는 Azure AI 검색 서비스 선택 드롭다운에서 다른 Azure AI 검색 리소스 연결을 선택합니다. 검색 리소스가 없으면 새 Azure AI 검색 리소스 만들기를 선택하여 만들 수 있습니다. 그런 다음 이 단계로 돌아와서 연결하고 선택합니다.

    검색 리소스 선택 옵션의 스크린샷.

  10. Azure AI 검색 서비스를 찾아 연결 추가를 선택합니다.

    검색 서비스 연결을 추가하는 페이지의 스크린샷.

  11. 인덱스 이름product-info를 입력하고 다음을 선택합니다.

  12. 벡터 설정 아래의 검색 설정 페이지에서 이 검색 리소스에 벡터 검색 추가 확인란을 선택 취소합니다. 이 설정은 모델이 요청에 응답하는 방식을 결정하는 데 도움이 됩니다. 그 후 다음을 선택합니다.

    참고 항목

    벡터 검색을 추가하면 추가 비용을 지불하고 여기에서 더 많은 옵션을 사용할 수 있습니다.

  13. 설정을 검토하고 만들기를 선택합니다.

  14. 플레이그라운드에서 데이터 수집이 진행 중인 것을 확인할 수 있습니다. 이 프로세스는 몇 분 정도 걸릴 수 있습니다. 계속하기 전에 상태 대신 데이터 원본과 인덱스 이름이 표시될 때까지 기다리세요.

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

  15. 플레이그라운드 구성의 이름을 입력하고 저장>구성 저장을 선택합니다. 모든 구성 항목은 기본적으로 저장됩니다. 항목에는 배포, 시스템 메시지, 안전 메시지, 매개 변수, 추가된 데이터, 예 및 변수가 포함됩니다. 동일한 이름으로 구성을 저장하면 이전 버전 위에 저장됩니다.

    플레이그라운드 구성 이름 및 저장 단추의 스크린샷.

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

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

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

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

참고 항목

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

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

  1. AI Studio의 프로젝트로 이동합니다.

  2. 왼쪽 창에서 플레이그라운드>채팅을 선택합니다.

  3. 자체 데이터를 사용하고 있으므로 데이터 추가를 선택해야 합니다. 이전에 채팅 플레이그라운드에서 만든 product-info라는 인덱스가 이미 있어야 합니다. 사용 가능한 프로젝트 인덱스 선택 드롭다운에서 선택합니다. 그렇지 않은 경우에는 먼저 제품 데이터로 인덱스를 만든 다음 이 단계로 돌아옵니다.

  4. 채팅 세션 창 위의 메뉴에서 프롬프트 흐름을 선택합니다.

  5. 프롬프트 흐름의 폴더 이름을 입력합니다. 그런 다음, 열기를 선택합니다. AI 스튜디오는 프롬프트 흐름에 플레이그라운드 채팅 환경을 내보냅니다. 내보내기에는 추가한 데이터에 대한 연결이 포함됩니다.

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

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

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

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

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

  • 저장 단추: 상단 메뉴에서 저장을 선택하여 언제든지 프롬프트 흐름을 저장할 수 있습니다. 이 자습서에서 변경 내용을 적용할 때 프롬프트 흐름을 주기적으로 저장합니다.
  • 컴퓨팅 세션 시작 단추: 프롬프트 흐름을 실행하려면 컴퓨팅 세션을 시작해야 합니다. 자습서의 뒷부분에서 세션을 시작할 수 있습니다. 컴퓨팅 인스턴스가 실행되는 동안 비용이 발생합니다. 자세한 내용은 컴퓨팅 세션을 만드는 방법을 참조하세요.

흐름의 세션 저장 및 시작 단추 스크린샷.

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

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

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

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

고객 정보 인덱스 만들기

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

새 인덱스를 만드는 방법에 대한 다음 지침을 따릅니다. 흐름에 고객 정보를 추가하기 위해 이 자습서의 뒷부분에서 프롬프트 흐름으로 돌아갑니다. 브라우저에서 새 탭을 열어 이러한 지침을 따른 다음 프롬프트 흐름으로 돌아갈 수 있습니다.

  1. AI Studio의 프로젝트로 이동합니다.

  2. 왼쪽 메뉴에서 인덱스를 선택합니다. 이전에 채팅 플레이그라운드에서 만든 product-info라는 인덱스가 이미 있습니다.

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

  3. + 새 인덱스를 선택합니다. 인덱스 만들기 마법사로 이동됩니다.

  4. 원본 데이터 페이지의 원본 데이터 드롭다운에서 파일 업로드를 선택합니다. 그런 다음 로컬 파일을 찾아보려면 업로드>파일 업로드를 선택합니다.

  5. 이전에 다운로드했거나 만든 고객 정보 파일을 선택합니다. 필수 조건을 참조하세요. 그런 후 다음을 선택합니다.

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

  6. 제품 정보 인덱스에 사용한 것과 동일한 Azure AI 검색 서비스 연결(contosooutdooraisearch)을 선택합니다. 그런 후 다음을 선택합니다.

  7. 인덱스 이름으로 customer-info를 입력합니다.

    Azure AI 검색 서비스 및 인덱스 이름의 스크린샷.

  8. 인덱싱 작업을 실행할 가상 머신을 선택합니다. 기본 옵션은 자동 선택입니다. 그런 후 다음을 선택합니다.

  9. 벡터 설정 아래의 검색 설정 페이지에서 이 검색 리소스에 벡터 검색 추가 확인란을 선택 취소합니다. 이 설정은 모델이 요청에 응답하는 방식을 결정하는 데 도움이 됩니다. 그 후 다음을 선택합니다.

    참고 항목

    벡터 검색을 추가하면 추가 비용을 지불하고 여기에서 더 많은 옵션을 사용할 수 있습니다.

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

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

    참고 항목

    이 자습서 뒷부분의 프롬프트 흐름에서 Azure AI 검색 서비스에 대한 customer-info 인덱스 및 contosooutdooraisearch 연결을 사용합니다. 입력한 이름이 여기에 지정된 이름과 다른 경우 자습서의 나머지 부분에서 입력한 이름을 사용해야 합니다.

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

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

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

프롬프트 흐름에 필요한 컴퓨팅 세션을 만듭니다.

인덱스 만들기를 완료한 후 프롬프트 흐름으로 돌아가 컴퓨팅 세션을 시작합니다. 프롬프트 흐름을 실행하려면 컴퓨팅 세션이 필요합니다.

  1. 프로젝트로 이동합니다.
  2. 왼쪽 메뉴의 도구에서 프롬프트 흐름을 선택합니다. 그런 다음 이전에 만든 프롬프트 흐름 폴더를 선택합니다.
  3. 상단 메뉴에서 컴퓨팅 세션 시작을 선택합니다.

컴퓨팅 인스턴스와 컴퓨팅 세션을 만들려면 컴퓨팅 세션을 만드는 방법의 단계를 따를 수도 있습니다.

자습서의 나머지 부분을 완료하려면 실행 중인 컴퓨팅 세션이 있는지 확인합니다.

Important

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

흐름에 고객 정보 추가

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

  1. 실행 중인 컴퓨팅 세션이 있는지 확인합니다. 없는 경우 이전 섹션의 컴퓨팅 세션 만들기를 참조하세요.

  2. 상단 메뉴에서 + 더 많은 도구를 선택한 다음 도구 목록에서 인덱스 조회를 선택합니다.

    프롬프트 흐름에서 인덱스 조회 도구를 선택하는 스크린샷.

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

  4. queryCustomerIndex 노드에서 mlindex_content 텍스트 상자를 선택합니다.

    인덱스 조회 노드에 있는 mlindex_content 텍스트 상자의 스크린샷.

    생성 대화 상자가 열립니다. 이 대화 상자를 사용하여 customer-info 인덱스에 연결하도록 queryCustomerIndex 노드를 구성합니다.

  5. index_type 값으로 Azure AI 검색을 선택합니다.

  6. 다음 값을 선택하거나 입력합니다.

    속성
    acs_index_connection Azure AI 검색 서비스 연결 이름(예: contosooutdooraisearch)
    acs_index_name customer-info
    acs_content_field content
    acs_metadata_field meta_json_string
    semantic_configuration azuremldefault
    embedding_type 없음
  7. 저장을 선택하여 설정을 저장합니다.

  8. queryCustomerIndex 노드에 대해 다음 값을 선택하거나 입력합니다.

    속성
    queries ${extractSearchIntent.output}
    query_type 키워드
    topK 5

    그래프에서 queryCustomerIndex 노드가 extractSearchIntent 노드에 연결된 것을 볼 수 있습니다.

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

  9. 변경 내용을 저장하려면 상단 메뉴에서 저장을 선택합니다. 변경 내용을 적용할 때 프롬프트 흐름을 주기적으로 저장하는 것을 잊지 마세요.

고객 정보를 흐름에 연결

다음 섹션에서는 제품 및 고객 정보를 집계하여 대규모 언어 모델이 사용할 수 있는 형식으로 출력합니다. 하지만 먼저 고객 정보를 흐름에 연결해야 합니다.

  1. + 더 많은 도구 옆에 있는 줄임표 아이콘을 선택한 다음 원시 파일 모드를 선택하여 원시 파일 모드로 전환합니다. 이 모드를 사용하면 그래프에서 노드를 복사하여 붙여넣을 수 있습니다.

    프롬프트 흐름의 원시 파일 모드 옵션 스크린샷.

  2. 그래프에서 querySearchResource의 모든 인스턴스를 queryProductIndex로 바꿉니다. 제품 정보를 쿼리하고 흐름에 추가한 queryCustomerIndex 노드와 대조된다는 점을 더 잘 반영하기 위해 노드 이름을 바꾸고 있습니다.

  3. 그래프에서 chunkDocuments의 모든 인스턴스 이름을 바꾸고 chunkProductDocuments로 바꿉니다.

  4. 그래프에서 selectChunks의 모든 인스턴스 이름을 바꾸고 selectProductChunks로 바꿉니다.

  5. chunkProductDocumentsselectProductChunks 노드를 복사하여 붙여넣어 고객 정보에 대한 유사한 노드를 만듭니다. 새 노드의 이름을 각각 chunkCustomerDocumentsselectCustomerChunks로 바꿉니다.

  6. chunkCustomerDocuments 노드 내에서 ${queryProductIndex.output} 입력을 ${queryCustomerIndex.output}으로 바꿉니다.

  7. selectCustomerChunks 노드 내에서 ${chunkProductDocuments.output} 입력을 ${chunkCustomerDocuments.output}으로 바꿉니다.

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

    원시 파일 모드에서 yaml 파일을 저장하는 옵션의 스크린샷.

    이제 flow.dag.yaml 파일에는 다음 예와 유사한 노드가 포함되어야 합니다.

    - name: chunkProductDocuments
      type: python
      source:
        type: code
        path: chunkProductDocuments.py
      inputs:
        data_source: Azure AI Search
        max_tokens: 1050
        queries: ${extractSearchIntent.output}
        query_type: Keyword
        results: ${queryProductIndex.output}
        top_k: 5
      use_variants: false
    - name: selectProductChunks
      type: python
      source:
        type: code
        path: filterChunks.py
      inputs:
        min_score: 0.3
        results: ${chunkProductDocuments.output}
        top_k: 5
      use_variants: false
    - name: chunkCustomerDocuments
      type: python
      source:
        type: code
        path: chunkCustomerDocuments.py
      inputs:
        data_source: Azure AI Search
        max_tokens: 1050
        queries: ${extractSearchIntent.output}
        query_type: Keyword
        results: ${queryCustomerIndex.output}
        top_k: 5
      use_variants: false
    - name: selectCustomerChunks
      type: python
      source:
        type: code
        path: filterChunks.py
      inputs:
        min_score: 0.3
        results: ${chunkCustomerDocuments.output}
        top_k: 5
      use_variants: false
    

제품 및 고객 정보 집계

이 시점에서 프롬프트 흐름은 제품 정보만 사용합니다.

  • extractSearchIntent는 사용자의 질문에서 검색 의도를 추출합니다.
  • queryProductIndexproduct-info 인덱스에서 제품 정보를 쿼리합니다.
  • LLM(대규모 언어 모델) 도구는 chunkProductDocuments>selectProductChunks>formatGeneratedReplyInputs 노드를 통해 형식이 지정된 회신을 받습니다.

제품과 고객 정보를 연결하고 집계하여 LLM 도구가 사용할 수 있는 형식으로 출력해야 합니다. 제품 및 고객 정보를 집계하려면 다음 단계를 따릅니다.

  1. 도구 목록에서 Python을 선택합니다.

  2. 도구 이름을 aggregateChunks로 지정하고 추가를 선택합니다.

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

    from promptflow import tool
    from typing import List
    
    @tool
    def aggregate_chunks(input1: List, input2: List) -> str:
        interleaved_list = []
        for i in range(max(len(input1), len(input2))):
            if i < len(input1):
                interleaved_list.append(input1[i])
            if i < len(input2):
                interleaved_list.append(input2[i])
        return interleaved_list
    
  4. 입력 유효성 검사 및 구문 분석 단추를 선택하여 aggregateChunks 노드에 대한 입력의 유효성을 검사합니다. 입력이 유효한 경우 프롬프트 흐름은 입력을 구문 분석하고 코드에서 사용할 필수 변수를 만듭니다.

    제품 및 고객 정보를 집계하기 위한 프롬프트 흐름 노드의 스크린샷.

  5. 제품과 고객 정보를 연결하려면 aggregateChunks 노드를 편집합니다. 입력을 다음 값으로 설정합니다.

    속성 타입
    input1 list ${selectProductChunks.output}
    input2 list ${selectCustomerChunks.output}

    집계 청크 노드에서 편집할 입력의 스크린샷.

  6. 그래프에서 shouldGenerateReply 노드를 선택합니다. 청크 입력에 대해 ${aggregateChunks.output}을 선택하거나 입력합니다.

  7. 그래프에서 formatGenerateReplyInputs 노드를 선택합니다. 청크 입력에 대해 ${aggregateChunks.output}을 선택하거나 입력합니다.

  8. 그래프에서 출력 노드를 선택합니다. 청크 입력에 대해 ${aggregateChunks.output}을 선택하거나 입력합니다.

  9. 변경 내용을 저장하려면 상단 메뉴에서 저장을 선택합니다. 변경 내용을 적용할 때 프롬프트 흐름을 주기적으로 저장하는 것을 잊지 마세요.

이제 그래프에서 aggregateChunks 노드를 볼 수 있습니다. 노드는 제품과 고객 정보를 연결하여 LLM 도구가 사용할 수 있는 형식으로 출력합니다.

그래프의 집계 청크 노드의 입력 및 출력 스크린샷.

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

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

  1. outputs 노드를 선택한 상태에서 이전 섹션을 계속합니다. 회신 출력에 채팅 출력 라디오 단추가 선택되어 있는지 확인합니다. 그렇지 않으면 채팅 질문에 대한 응답으로 전체 문서 집합이 반환됩니다.

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

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

    참고 항목

    모델이 응답하는 데 몇 초 정도 걸릴 수 있습니다. 배포된 흐름을 사용하면 응답 시간이 더 빨라질 것으로 예상할 수 있습니다.

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

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

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

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. 파일 업로드를 선택하고 파일을 찾아 이전에 만든 qa-evaluation.jsonl 파일을 선택합니다.

  7. 파일이 업로드된 후 평가용 출력을 생성하는 일괄 처리 실행을 실행하려면 프롬프트 흐름에 필요한 입력과 일치하도록 데이터 열을 구성해야 합니다. 프롬프트 흐름에 대한 각 데이터 세트 매핑에 대해 다음 값을 입력하거나 선택합니다.

    프롬프트 흐름 평가 데이터 세트 매핑의 스크린샷.

    속성 Description Type 데이터 원본
    chat_history 채팅 기록 list ${data.chat_history}
    query 쿼리 string ${data.question}
  8. 다음을 선택합니다.

  9. 흐름을 평가하는 데 사용할 메트릭을 선택합니다. 이 예에서는 일관성, 유창성, GPT 유사성 및 F1 점수를 선택합니다.

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

    평가 메트릭 선택 스크린샷

    참고 항목

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

  11. 평가 메트릭을 생성하려면 필수 입력과 일치하도록 데이터 열을 구성해야 합니다. 데이터 세트를 평가 속성에 매핑하려면 다음 값을 입력합니다.

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

  13. 평가 세부 정보를 검토한 후 제출을 선택합니다. 메트릭 평가 페이지로 이동됩니다.

평가 현황 및 결과 보기

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

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

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

  2. 프롬프트 흐름에서 컴퓨팅 세션을 중지합니다. 프롬프트 흐름으로 이동하여 상단 메뉴에서 컴퓨팅 세션 실행 중>컴퓨팅 세션 중지를 선택합니다.

    프롬프트 흐름에서 컴퓨팅 세션을 중지하는 단추의 스크린샷.

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

  3. 평가 메트릭을 보려면 평가 이름(예: evaluation_evaluate_from_flow_variant_0)을 선택합니다.

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

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

흐름 배포

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

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

  1. 프롬프트 흐름을 배포할 준비를 합니다. 프롬프트가 없는 경우 이전 섹션이나 프롬프트 흐름 빌드 방법을 참조하세요.

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

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

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

  4. 배포 마법사의 기본 설정 페이지에서 요청된 정보를 제공합니다. 고급 설정 페이지로 이동하려면 다음을 선택합니다.

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

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

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

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

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

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

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

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

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

배포된 흐름 사용

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

  1. AI Studio에서 배포 상태를 보려면 왼쪽 탐색 메뉴에서 배포를 선택합니다.

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

    배포가 성공적으로 만들어지면 배포를 선택하여 세부 정보를 볼 수 있습니다.

    참고 항목

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

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

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

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

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

리소스 정리

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

필요에 따라 AI 스튜디오에서 컴퓨팅 인스턴스를 중지하거나 삭제할 수도 있습니다.

다음 단계