Cortex Agent 평가

Cortex Agent 평가를 사용하면 에이전트의 동작과 성능을 모니터링할 수 있습니다. 기준값 및 참조 없는 평가 메트릭 모두에 대해 에이전트를 평가합니다. 평가하는 동안 에이전트의 활동이 추적되고 모니터링되므로 프로세스의 각 단계가 최종 목표를 향해 진행되는지 확인할 수 있습니다.

Snowflake는 에이전트를 평가할 수 있는 다음과 같은 메트릭을 제공합니다.

  • 답변 정확성 – 준비된 쿼리에 대한 에이전트의 답변이 예상 답변과 얼마나 일치하는지입니다. 이 메트릭은 Cortex Agent를 구동하는 데이터 세트가 정적일 때 가장 유용합니다.

  • 논리적 일관성 – 에이전트 지침, 계획 및 도구 호출 전반에 걸쳐 일관성을 측정합니다. 이 메트릭은 참조 없는 메트릭입니다. 즉, 평가를 위해 데이터 세트의 정보를 준비할 필요가 없습니다.

Snowflake를 사용하면 LLM 판단 프로세스를 사용하는 사용자 지정 평가 메트릭을 생성하여 에이전트의 도메인 및 사용 사례에 중요한 컨텍스트를 측정할 수도 있습니다. 사용자 지정 메트릭은 점수를 산출하기 위해 평가 판단 시스템으로 전달되는 LLM 프롬프트 및 채점 방법론을 사용합니다.

참조 없는 평가에 사용되는 LLM 판단 시스템을 포함하여 Snowflake에서 에이전트 평가가 수행되는 방식에 대한 자세한 내용은 Snowflake 엔지니어링 블로그 에이전트의 GPA는 무엇인가요? AI 에이전트 안정성 평가를 위한 프레임워크 <https://www.snowflake.com/en/engineering-blog/ai-agent-evaluation-gpa-framework/>`_를 참조하세요. 에이전트 평가를 프로그래밍 방식으로 실행하는 예제는 `Cortex Agent 평가 시작하기 가이드를 참조하세요.

액세스 제어 요구 사항

Cortex Agent 평가를 실행하려면 다음을 가진 역할이 필요합니다.

  • DATABASE ROLE SNOWFLAKE.CORTEX_USER 역할

  • EXECUTE TASK ON ACCOUNT 권한

  • 에이전트가 포함된 데이터베이스에 대한 USAGE 권한

  • 에이전트가 포함된 스키마에 대한 다음 권한:

    • USAGE

    • CREATE FILE FORMAT ON SCHEMA

    • CREATE TASK

    • EXECUTE TASK

  • 평가 데이터가 포함된 데이터베이스에 대한 USAGE 권한

  • 평가 데이터가 포함된 스키마에 대한 다음 권한:

    • USAGE

    • EXECUTE TASK

    • 입력 테이블에서 데이터 세트를 생성하는 경우 CREATE DATASET ON SCHEMA 권한

  • 에이전트에 대한 USAGE 또는 OWNERSHIP 권한

  • 에이전트에 대한 MONITOR 또는 OWNERSHIP 권한

  • 에이전트 평가 구성을 사용하는 경우 구성 파일이 포함된 스테이지에 대한 READ 권한.

평가 중인 에이전트가 도구를 사용하는 경우 사용자의 역할도 모든 도구에 액세스할 수 있어야 합니다.

또한 Snowsight 에서 평가 작업을 수행하는 경우, 평가를 실행하거나 검사하는 데 사용하는 역할에는 기본 웨어하우스에 대한 USAGE 권한이 필요합니다.

평가 데이터 세트 준비

Cortex Agent 평가를 시작하기 전에 평가 입력이 포함된 테이블을 준비합니다. 이 테이블은 평가를 실행할 데이터 세트를 생성하는 데 사용됩니다. Snowflake의 데이터 세트에 대해 자세히 알아보려면 Snowflake 데이터 세트 섹션을 참조하세요.

Cortex Code

/user-guide/cortex-code/cortex-code`가 평가를 위한 데이터 세트 생성을 지원하도록 하려면 Cortex Code ``cortex-agent``의 ``dataset-curation` 하위 스킬을 사용합니다. Cortex Code 스킬에 대한 자세한 내용은 :ref:`Cortex Code CLI - 스킬 <label-extensibility_skills>`을 참조하세요.

데이터 세트 형식

평가를 위한 데이터 세트를 생성하는 데 사용되는 테이블에는 쿼리를 나타내는 VARCHAR 유형의 쿼리 열 및 예상되는 에이전트 동작에 대한 설명이 포함된 VARIANT 유형의 출력 열이 있습니다. 이 단일 출력 열은 LLM 판단에서 기준값으로 사용됩니다.

출력 열의 값에는 하나의 ground_truth_output 키가 있습니다. 이 키의 값은 답변의 정확성 평가에 사용됩니다. LLM 판단은 기준값을 통해 프롬프트에 포함하여 에이전트의 출력을 평가합니다.

