앱에 모니터링 통합

Completed

Tip

자세한 내용은 텍스트 및 이미지 탭을 참조하세요.

Application Insights에서 캡처되고 Azure Monitor에서 시각화되는 모니터링 데이터를 생성하려면 Microsoft Foundry를 통해 배포한 서비스를 실행해야 합니다.

서비스는 단순히 배포된 언어 모델 또는 AI 도우미 또는 에이전트와 같은 배포된 생성 AI 앱일 수 있습니다.

코드에 모니터링을 통합하려면 다음을 수행해야 합니다.

  • Microsoft Foundry SDK를 사용하여 모델 유추를 실행하고 원격 분석을 내보낸다.
  • OpenTelemetry 표준을 사용하여 각 유추 호출 및 실행 단계를 나타내는 범위를 캡처 합니다.
  • 데이터를 Azure Monitor로 자동으로 내보내고 Application Insights를 사용하여 자동으로 저장합니다.

비고

여기에 제공된 코드 조각은 코드의 어떤 부분을 수행하는지 강조 표시하기 위한 것입니다. 연습에서 전체 작업 예제가 제공됩니다.

모델 유추 실행

생성 AI 애플리케이션 모니터링을 시작하려면 Microsoft Foundry SDK 를 사용하여 모델 유추를 실행해야 합니다. 모델 유추는 단일 언어 모델 완성에서 전체 멀티 턴 도우미에 이르기까지 무엇이든 될 수 있습니다.

Microsoft Foundry SDK를 사용하면 특정 Azure AI 허브 및 프로젝트에 연결할 수 있습니다. Python을 사용하면 다음 코드 샘플과 같이 표시할 수 있습니다.

connection_string = os.getenv('PROJECT_CONNECTION_STRING')
credential = DefaultAzureCredential()
project = AIProjectClient.from_connection_string(
    conn_str=connection_string,
    credential=credential
)

그런 다음 Azure AI 모델 유추 패키지(Microsoft Foundry SDK의 일부)를 사용하여 배포된 서비스와 상호 작용할 수 있습니다. 다음은 그 예입니다.

chat_client = project.inference.get_chat_completions_client()
model_name = os.environ.get("AZURE_OPENAI_DEPLOYMENT_NAME", "gpt-4o")

response = chat_client.complete(
            model=model_name,
            messages=[
                SystemMessage("You are an AI assistant that acts as a travel guide."),
                UserMessage(content=(
                "What are some recommended supplies for a camping trip in the mountains?"
            ))]

추적기를 사용하여 범위 캡처

애플리케이션을 통해 유추 요청의 경로를 쉽게 추적하기 위해 Azure는 OpenTelemetry 표준과 통합됩니다.

OpenTelemetry 표준은 범위 및 추적기를 사용하여 모니터링 데이터를 구성합니다.

  • 스팬: 추론 요청 또는 API 호출과 같은 애플리케이션 내 개별 작업 단위입니다. 각 범위는 기간, 성공/실패 상태 및 사용자 지정 특성과 같은 메타데이터를 기록합니다. 범위는 추적의 구성 요소입니다.
  • 추적기: 추적기는 범위 만들기 및 관리를 담당하는 코드의 구성 요소입니다. OpenTelemetry SDK의 일부이며 분산 추적에서 중심 역할을 합니다.

예를 들어 애플리케이션에서 먼저 추적 프로그램 인스턴스를 가져오고 범위에 대한 고유 식별자를 생성합니다.

# Get the tracer instance
tracer = trace.get_tracer(__name__)

# Generate a session ID for this script execution
SESSION_ID = str(uuid.uuid4())

# Configure the tracer to include session ID in all spans
os.environ['AZURE_TRACING_GEN_AI_CONTENT_RECORDING_ENABLED'] = 'true'

그런 다음 추적기를 사용하여 AI 모델에서 응답을 생성하는 프로세스를 나타내는 명명된 generate_completion 범위를 만들 수 있습니다. 이 범위는 배포된 서비스와 상호 작용하기 전에 사용되므로 코드를 다음으로 업데이트 합니다.

# Generate a chat completion about camping supplies
with tracer.start_as_current_span("generate_completion") as span:
    try:
        span.set_attribute("session.id", SESSION_ID)

        response = chat_client.complete(
            model=model_name,
            messages=[
                SystemMessage("You are an AI assistant that acts as a travel guide."),
                UserMessage(content=(
                "What are some recommended supplies for a camping trip in the mountains?"
            ))]
        )

    except Exception as e:
        span.set_status(Status(StatusCode.ERROR, str(e)))
        span.record_exception(e)
        raise

자동으로 데이터 내보내기

마지막으로 Applications Insights 리소스에 연결하여 생성된 모니터링 데이터를 자동으로 내보내야 합니다. Application Insights 리소스를 Microsoft Foundry 프로젝트에 연결하는 경우 프로젝트를 통해 리소스를 가져올 수 있습니다.

application_insights_connection_string = project.telemetry.get_connection_string()
configure_azure_monitor(connection_string=application_insights_connection_string)

AIInferenceInstrumentor().instrument()

이 AIinferenceInstrumentor 기능을 사용하면 수행된 chat_client 모든 AI 유추 작업이 자동으로 추적 및 모니터링됩니다.

모니터링하는 방법을 이해했으므로 추적한 정보로 수행할 수 있는 작업을 살펴보겠습니다.