다음을 통해 공유


프롬프트 흐름 및 GitHub를 사용하는 LLMOps

LLM이 주입된 애플리케이션에 대한 수요가 급증함에 따라 조직은 이러한 앱의 엔드투엔드 수명 주기를 관리하기 위해 응집력 있고 간소화된 프로세스가 필요합니다. LLMOps라고도 하는 GenAIOps(생성 인공 지능 작업)는 효율적인 프롬프트 엔지니어링 및 LLM이 주입된 애플리케이션 개발 및 배포의 초석입니다.

이 문서에서는 Azure Machine Learning을 통해 GitHub와 통합하여 프롬프트 흐름으로 LLM이 주입된 애플리케이션 개발 수명 주기를 자동화하는 방법을 보여 줍니다. 프롬프트 흐름은 LLM이 주입된 애플리케이션을 개발하는 간소화되고 구조화된 접근 방식을 제공합니다. 잘 정의된 프로세스 및 수명 주기는 흐름을 빌드, 테스트, 최적화 및 배포하는 프로세스를 안내하며, 완벽하게 작동하는 LLM 주입 솔루션을 만드는 데 절정을 이릅니다.

GenAIOps 프롬프트 흐름 기능

프롬프트 흐름 이 있는 GenAIOps는 GenAIOps 템플릿 및 지침을 사용하여 프롬프트 흐름을 사용하여 LLM이 주입된 앱을 빌드하는 데 도움이 됩니다. 프롬프트 흐름이 있는 GenAIOps에는 단순하거나 복잡한 LLM이 주입된 앱에 대한 기능이 있으며 애플리케이션의 요구에 맞게 사용자 지정할 수 있습니다.

프롬프트 흐름 플랫폼이 있는 GenAIOps는 다음과 같은 기능을 제공합니다.

  • 중앙 집중식 코드 호스팅. 리포지토리는 여러 프롬프트 흐름에 대한 호스팅 코드를 지원하여 모든 흐름에 단일 리포지토리를 제공합니다. 이 리포지토리는 흐름에 대한 라이브러리와 같으므로 다양한 프로젝트에서 쉽게 찾고, 액세스하고, 공동 작업할 수 있습니다.

  • 수명 주기 관리. 각 흐름에는 고유한 수명 주기가 있으므로 로컬 실험에서 프로덕션 배포로 원활하게 전환할 수 있습니다.

  • 변형 및 하이퍼 매개 변수 실험. 변형과 하이퍼 매개 변수는 조리법의 재료와 같습니다. 이 플랫폼을 사용하면 흐름의 여러 노드에서 다양한 변형 조합을 실험할 수 있습니다. 여러 변형 및 하이퍼 매개 변수를 실험하여 흐름 변형을 쉽게 평가할 수 있습니다.

  • 여러 배포 대상. 이 플랫폼은 Docker를 지원하는 모든 대상 플랫폼 및 운영 체제에 배포하기 위한 흐름 및 컴퓨팅 세션이 주입된 Docker 이미지를 생성합니다. Azure 앱 Services, Kubernetes 및 Azure Managed Computes에 흐름을 배포하고 필요에 따라 크기를 조정하도록 구성할 수 있습니다.

  • A/B 배포. 프롬프트 흐름이 있는 GenAIOps는 A/B 배포를 원활하게 구현하여 다양한 흐름 버전을 쉽게 비교할 수 있습니다. 이 플랫폼은 기존 웹 사이트 A/B 테스트와 동일한 방식으로 프롬프트 흐름을 위한 A/B 배포를 용이하게 합니다. 실제 설정에서 다양한 흐름 버전을 쉽게 비교하여 어떤 버전이 가장 잘 수행되는지 확인할 수 있습니다.

  • 다대다 데이터 세트를 통해 관계를 흐릅니다. 프롬프트 흐름이 있는 GenAIOps는 각 표준 및 평가 흐름에 대해 여러 데이터 세트를 수용하여 흐름 테스트 및 평가에서 다재다능함을 지원합니다.

  • 조건부 데이터 및 모델 등록. 플랫폼은 Azure Machine Learning 데이터 자산에 대한 새 데이터 세트 버전을 등록하고 데이터 세트가 변경된 경우에만 모델 레지스트리의 흐름을 등록합니다.

  • 포괄적인 보고. 프롬프트 흐름이 있는 GenAIOps는 각 변형 구성에 대한 자세한 보고서를 생성하여 정보에 입각한 결정을 내릴 수 있도록 합니다. 이 플랫폼은 모든 실행 및 실험에 대한 자세한 메트릭 수집, 실험 및 변형 대량 실행을 제공하여 CSV 및 HTML 파일 모두에 대해 데이터 기반 결정을 내릴 수 있도록 합니다.