정확한 응답 일치 또는 의미 체계 응답 일치 외에도 자연어를 사용하여 응답의 *유형*을 설명함으로써 LLM 프롬프트에 기준값이 포함된다는 팩트를 활용합니다. 예를 들어, ``Output is in the following JSON format …``의 기준값을 제공한 후 해당 구조에 대한 설명 또는 JSON 예제 자체가 포함된 문자열을 제공할 수 있습니다. 전체 사용자 지정 프롬프트를 기반으로 출력을 더 엄격하게 검사해야 하는 경우 사용자 지정 메트릭을 생성합니다.

JSON 데이터 세트를 Snowflake 테이블에 가져오려면 PARSE_JSON SQL 함수를 사용합니다. 다음 예제에서는 평가 데이터 세트에 사용할 새 테이블 ``agent_evaluation_data``를 생성하고 입력 쿼리 ``What was the temperature in San Francisco on August 2nd 2019?``에 대한 기준값 ``The temperature was 14 degrees Celsius in San Francisco on August 2nd, 2019.``가 포함된 행을 삽입합니다.

CREATE OR REPLACE TABLE agent_evaluation_data (
    input_query VARCHAR
);

INSERT INTO agent_evaluation_data
  SELECT
    'What was the temperature in San Francisco on August 2nd 2019?',
    PARSE_JSON('
      {
        "ground_truth_output": "The temperature was 14 degrees Celsius in San Francisco on August 2nd, 2019.",
      }
    ');

중요

OBJECT_CONSTRUCTARRAY_CONSTRUCT 함수는 VARIANT가 아닌 결과를 반환합니다. /sql-reference/functions/parse_json`과 같이 원시 입력에서 VAIRANT를 생성하는 함수를 사용하거나 :doc:/sql-reference/functions/to_variant`를 호출하여 값 유형을 보장합니다.

선택한 메트릭에서 사용하지 않는 ground_truth 열에 제공한 데이터는 무시됩니다. 참조 없는 메트릭만 사용하여 평가 실행을 수행하는 경우 출력 열을 비워 둘 수 있습니다.

첫 번째 평가를 실행할 때 기존 테이블에서 새 데이터 세트를 생성할 수 있는 옵션이 제공됩니다.

에이전트 평가 시작

Cortex Code

/user-guide/cortex-code/cortex-code`가 평가를 실행하도록 하려면 Cortex Code ``cortex-agent` 스킬의 evaluate-cortex-agent 하위 스킬을 사용합니다. Cortex Code 스킬에 대한 자세한 내용은 :ref:`Cortex Code CLI - 스킬 <label-extensibility_skills>`을 참조하세요.

Snowsight

참고

에이전트 평가는 기본 역할이 아닌 Snowsight 에서 현재 선택한 역할로 실행됩니다. 평가를 시작하기 전에 올바른 권한이 있는 역할이 활성 상태인지 확인합니다.

다음을 수행하여 Cortex Agent 평가를 시작합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 AI & ML » Agents 를 선택합니다.

  3. 평가를 수행할 에이전트를 선택합니다.

  4. Evaluations 탭을 선택합니다.

  5. New evaluation run 을 선택합니다.

    New evaluation run 모달이 열립니다.

  6. Name 필드에 평가의 이름을 입력합니다. 이 이름은 평가 중인 에이전트에 대해 고유해야 합니다.

  7. 선택 사항: 개인 키가 암호화된 경우 암호 구문을 설정하려면 개인 키 암호 구문에 대한 환경 변수를 설정합니다. Description 필드에 평가에 대한 설명을 입력합니다.

  8. Next 을 선택합니다.

    이 작업은 Select dataset 모달로 진행됩니다.

  9. 에이전트를 평가하는 데 사용되는 데이터 세트를 선택합니다. Existing dataset 또는 Create new dataset 중에서 선택할 수 있습니다.

    기존 데이터 세트를 사용하려면 다음을 수행합니다.

    1. Database and schema 목록에서 데이터 세트가 포함된 데이터베이스와 스키마를 선택합니다.

    2. Select dataset 목록에서 데이터 세트를 선택합니다.

    새 데이터 세트를 생성하려면 다음을 수행합니다.

    1. Source table - Database and schema 목록에서 데이터 세트로 가져올 테이블이 포함된 데이터베이스와 스키마를 선택합니다.

    2. Select source table 목록에서 소스 테이블을 선택합니다.

    3. New dataset location - Database and schema 목록에서 새 데이터 세트를 배치할 데이터베이스와 스키마를 선택합니다.

    4. Dataset name 필드에 데이터 세트 이름을 입력합니다. 이 이름은 선택한 스키마의 스키마 수준 오브젝트 간에 고유해야 합니다.

  10. Next 을 선택합니다.

    이 작업은 Select metrics 모달로 진행됩니다.

  11. Input query 목록에서 입력 쿼리가 포함된 데이터 세트의 열을 선택합니다.

  12. 각 :ui:`System metrics`에 대해 평가에 포함하려는 모든 메트릭의 토글을 활성으로 변경합니다. 평가를 위한 기준값이 포함된 데이터 세트의 열을 선택합니다.

  13. (선택 사항) 사용자 지정 평가를 수행하려면 :ui:`Custom metrics`로 전환합니다.

    1. 사용자 지정 평가 구성이 저장된 스테이지가 포함된 데이터베이스와 스키마를 선택합니다.

    2. 사용자 지정 평가 구성이 저장된 스테이지를 선택합니다.

    3. 사용자 지정 평가를 위한 YAML 구성 파일을 선택합니다.

      참고

      Snowsight 에서는 사용자 지정 평가 정의만 YAML 구성에서 로드됩니다. 나머지 YAML 파일은 계속 유효해야 합니다. YAML 사양 평가의 경우 에이전트 평가 YAML 사양 섹션을 참조하세요.

    4. 각 사용자 지정 메트릭의 경우 평가에 포함하려면 토글을 활성으로 변경합니다. 이 평가에 대한 기준값이 포함된 데이터 세트의 열을 선택합니다.

  14. :ui:`Create`를 선택하여 평가를 생성하고 평가 프로세스를 시작합니다.

언제든지 :ui:`Cancel`을 선택하여 평가 생성을 취소하거나 :ui:`Prev`를 선택하여 이전 모달로 돌아갈 수 있습니다.

SQL

SQL을 사용하여 평가에 대한 정보를 시작하거나 검색하려면 EXECUTE_AI_EVALUATION 함수를 사용합니다. 이 함수에는 다음과 같은 필수 인자가 있습니다.

  • evaluation_job: ‘START’ 또는 ‘STATUS’의 문자열 값입니다.

  • run_parameters: 실행 이름 값이 있는 run_name 키가 포함된 SQL :ref:`OBJECT <label-data_type_object>`입니다.

  • config_file_path: 실행 구성 YAML 파일을 가리키는 스테이지 파일 경로입니다. 이 경로는 서명된 URL일 수 없습니다. YAML 사양 평가의 경우 에이전트 평가 YAML 사양 섹션을 참조하세요.

evaluation_job 값 ‘START’를 사용하여 평가를 시작합니다. 다음 예제에서는 ``@eval_db.eval_schema.metrics/agent_evaluation_config.yaml``의 에이전트 평가 구성을 사용하여 ``run-1``이라는 실행을 시작합니다.

CALL EXECUTE_AI_EVALUATION(
  'START',
  OBJECT_CONSTRUCT('run_name', 'run-1'),
  '@eval_db.eval_schema.metrics/agent_evaluation_config.yaml'
);

실행이 시작된 후 evaluation_job 값 ‘STATUS’를 사용하여 해당 진행 상황을 쿼리할 수 있습니다. 이 호출은 :ref:`AI 가시성 실행 <label-ai_observability_runs>`에 사용되는 형식의 테이블을 반환합니다. 다음 예제에서는 이전 예제에서 시작된 에이전트 평가의 상태를 쿼리합니다.

CALL EXECUTE_AI_EVALUATION(
  'STATUS',
  OBJECT_CONSTRUCT('run_name', 'run-1'),
  '@eval_db.eval_schema.metrics/agent_evaluation_config.yaml'
);

:doc:`작업 </user-guide/tasks-intro>`의 EXECUTE_AI_EVALUATION 함수를 호출하여 평가를 정기적으로 실행하거나 평가의 상태를 확인할 수 있습니다.

평가 결과 검사

평가 결과에는 요청된 메트릭에 대한 정보, 에이전트의 추론 스레드에 대한 세부 정보, 스레드에서 실행된 각 추적에 대한 LLM 계획 스테이지에 대한 정보가 포함됩니다.

Cortex Code

Cortex Code는 cortex-agent 스킬의 두 가지 하위 스킬을 제공합니다. investigate-cortex-agent-evals 하위 스킬을 사용하여 평가를 검사하고 구성 또는 데이터의 문제를 찾습니다. optimize-cortex-agent 하위 스킬을 사용하여 완료된 평가에서 결과를 가져오고 에이전트의 성능을 개선합니다.

Snowsight

Snowsight 의 에이전트에 대한 Evaluations 탭에서는 모든 평가 실행과 해당 요약 결과에 대한 개요를 제공합니다.

Snowsight 에서 평가 결과를 확인하려면 다음을 수행합니다.

  1. Snowsight 에 로그인합니다.

  2. 탐색 메뉴에서 AI & ML » Agents 를 선택합니다.

  3. 평가를 수행할 에이전트를 선택합니다.

  4. Evaluations 탭을 선택합니다.

평가 실행 목록

각 실행에 대한 실행 정보 요약은 다음과 같습니다.

  • RUN NAME – 평가 실행의 이름입니다.

  • # OF RECORDS – 실행의 일부로 수행되고 응답된 쿼리 수입니다.

  • STATUS – 평가 실행의 상태로, 다음 중 하나입니다.

    • 성공 표시기 – 모든 입력이 평가되었으며 결과를 사용할 수 있습니다.

    • 스피너가 표시됨 – 실행이 진행 중이며 아직 사용할 수 있는 정보가 없습니다.

    • 경고 표시기 – 어떤 시점에서 실행에 오류가 발생했습니다. 실행에 일부 메트릭 또는 모든 메트릭을 사용하지 못할 수 있습니다.

  • DATASET – 평가에 사용된 데이터 세트의 이름입니다.

  • AVG DURATION – 실행에 대한 입력 쿼리를 실행하는 데 걸린 평균 시간입니다.

  • LOGICAL CONSISTENCY – 요청된 경우 실행에 대한 논리적 일관성 평가의 모든 입력에 대한 평균입니다.

  • DESCRIPTION – 평가 실행에 대한 설명입니다.

  • CREATED – 실행이 생성되고 시작된 시간입니다.

이 실행에 대해 평가된 각 사용자 지정 메트릭은 평가 메트릭 name 값으로 정의된 자체 열도 수신합니다. 사용자 지정 메트릭에 대한 자세한 내용은 사용자 지정 메트릭 정의하기 섹션을 참조하세요.

평가 실행 개요

Snowsight 에서 개별 실행을 선택하면 실행 개요가 표시됩니다. 이 개요에는 실행 중에 평가된 각 메트릭에 대한 요약 평균과 각 입력 실행에 대한 요약이 포함됩니다. 각 입력 실행에 대한 개요는 다음과 같습니다.

  • STATUS – 평가 실행의 상태로, 다음 중 하나입니다.

    • 성공 표시기 – 모든 입력이 평가되었으며 결과를 사용할 수 있습니다.

    • 스피너가 표시됨 – 실행이 진행 중이며 아직 사용할 수 있는 정보가 없습니다.

    • 경고 표시기 – 어떤 시점에서 실행에 오류가 발생했습니다. 실행에 일부 메트릭 또는 모든 메트릭을 사용하지 못할 수 있습니다.

  • INPUT – 평가에 사용되는 입력 쿼리입니다.

  • OUTPUT – 에이전트가 생성한 출력입니다.

  • DURATION – 입력을 처리하고 출력을 생성하는 데 걸리는 시간입니다.

  • LOGICAL CONSISTENCY – 요청된 경우 입력에 대한 논리적 일관성 평가입니다.

  • EVALUATED – 입력이 처리된 시간입니다.

이 실행에 대해 평가된 각 사용자 지정 메트릭은 평가 메트릭 name 값으로 정의된 자체 열도 수신합니다. 사용자 지정 메트릭에 대한 자세한 내용은 사용자 지정 메트릭 정의하기 섹션을 참조하세요.

레코드 세부 정보

Snowsight 에서 개별 입력을 선택하면 Record details 뷰가 표시됩니다. 이 뷰에는 Evaluation results, Thread details, :ui:`Trace details`의 세 창이 있습니다.

평가 결과

평가 결과는 여기에 자세히 표시됩니다. 각 메트릭에는 입력에 대한 전체 평균의 자체 표시 상자가 있으며, 이를 선택하여 더 많은 정보가 포함된 팝오버를 표시할 수 있습니다. 이 팝오버에는 높은 정확도(80% 이상의 정확도), 중간 정확도(30% 이상의 정확도이지만 높은 정확도는 아님)로 수행된 실행 및 실패한 실행 수에 대한 분석이 포함됩니다.

스레드 세부 정보

각 에이전트 스레드가 실행되는 동안 기록되는 정보입니다. 여기에는 기본적으로 계획 및 응답 생성과 에이전트가 해당 스레드 중에 호출한 각 도구에 대한 스레드 추적이 포함됩니다.

추적 세부 정보

각 추적 창에는 에이전트 실행의 해당 스테이지와 관련된 입력, 처리 및 출력 정보가 포함됩니다. 이 정보는 :ref:`에이전트 모니터링 <label-cortex_agent_log_info>`에서 제공하는 정보와 동일합니다.

SQL

원시 평가 세부 정보를 검색하려면 GET_AI_EVALUATION_DATA (SNOWFLAKE.LOCAL) 함수를 사용합니다. 이 함수에는 다음과 같은 필수 인자가 있습니다.

  • database: 에이전트가 포함된 데이터베이스입니다.

  • schema: 에이전트가 포함된 스키마입니다.

  • agent_name: 에이전트의 이름입니다.

  • agent_type: 문자열 상수 ‘CORTEX AGENT’입니다. 이 값은 대/소문자를 구분하지 않습니다.

  • run_name: 검색할 평가 실행의 이름입니다.

이 함수는 평가 결과 테이블 형식 에 설명된 이벤트 데이터의 테이블을 반환합니다. 다음 예제에서는 eval_db.eval_schema 스키마에 저장된 evaluated_agent``라는 에이전트의 ``run-1 실행에 대한 전체 평가 세부 정보를 표시합니다.

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_EVALUATION_DATA(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT',
  'run-1')
);

단일 레코드에 대한 쿼리 추적

평가 추적에서 단일 레코드에 액세스하려면 GET_AI_RECORD_TRACE (SNOWFLAKE.LOCAL) 함수를 사용합니다. 이 함수에는 다음과 같은 필수 인자가 있습니다.

  • database: 에이전트가 포함된 데이터베이스입니다.

  • schema: 에이전트가 포함된 스키마입니다.

  • agent_name: 에이전트의 이름입니다.

  • agent_type: 문자열 상수 ‘CORTEX AGENT’입니다. 이 값은 대/소문자를 구분하지 않습니다.

  • record_id: 필터링할 레코드 ID입니다.

이 함수는 평가 결과 테이블 형식 에 설명된 이벤트 데이터의 테이블을 반환합니다. 다음 예제에서는 eval_db.eval_schema 스키마에 저장된 ``evaluated_agent``라는 에이전트의 레코드 ``9346efc3-5dd6-4038-9b1a-72ca3d3b768c``에 대한 추적을 표시합니다.

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_RECORD_TRACE(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT',
  '9346efc3-5dd6-4038-9b1a-72ca3d3b768c'
));

실행에 대한 쿼리 평가 오류 및 경고

평가 실행 중에 발생한 경고 및 오류에 대한 로그에 액세스하려면 GET_AI_OBSERVABILITY_LOGS (SNOWFLAKE.LOCAL) 함수를 사용합니다. 이 함수에는 다음과 같은 필수 인자가 있습니다.

  • database: 에이전트가 포함된 데이터베이스입니다.

  • schema: 에이전트가 포함된 스키마입니다.

  • agent_name: 에이전트의 이름입니다.

  • agent_type: 문자열 상수 ‘CORTEX AGENT’입니다. 이 값은 대/소문자를 구분하지 않습니다.