프롬프트 흐름이 있는 GenAIOps는 사용자 지정을 위한 다음과 같은 다른 기능을 제공합니다.

  • BYOF(Bring-your-own-flows) 는 LLM 주입 애플리케이션과 관련된 여러 사용 사례를 개발하기 위한 완벽한 플랫폼을 제공합니다.
  • 구성 기반 개발 은 광범위한 상용구 코드를 작성할 필요가 없음을 의미합니다.
  • 프롬프트 실험 및 평가 는 로컬 및 클라우드에서 실행됩니다.
  • 로컬 프롬프트 평가를 위한 Notebook은 로컬 실험을 위한 함수 라이브러리를 제공합니다.
  • 배포 후 파이프라인 내의 엔드포인트 테스트 는 엔드포인트 가용성 및 준비 상태를 확인합니다.
  • 선택적 휴먼 인 루프 는 배포 전에 프롬프트 메트릭의 유효성을 검사합니다.

GenAIOps 단계

GenAIOps 수명 주기는 다음과 같은 네 가지 단계로 구성됩니다.

  • 초기화. 비즈니스 목표를 명확하게 정의하고, 관련 데이터 샘플을 수집하고, 기본 프롬프트 구조를 설정하고, 기능을 향상시키는 흐름을 만듭니다.

  • 실험. 샘플 데이터에 흐름을 적용하고, 프롬프트의 성능을 평가하고, 필요에 따라 흐름을 구체화합니다. 결과에 만족할 때까지 계속 반복합니다.

  • 평가 및 구체화. 더 큰 데이터 세트를 사용하여 흐름의 성능을 벤치마킹하고, 프롬프트의 효과를 평가하고, 그에 따라 구체화합니다. 결과가 원하는 표준을 충족하는 경우 다음 단계로 진행합니다.

  • 배포: 효율성과 효율성을 위해 흐름을 최적화하고, A/B 배포를 포함한 프로덕션 환경에 배포하고, 성능을 모니터링하고, 사용자 피드백을 수집하고, 이 정보를 사용하여 흐름을 더욱 향상시킵니다.

이러한 구조적 방법론을 준수하면 프롬프트 흐름을 통해 자신 있게 흐름을 개발하고, 엄격하게 테스트하고, 미세 조정하고, 배포할 수 있으므로 강력하고 정교한 AI 애플리케이션을 만들 수 있습니다.

GenAIOps 프롬프트 흐름 템플릿은 코드 우선 방법을 사용하여 이 구조적 방법론을 공식화하고 프롬프트 흐름 도구 및 프로세스 및 GenAIOps 프롬프트 흐름 기능을 사용하여 LLM이 주입된 앱을 빌드하는 데 도움이 됩니다. 이 템플릿은 프롬프트 흐름 템플릿을 사용하여 GenAIOps에서 사용할 수 있습니다.

GenAIOps 프로세스 흐름

GenAIOps 프롬프트 흐름 프로세스의 스크린샷.

  1. 초기화 단계에서는 흐름을 개발하고, 데이터를 준비 및 큐레이팅하고, GenAIOps 관련 구성 파일을 업데이트합니다.
  2. 프롬프트 흐름 확장과 함께 Visual Studio Code를 사용하여 로컬을 개발한 후 기능 분기 빌드 유효성 검사 파이프라인 및 실험 흐름을 실행하는 개발 분기로 끌어오기 요청(PR)을 발생합니다.
  3. PR이 수동으로 승인되고 코드가 개발 분기에 병합됩니다.
  4. PR이 개발 분기에 병합되면 개발 환경에 대한 CI(연속 통합) 파이프라인이 실행됩니다. CI 파이프라인은 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
  5. CI 파이프라인 실행이 완료되면 CD(연속 배포) 트리거는 Azure Machine Learning 레지스트리의 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하는 CD 파이프라인을 실행합니다. 그런 다음 파이프라인은 배포된 흐름에서 통합 및 스모크 테스트를 실행합니다.
  6. 릴리스 분기는 개발 분기에서 만들어지거나 PR이 개발 분기에서 릴리스 분기로 발생합니다.
  7. PR이 수동으로 승인되고 코드가 릴리스 분기에 병합됩니다. PR이 릴리스 분기에 병합되면 프로덕션 환경에 대한 CI 파이프라인이 실행됩니다. 파이프라인은 실험 및 평가 흐름을 순서대로 실행하고 파이프라인의 다른 단계와는 별도로 Azure Machine Learning 레지스트리에 흐름을 등록합니다.
  8. CI 파이프라인 실행이 완료되면 CD 트리거는 AZURE Machine Learning 레지스트리의 표준 흐름을 Azure Machine Learning 온라인 엔드포인트로 배포하는 CD 파이프라인을 실행합니다. 그런 다음 파이프라인은 배포된 흐름에서 통합 및 스모크 테스트를 실행합니다.