이 함수는 평가 결과 테이블 형식 에 설명된 이벤트 데이터의 테이블을 반환합니다. 다음 예제에서는 eval_db.eval_schema 스키마에 저장된 evaluated_agent``라는 에이전트의 ``run-1 실행에 대한 오류와 경고를 확인합니다.

SELECT * FROM TABLE(SNOWFLAKE.LOCAL.GET_AI_OBSERVABILITY_LOGS(
  'eval_db',
  'eval_schema',
  'evaluated_agent',
  'CORTEX AGENT')
)
  WHERE TRUE
  AND (record:"severity_text"='ERROR' or record:"severity_text"='WARN')
  AND record_attributes:"snow.ai.observability.run.name"='run-1';

참고

recordrecord_attributes``의 필드는 변경될 있지만, ``record:"severity_text"record_attributes:"snow.ai.observability.run.name" 필드는 AI 가시성 로그에 존재하도록 보장됩니다.

에이전트 평가 YAML 사양

YAML 파일을 정의하여 에이전트 평가를 구성하려면 사용자 지정 메트릭 정의를 포함하여 다음과 같은 세 가지 최상위 수준 키가 있습니다.

  • (선택 사항) dataset: 평가를 위한 데이터 세트를 생성하는 방법에 대한 정의입니다. 이 값은 YAML 사양을 사용하여 Snowsight 에서 평가를 시작하거나 기존 데이터 세트를 사용하는 경우 선택 사항입니다.

  • evaluation: 평가할 에이전트의 설정입니다.

  • metrics: 사용자 지정 메트릭에 대한 정의를 포함하여 평가 실행 중에 기록된 메트릭입니다.

데이터 세트 정의

dataset 값은 기존 테이블 데이터에서 새 데이터 세트를 정의하며, 입력 쿼리 및 기준값에 대한 열을 매핑합니다. ground_truth 열에 필요한 구조의 경우 데이터 세트 형식 섹션을 참조하세요. dataset 값의 키는 다음과 같습니다.

  • dataset_type: 문자열 상수 “CORTEX AGENT”입니다. 이 값은 대/소문자를 구분하지 않습니다.

  • table_name: 데이터 세트의 내용에 사용할 테이블의 정규화된 이름입니다.

  • dataset_name: 생성된 데이터 세트의 이름입니다.

  • column_mapping: 데이터 세트를 생성할 테이블의 열에 필요한 평가 입력 열 query_text 및 출력 열 ``ground_truth``의 매핑입니다.

결과 데이터 세트는 생성된 테이블과 동일한 데이터베이스 및 스키마에 저장됩니다.

다음의 데이터 세트 정의 예제에서는 evals_db.evals_schema.evaluation_data 테이블에서 ``user_question``을 입력으로 사용하고 ``expected_outcome``을 기준값으로 정의하여 생성된 ``evaluation_input``이라는 데이터 세트를 보여줍니다.

dataset:
 dataset_type: "CORTEX AGENT"
 table_name: "evals_db.evals_schema.evaluation_data"
 dataset_name: "evaluation_input"
 column_mapping:
   query_text: "user_question"
   ground_truth: "expected_outcome"

에이전트 구성

evaluation 값은 평가를 수행할 에이전트의 구성을 설정합니다. evaluation 값의 키는 다음과 같습니다.

  • agent_params: 평가를 수행할 에이전트를 설명하는 사전입니다. 이 값은 다음 키를 사용합니다.

    • agent_name: 평가할 에이전트의 이름입니다.

    • agent_type: 문자열 상수 “CORTEX AGENT”입니다. 이 값은 대/소문자를 구분하지 않습니다.

  • (선택 사항) run_params: 이 평가 실행을 식별하기 위한 메타데이터입니다. 이 값은 다음 키를 사용합니다.

    • (선택 사항) label: 이 평가의 레이블입니다.

    • (선택 사항) description: 평가에 대한 자세한 설명입니다.

  • source_metadata: 평가에 사용되는 데이터 세트를 설명하는 사전입니다. 이 값은 다음 키를 사용합니다.

    • type: 문자열 상수 “DATASET”입니다. 이 값은 대/소문자를 구분하지 않습니다.

    • dataset_name: 사용할 데이터 세트의 이름입니다.