GenAIOps 프롬프트 흐름 만들기

이 문서의 나머지 부분에는 프롬프트 흐름 및 GitHub를 사용하여 LLM이 주입된 애플리케이션을 빌드하는 데 도움이 되는 프롬프트 흐름 템플릿 리포지토리가 있는 GenAIOps의 엔드투엔드 샘플을 따라 프롬프트 흐름에서 GenAIOps를 사용하는 방법을 보여 줍니다. 주요 목표는 프롬프트 흐름 및 GenAIOps의 기능을 사용하여 이러한 애플리케이션 개발에 대한 지원을 제공하는 것입니다.

필수 조건

프롬프트 흐름 연결 설정

프롬프트 흐름은 연결 리소스를 사용하여 Azure OpenAI, OpenAI 또는 Azure AI Search 엔드포인트에 연결합니다. 프롬프트 흐름 포털 UI를 통해 또는 REST API를 사용하여 연결을 만들 수 있습니다. 자세한 내용은 프롬프트 흐름의 연결을 참조 하세요.

연결을 만들려면 프롬프트 흐름대한 연결 설정의 지침을 따릅니다. 샘플 흐름은 호출 aoai된 연결을 사용하므로 연결에 해당 이름을 지정합니다.

컴퓨팅 세션 설정

프롬프트 흐름은 컴퓨팅 세션을 사용하여 흐름을 실행합니다. 프롬프트 흐름을 실행하기 전에 컴퓨팅 세션을 만들고 시작합니다.

GitHub 리포지토리 설정

GitHub 조직에서 포크된 리포지토리를 만들려면 GitHub 리포지토리 설정의 지침을 따릅니다. 이 리포지토리는 코드 승격 및 development파이프라인 실행에 대해 두 개의 분기 main 를 사용합니다.

새 로컬 리포지토리를 만들려면 리포지토리 복제의 지침을 따릅니다. 이 클론을 사용하면 개발 분기에서 새 기능 분기 만들고 변경 내용을 통합할 수 있습니다.

GitHub와 Azure 간에 인증 설정

이 프로세스는 서비스 주체 정보를 저장하는 GitHub 비밀을 구성합니다. Azure에 자동으로 연결하기 위해 리포지토리의 워크플로는 비밀 이름을 사용하여 연결 정보를 읽을 수 있습니다. 자세한 내용은 GitHub Actions를 사용하여 Azure에 연결하는 방법을 참조하세요.

  1. Azure 서비스 주체 만들기의 지침 에 따라 서비스 주체를 만듭니다.
  2. 서비스 주체를 사용하여 Azure 및 GitHub로 인증 설정의 지침 에 따라 GitHub 리포지토리와 Azure 서비스 간에 인증을 설정합니다.

파이프라인 테스트

파이프라인을 테스트하려면 업데이트 테스트 데이터의 지침을 따릅니다. 전체 프로세스에는 다음 단계가 포함됩니다.

  1. 기능 분기 개발 분기로 PR을 발생합니다.
  2. PR 파이프라인은 분기 정책 구성으로 인해 자동으로 실행됩니다.
  3. PR이 개발 분기에 병합됩니다.
  4. 연결된 dev 파이프라인이 실행되어 전체 CI 및 CD 실행 및 Azure Machine Learning 엔드포인트의 프로비전 또는 업데이트가 발생합니다.

출력은 예제 프롬프트 실행, 평가 및 배포 시나리오예제와 유사해야 합니다.

로컬 실행 사용

로컬 실행 기능을 사용하려면 다음 단계를 수행합니다.

  1. 다음과 같이 리포지토리를 복제합니다.

    git clone https://github.com/microsoft/genaiops-promptflow-template.git
    
  2. 최상위 폴더 수준에서 .env 파일을 만듭니다. 각 연결에 대한 줄을 추가하여 자리 표시자의 값을 업데이트합니다. 예제 리포지토리의 예제에서는 명명된 aoai AzureOpenAI 연결 및 API 버전을 2024-02-01사용합니다.

    aoai={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "azure","api_version": "2024-02-01"}
    <connection2>={ "api_key": "<api key>","api_base": "<api base or endpoint>","api_type": "<api type>","api_version": "<api_version>"}
    
  3. 로컬 conda 또는 가상 환경을 준비하여 종속성을 설치합니다.

    python -m pip install promptflow promptflow-tools promptflow-sdk jinja2 promptflow[azure] openai promptflow-sdk[builtins] python-dotenv
    
  4. 새 흐름을 온보딩하는 방법의 지침 에 따라 흐름을 템플릿에 가져오거나 씁니다.

  5. 제공된 예제와 유사한 local_execution 폴더에 Python 스크립트를 작성합니다.