다음의 에이전트 구성 예제에서는 evaluation_input 데이터 세트를 사용하여 Basic evaluation 레이블이 지정된 ``evaluated_agent``라는 에이전트를 실행합니다.

evaluation:
 agent_params:
   agent_name: "evaluated_agent"
   agent_type: "CORTEX AGENT"
  run_params:
   label: "Basic evaluation"
  source_metadata:
   type: "DATASET"
   dataset_name: "evaluation_input"

메트릭 선택

metrics 값은 자체 사용자 지정 메트릭 정의를 포함하여 평가할 메트릭의 시퀀스입니다. 미리 정의된 메트릭에 허용되는 값은 다음과 같습니다.

  • answer_correctness: 기준값 출력에 대한 에이전트의 응답 정확성을 측정합니다.

  • logical_consistency: 에이전트 지침, 계획 및 도구 호출 전반에 걸쳐 일관성을 측정합니다. 이 메트릭은 참조 없는 메트릭이며, 데이터 세트를 사용하지 않습니다.

사용자 지정 메트릭 정의하기

식별자, 프롬프트 및 점수 범위를 제공하여 고유한 사용자 지정 메트릭을 정의할 수 있습니다. 입력한 프롬프트는 실행 추적과 함께 LLM 판단에 전달되어 사용자 지정 평가를 수행합니다. 사용자 지정 메트릭에는 다음과 같은 필수 키-값 페어가 있습니다.

  • name: 메트릭의 이름입니다.

  • score_ranges: 낮음, 중간, 높음 품질 점수 범위를 정의하는 매핑입니다. 이 매핑에서는 다음 키를 사용합니다.

    • min_score: 낮음 품질의 결과를 식별하는 데 사용되는 점수 범위로, 하한 포함부터 상한 제한까지 두 가지 요소의 시퀀스입니다.

    • median_score: 중간 품질의 결과를 식별하는 데 사용되는 점수 범위로, 하한 포함부터 상한 포함까지 두 가지 요소의 시퀀스입니다.

    • max_score: 높음 품질의 결과를 식별하는 데 사용되는 점수 범위로, 하한 제외부터 상한 포함까지 두 가지 요소의 시퀀스입니다.

  • prompt: 에이전트 실행 추적 데이터와 함께 LLM 판단에 전달할 프롬프트 템플릿입니다.

    중요

    이 템플릿에는 ``score_ranges``에 대해 제공된 범위로 표현되는 숫자 값을 생성하는 채점 메커니즘이 포함되어야 합니다.

사용자 지정 메트릭의 프롬프트는 평가 실행 중에 에이전트가 생성한 추적 데이터를 참조할 수 있습니다. Snowflake는 전체 추적을 LLM 판단에 대한 입력으로 전달하지만, GET_AI_RECORD_TRACE 열의 데이터를 직접 참조하는 대체 문자열을 사용하여 특정 정보를 강조할 수 있습니다. 다음 대체 문자열을 사용할 수 있습니다.

대체 문자열

GET_AI_RECORD_TRACE 열

{{input}}

INPUT

{{output}}

OUTPUT

{{ground_truth}}

GROUND_TRUTH

{{tool_info}}

TOOL

{{start_timestamp}}

START_TIMESTAMP

{{duration}}

DURATION_MS

{{span_id}}

SPAN_ID

{{span_type}}

SPAN_TYPE

{{span_name}}

SPAN_NAME

{{llm_model}}

LLM_MODEL

{{error}}

ERROR

{{status}}

STATUS

메트릭 구성 예제

다음 예제에서는 답변의 정확성 및 논리적 일관성 검사를 활성화하는 메트릭 구성을 정의하고, 기준값을 에이전트 출력과 비교하는 방식에 따라 1~10 사이의 점수를 반환하는 사용자 지정 relevance 메트릭도 정의합니다.

metrics:
  # Built-in metrics
  - "answer_correctness"
  - "logical_consistency"
  # Custom metric with prompt
  - name: "relevance"
    score_ranges:
      min_score: [1, 3]
      median_score: [4, 6]
      max_score: [7, 10]
    prompt: |
      Evaluate the relevance of the agent's response to the user's query.
      Rate from 1-10 where:
      1 = Completely irrelevant
      4 = Somewhat irrelevant
      6 = Neutral
      8 = Mostly relevant
      10 = Highly relevant and on-topic

      You can compare the {{output}} with the {{ground_truth}} to help you understand if the contents are relevant or not

      Consider:
      - Does the response address the user's question?
      - Is the information provided appropriate to the context?
      - Are there any tangential or off-topic elements?

전체 예제 구성

이전의 모든 예제 섹션을 결합하면 전체 에이전트 평가 구성이 제공됩니다.

# Optional: Create dataset before running evaluation
dataset:
  dataset_type: "CORTEX AGENT"
  table_name: "EVALS_DB.EVALS_SCHEMA.EVALUATION_DATA"
  dataset_name: "EVALUATION_INPUT"
  column_mapping:
    query_text: "user_question"
    ground_truth: "expected_outcome"

# Evaluation task configuration
evaluation:
 agent_params:
   agent_name: "evaluated_agent"
   agent_type: "CORTEX AGENT"
  run_params:
   label: "Basic evaluation"
  source_metadata:
   type: "DATASET"
   dataset_name: "EVALUATION_INPUT"

  # Built-in metrics (simple strings)
  - "answer_correctness"
  - "logical_consistency"

  # Custom metric definition
  - name: "relevance"
    score_ranges:
      min_score: [1, 3]
      median_score: [4, 6]
      max_score: [7, 10]
    prompt: |
      Evaluate the relevance of the agent's response to the user's query.
      Rate from 1-10 where:
      1 = Completely irrelevant
      4 = Somewhat irrelevant
      6 = Neutral
      8 = Mostly relevant
      10 = Highly relevant and on-topic

      You can compare the {{output}} with the {{ground_truth}} to help you understand if the contents are relevant or not

      Consider:
      - Does the response address the user's question?
      - Is the information provided appropriate to the context?
      - Are there any tangential or off-topic elements?

스테이지에 구성 업로드

에이전트 평가 구성에는 Snowflake가 구문 분석할 수 있는 특정 파일 형식이 있어야 합니다. 다음 스니펫은 evals_db.evals_schema 스키마에 필요한 yaml_file_format``을 생성한 ``evaluation_config 스테이지를 생성하여 에이전트 구성을 업로드하는 방법을 보여줍니다.

CREATE OR REPLACE FILE FORMAT evals_db.evals_schema.yaml_file_format
  TYPE = 'CSV'
  FIELD_DELIMITER = NONE
  RECORD_DELIMITER = '\n'
  SKIP_HEADER = 0
  FIELD_OPTIONALLY_ENCLOSED_BY = NONE
  ESCAPE_UNENCLOSED_FIELD = NONE;

CREATE OR REPLACE STAGE evals_db.evals_schema.evaluation_config
  FILE_FORMAT = evals_db.evals_schema.yaml_file_format;

탐색 메뉴로 이동하여 Ingestion » Add Data`를 선택하고 :ui:`Load files into a Stage`를 선택해 |sf-web-interface| 를 통해 생성된 스테이지에 구성을 업로드합니다. SQL :doc:/sql-reference/sql/put` 명령을 사용하여 로컬 YAML 파일에 업로드할 수도 있습니다. 다음 예제에서는 로컬 파일 /Users/dev/evaluation_config.yaml``을 ``evals_db.evals_schema.evaluation_config 스테이지에 복사하는 방법을 보여줍니다.

PUT file:///Users/dev/evaluation_config.yaml @evals_db.evals_schema.evaluation_config
  AUTO_COMPRESS='false'
  OVERWRITE=TRUE;

작업 공간 </user-guide/ui-snowsight/workspaces>`에서 YAML 을 생성하는 경우, 활성 작업 공간에서 스테이지로 복사할 수 있습니다. 다음 예제에서는 작업 공간에서 ``evals_db.evals_schema.evaluation_config` 스테이지로 evaluation_config.yaml 파일을 복사합니다.

COPY FILES INTO @evals_db.evals_schema.evaluation_config
  FROM 'snow://workspace/USER$.PUBLIC.DEFAULT$/versions/live'
  FILES=('custom_metric_config.yaml');

Snowflake는 YAML 파일을 압축하지 않은 상태로 유지하는 것을 권장합니다.

평가 결과 테이블 형식

Cortex Agent 평가에 대한 정보를 반환하는 함수는 모두 다음 열이 있는 테이블을 생성합니다.

데이터 타입

설명

RECORD_ID

VARCHAR

Snowflake가 이 평가 레코드에 대해 할당한 고유 식별자입니다.

INPUT_ID

VARCHAR

Snowflake가 이 평가 입력에 대해 할당한 고유 식별자입니다.

REQUEST_ID

VARCHAR

Snowflake가 이 요청에 대해 할당한 고유 식별자입니다.

TIMESTAMP

TIMESTAMP_TZ

요청이 이루어진 시간(UTC)입니다.

DURATION_MS

INT

에이전트가 응답을 반환하는 데 걸린 시간(밀리초)입니다.

INPUT

VARCHAR

이 평가 레코드의 입력으로 사용되는 쿼리 문자열입니다.

OUTPUT

VARCHAR

이 평가 레코드에 대해 Cortex Agent가 반환한 응답입니다.

ERROR

VARCHAR

요청 중에 발생한 오류에 대한 정보입니다.

GROUND_TRUTH

VARCHAR

이 레코드의 Cortex Agent 출력을 평가하는 데 사용되는 기준값 정보입니다.

METRIC_NAME

VARCHAR

이 레코드에 대해 평가된 메트릭의 이름입니다.

EVAL_AGG_SCORE

NUMBER

이 레코드에 할당된 평가 점수입니다.

METRIC_TYPE

VARCHAR

평가 중인 메트릭의 유형입니다. 기본 제공 메트릭의 경우 값은 ``system``입니다. 사용자 지정 메트릭의 경우 값은 ``custom``입니다.

METRIC_STATUS

VARIANT

이 레코드에 대한 에이전트의 HTTP 응답에 대한 정보가 포함된 맵으로, 다음 키가 포함되어 있습니다.

  • status: 응답의 HTTP 상태 코드입니다.

  • message: 상태 응답에서 전송된 HTTP 메시지입니다.

METRIC_CALLS

ARRAY

계산된 메트릭에 대한 정보가 포함된 VARIANT 값의 배열입니다. 각 배열 항목에는 메트릭의 기준, 메트릭 점수에 대한 설명, 메타데이터가 포함됩니다. 각 항목의 키는 다음과 같습니다.

  • criteria: 응답 정확성을 평가하기 위해 LLM 판단에서 사용한 기준입니다.

  • explanation: 점수가 할당된 이유에 대한 설명입니다.

  • full_metadata: LLM 판단에 따른 이 메트릭의 처리에 대한 메타데이터와 정보가 포함된 VARIANT 값입니다. 이 맵의 키는 다음과 같습니다.

    • completion_tokens: 이 메트릭 평가 호출에 대해 LLM에 의해 생성된 출력 토큰의 수입니다.

    • guard_tokens: 이 메트릭 평가 호출을 위해 Cortex Guard에서 사용한 토큰 수입니다.

    • normalized_score: 원래 평가 점수는 [0.0, 1.0] 범위로 정규화되었으며, 소수점 이하 두 자리까지 반올림됩니다.

    • original_score: 레코드에 대해 이 메트릭 평가에 의해 할당된 원래 점수입니다.

    • prompt_tokens: LLM 판단에 제공된 프롬프트가 차지하는 토큰 수입니다.

    • total_tokens: 이 계산에 대해 LLM 판단에서 사용한 총 토큰 수입니다.

TOTAL_INPUT_TOKENS

INT

입력 쿼리를 처리하는 데 사용되는 총 토큰 수입니다.

TOTAL_OUTPUT_TOKENS

INT

Cortex Agent에서 생성된 총 출력 토큰 수입니다.

LLM_CALL_COUNT

INT

에이전트 또는 평가 판단으로 LLM이 호출된 횟수를 계산합니다.

모델 가용성

에이전트 평가는 현재 리전 간 추론을 사용하는 claude-4-sonnetclaude-3-5-sonnet 모델만 지원합니다. Snowflake는 계정 설정에 따라 이러한 모델에서 자동으로 선택합니다.

모델

클라우드 간(모든 리전)

AWS US

AWS US 상업 정부

AWS EU

AWS APJ

claude-4-sonnet

claude-3.5-sonnet

알려진 제한 사항

Cortex Agent 평가에는 다음 제한 사항이 적용됩니다.

  • 에이전트 응답 시간 및 처리량: 평가 중에 처리할 수 있는 입력 수는 에이전트 응답 시간과 추적 세부 정보의 양에 따라 제한됩니다. 평가 시간 초과 또는 장시간 지연이 발생하는 경우 평가 데이터를 분할합니다. 예를 들어, 다양한 도구를 호출하도록 보장되는 쿼리가 있는 경우, 공통 도구 호출을 기준으로 데이터를 분할할 수 있습니다. 시간 초과가 발생하는 사용자 지정 평가가 있는 경우, 프롬프트를 구체화하거나 줄입니다. 에이전트 출력 중 하나의 특정 요소에만 집중하도록 사용자 지정 평가를 분할하는 것도 고려할 수 있습니다.

  • 기준값 부실: 입력 쿼리의 표현 방식에 따라 시간이 지남에 따라 결과가 드리프트되어 평가 결과의 정확도가 떨어질 수 있습니다. 특히, 입력 쿼리를 특정 절대 날짜 및 시간으로 시도하고 범위를 지정해야 합니다. 예를 들어, What was our revenue?What was our revenue for the first quarter?``의 입력 쿼리는 모두 드리프트를 경험하지만, ``What was our revenue between January and March of 2025? 쿼리는 평가 데이터에서 일관되게 참조할 수 있는 특정 기간으로 범위가 지정됩니다.

비용 고려 사항

에이전트 평가는 Cortex Agent를 실행하여 평가를 위한 출력을 생성하며, LLM 판단으로 평가 메트릭을 계산합니다. 기준값 쿼리에 대해 에이전트를 실행할 때마다 요금이 부과됩니다. 평가의 LLM 판단은 AI_COMPLETE 함수로 실행되며, Snowflake가 판단하기 위해 선택한 모델에 따라 요금이 부과됩니다. 또한 다음과 같은 경우에도 요금이 부과됩니다.

  • 평가 실행 관리를 위해 사용되는 작업에 대한 웨어하우스 요금

  • 평가 메트릭을 계산하는 데 사용되는 쿼리에 대한 웨어하우스 요금

  • 데이터 세트 및 평가 결과에 대한 저장소 요금

  • Snowsight 에서 확인한 평가 결과를 검색하기 위한 웨어하우스 요금

비용 추정에 대한 자세한 내용은 전체 비용 파악하기 섹션을 참조하세요. 전체 비용 정보는 `Snowflake Service Consumption Table`_을 참조하세요.