Avaliações do Cortex Agent

As avaliações do Cortex Agent permitem monitorar o comportamento e o desempenho do seu agente. Avalie seu agente em relação a métricas de avaliação com e sem referência. Durante a avaliação, a atividade do seu agente é rastreada e monitorada para que você possa garantir que cada etapa do processo avance rumo ao seu objetivo final.

O Snowflake oferece as seguintes métricas para avaliar seu agente:

  • Exatidão da resposta: até que ponto a resposta de um agente à sua consulta preparada corresponde a uma resposta esperada. Essa métrica é mais útil quando o conjunto de dados que alimenta o Cortex Agent é estático.

  • Consistência lógica: mede a consistência entre instruções do agente, planejamento e chamadas de ferramentas. Essa métrica é sem referência, o que significa que você não precisa preparar nenhuma informação em seu conjunto de dados para avaliação.

O Snowflake também permite que você crie métricas de avaliação personalizadas que usam o processo de avaliação de LLM para medir o contexto crítico para o domínio e o caso de uso do seu agente. As métricas personalizadas usam um prompt de LLM e uma metodologia de pontuação, que são passados ​​para o sistema de avaliação para produzir uma pontuação.

Para obter mais detalhes sobre como as avaliações de agentes são conduzidas no Snowflake, incluindo o sistema de avaliação de LLM utilizado para avaliações sem referência, consulte o blog de engenharia do Snowflake Qual é a GPA do seu agente? Uma estrutura para avaliar a confiabilidade do agente de AI. Para obter um exemplo de execução programática de uma avaliação de agente, consulte o guia Primeiros passos com avaliações do Cortex Agents.

Requisitos de controle de acesso

A capacidade de executar uma avaliação do Cortex Agent requer uma função com o seguinte:

  • A função DATABASE ROLE SNOWFLAKE.CORTEX_USER

  • A permissão EXECUTE TASK ON ACCOUNT

  • A permissão USAGE no banco de dados que contém seu agente

  • As seguintes permissões no esquema que contém seu agente:

    • USAGE

    • CREATE FILE FORMAT ON SCHEMA

    • CREATE TASK

    • EXECUTE TASK

  • A permissão USAGE no banco de dados que contém seus dados de avaliação

  • As seguintes permissões no esquema que contém seus dados de avaliação:

    • USAGE

    • EXECUTE TASK

    • Se estiver criando um conjunto de dados a partir de uma tabela de entrada, CREATE DATASET ON SCHEMA

  • O privilégio USAGE ou OWNERSHIP em seu agente

  • O privilégio MONITOR ou OWNERSHIP em seu agente

  • Se estiver usando uma configuração de avaliação de agente, o privilégio READ na área de preparação que contém o arquivo de configuração.

Se o agente que está sendo avaliado usa ferramentas, sua função também precisa de acesso a todas elas.

Além disso, se estiver trabalhando com avaliações no Snowsight, a função que você usa para executar ou inspecionar uma avaliação precisa do privilégio USAGE em seu warehouse padrão.

Preparar um conjunto de dados de avaliação

Antes de iniciar uma avaliação do Cortex Agent, prepare uma tabela contendo suas entradas de avaliação. Esta tabela é utilizada para criar um conjunto de dados para a execução da sua avaliação. Para saber mais sobre conjuntos de dados no Snowflake, consulte Conjuntos de dados do Snowflake.

Cortex Code

Para que Cortex Code auxilie você na criação de um conjunto de dados para sua avaliação, use a sub-habilidade dataset-curation da habilidade cortex-agent do Cortex Code. Para obter mais informações sobre habilidades do Cortex Code, consulte Cortex Code CLI – habilidades.

Formato do conjunto de dados

A tabela utilizada para criar um conjunto de dados para avaliação tem uma coluna de consulta de entrada do tipo VARCHAR que representa sua consulta e uma coluna de saída do tipo VARIANT que contém uma descrição do comportamento esperado do agente. Essa única coluna de saída é utilizada como os dados de referência pelo avaliador de LLM.

Os valores na coluna de saída têm uma chave, ground_truth_output. O valor dessa chave é utilizado na avaliação da correção da resposta. Os avaliadores de LLM usam os dados de referência para avaliar a saída do seu agente, incluindo-a no prompt.

Dica

Aproveite o fato de que dados de referência estão incluídos em um prompt do LLM usando linguagem natural para descrever um tipo de resposta, além de correspondências exatas ou semânticas de resposta. Por exemplo, você pode fornecer dados de referência de Output is in the following JSON format ... seguidos por uma cadeia de caracteres contendo uma descrição da estrutura ou um exemplo JSON em si. Se você precisar de um exame mais rigoroso da saída com base em um prompt totalmente personalizado, crie uma métrica personalizada.

Para trazer um conjunto de dados JSON para uma tabela Snowflake, use a função PARSE_JSON SQL. O exemplo a seguir cria uma nova tabela agent_evaluation_data para usar como conjunto de dados de avaliação e insere uma linha para a consulta de entrada What was the temperature in San Francisco on August 2nd 2019? com dados de referência de 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.",
      }
    ');

Importante

As funções OBJECT_CONSTRUCT e ARRAY_CONSTRUCT retornam resultados diferentes de VARIANT. Use uma função que produza um VAIRANT a partir de sua entrada bruta, como PARSE_JSON, ou chame TO_VARIANT para garantir o tipo de valor.

Os dados fornecidos na coluna ground_truth que não forem utilizados ​​por uma métrica selecionada serão ignorados. Ao realizar uma avaliação usando apenas métricas sem referência, você pode deixar a coluna de saída vazia.

Ao executar sua primeira avaliação, você terá a opção de criar um novo conjunto de dados a partir de uma tabela existente.

Iniciar uma avaliação de agente

Cortex Code

Para que o Cortex Code execute uma avaliação, use a sub-habilidade evaluate-cortex-agent da habilidade cortex-agent do Cortex Code. Para obter mais informações sobre habilidades do Cortex Code, consulte Cortex Code CLI – habilidades.

Snowsight

Nota

As avaliações de agentes são executadas com a função atualmente selecionada no Snowsight, e não com a função padrão. Certifique-se de que uma função com as permissões corretas esteja ativa antes de iniciar uma avaliação.

Inicie a avaliação de um Cortex Agent fazendo o seguinte:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione AI & ML » Agents.

  3. Selecione o agente que deseja avaliar.

  4. Selecione a guia Evaluations.

  5. Selecione New evaluation run.

    O modal New evaluation run ​​será aberto.

  6. No campo Name, forneça um nome para sua avaliação. Esse nome deve ser exclusivo para o agente que está sendo avaliado.

  7. Opcional: no campo Description, forneça quaisquer comentários para a avaliação.

  8. Selecione Next.

    Isso avança para o modal Select dataset.

  9. Selecione o conjunto de dados utilizado para avaliar seu agente. Você pode escolher Existing dataset ou Create new dataset.

    Para usar um conjunto de dados existente:

    1. Na lista Database and schema, selecione o banco de dados e o esquema que contêm seu conjunto de dados.

    2. Na lista Select dataset, selecione seu conjunto de dados.

    Para criar um novo conjunto de dados:

    1. Na lista Source table - Database and schema, selecione o banco de dados e o esquema que contêm a tabela que você deseja importar para um conjunto de dados.

    2. Na lista Select source table, selecione sua tabela de origem.

    3. Na lista New dataset location - Database and schema, selecione o banco de dados e o esquema onde deseja inserir seu novo conjunto de dados.

    4. No campo Dataset name, insira o nome do seu conjunto de dados. Esse nome precisa ser exclusivo entre os objetos de nível de esquema no esquema selecionado.

  10. Selecione Next.

    Isso avança para o modal Select metrics.

  11. Na lista Input query, selecione a coluna do seu conjunto de dados que contém as consultas de entrada.

  12. Para cada uma das System metrics, ative a opção para qualquer métrica que você queira incluir na sua avaliação. Selecione a coluna do seu conjunto de dados que contém os valores de referência para sua avaliação.

  13. (Opcional) Para realizar uma avaliação personalizada, ative Custom metrics.

    1. Selecione o banco de dados e o esquema que contêm a área de preparação onde sua configuração de avaliação personalizada está armazenada.

    2. Selecione a área de preparação onde sua configuração de avaliação personalizada está armazenada.

    3. Selecione o arquivo de configuração YAML para sua avaliação personalizada.

      Nota

      No Snowsight, somente as definições de avaliação personalizada são carregadas da sua configuração YAML. O restante do arquivo YAML ainda deve ser válido. Para a especificação de avaliação de YAML, consulte Especificação de YAML da avaliação de agentes.

    4. Para cada métrica personalizada, ative a opção se desejar incluí-la na sua avaliação. Selecione a coluna do seu conjunto de dados que contém os valores de referência para essa avaliação.

  14. Selecione Create para criar a avaliação e iniciar o processo de avaliação.

A qualquer momento, você pode selecionar Cancel para cancelar a criação da avaliação ou Prev para retornar ao modal anterior.

SQL

Para iniciar ou recuperar informações sobre uma avaliação com SQL, use a função EXECUTE_AI_EVALUATION. Essa função tem os seguintes argumentos obrigatórios:

  • evaluation_job: um valor de cadeia de caracteres “START” ou “STATUS”.

  • run_parameters: um SQL OBJECT contendo a chave run_name, com o valor do nome da sua execução.

  • config_file_path: um caminho de arquivo de área de preparação apontando para o seu arquivo YAML de configuração de execução. Esse caminho não pode ser um URL assinado. Para a especificação de avaliação de YAML, consulte Especificação de YAML da avaliação de agentes.

Use o valor evaluation_job “START” para iniciar uma avaliação. O exemplo a seguir inicia uma execução chamada run-1 usando a configuração de avaliação do agente de @eval_db.eval_schema.metrics/agent_evaluation_config.yaml:

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

Após o início de uma execução, você pode consultar seu progresso com o valor evaluation_job “STATUS”. Essa chamada retorna uma tabela no formato utilizado para execuções do AI Observability. O exemplo a seguir consulta o status da avaliação do agente iniciada no exemplo anterior:

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

Dica

Você pode chamar a função EXECUTE_AI_EVALUATION de uma tarefa para executar uma avaliação regularmente ou verificar o status de uma.

Inspecionar resultados da avaliação

Os resultados da avaliação incluem informações sobre as métricas solicitadas, detalhes dos fluxos de raciocínio do agente e informações sobre a área de preparação de planejamento do LLM para cada rastreamento executado no thread.

Cortex Code

O Cortex Code oferece duas sub-habilidades da habilidade cortex-agent. Use a sub-habilidade investigate-cortex-agent-evals para inspecionar avaliações e encontrar quaisquer problemas em sua configuração ou dados. Use a sub-habilidade optimize-cortex-agent para aproveitar os resultados das avaliações concluídas e melhorar o desempenho do seu agente.

Snowsight

A guia Evaluations de um agente no Snowsight fornece uma visão geral de cada execução de avaliação e seus resultados resumidos.

Para visualizar os resultados da avaliação no Snowsight:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione AI & ML » Agents.

  3. Selecione o agente que deseja avaliar.

  4. Selecione a guia Evaluations.

Listagem de execuções de avaliação

O resumo das informações de cada execução inclui:

  • RUN NAME – o nome da execução da avaliação.

  • # OF RECORDS – o número de consultas realizadas e respondidas como parte da execução.

  • STATUS – o status da execução da avaliação, que pode ser um dos seguintes:

    • Indicador de sucesso – todas as entradas foram avaliadas e os resultados estão disponíveis.

    • Um indicador de carregamento é exibido – a execução está em andamento, sem informações disponíveis ainda.

    • indicador de aviso – a execução apresentou um erro em algum momento. Algumas ou todas as métricas podem estar indisponíveis para a execução.

  • DATASET – o nome do conjunto de dados utilizado para a avaliação.

  • AVG DURATION – a duração média do tempo necessário para executar uma consulta de entrada para a execução.

  • LOGICAL CONSISTENCY – média de todas as entradas da avaliação de consistência lógica para a execução, se solicitada.

  • DESCRIPTION – a descrição da execução da avaliação.

  • CREATED – a hora em que a execução foi criada e iniciada.

Cada métrica personalizada avaliada para esta execução também recebe a própria coluna, definida pelo valor name da métrica de avaliação. Para obter mais informações sobre métricas personalizadas, consulte Definindo uma métrica personalizada.

Visão geral da execução de avaliação

Quando você seleciona uma execução individual no Snowsight, você vê a visão geral da execução. Essa visão geral inclui médias resumidas para cada métrica avaliada durante a execução e um resumo de cada execução de entrada. A visão geral para cada execução de entrada inclui:

  • STATUS – o status da execução da avaliação, que pode ser um dos seguintes:

    • Indicador de sucesso – todas as entradas foram avaliadas e os resultados estão disponíveis.

    • Um indicador de carregamento é exibido – a execução está em andamento, sem informações disponíveis ainda.

    • indicador de aviso – a execução apresentou um erro em algum momento. Algumas ou todas as métricas podem estar indisponíveis para a execução.

  • INPUT – a consulta de entrada utilizada para a avaliação.

  • OUTPUT – a saída produzida pelo agente.

  • DURATION – o tempo necessário para processar a entrada e produzir a saída.

  • LOGICAL CONSISTENCY – a avaliação de consistência lógica para a entrada, se solicitada.

  • EVALUATED – a hora em que a entrada foi processada.

Cada métrica personalizada avaliada para esta execução também recebe a própria coluna, definida pelo valor name da métrica de avaliação. Para obter mais informações sobre métricas personalizadas, consulte Definindo uma métrica personalizada.

Detalhes do registro

Quando você seleciona uma entrada individual no Snowsight, vê a exibição Record details. Essa exibição inclui três painéis: Evaluation results, Thread details e Trace details.

Resultados da avaliação

Seus resultados de avaliação são apresentados aqui em detalhes. Cada métrica tem a própria caixa de apresentação da média geral entre as entradas, que pode ser selecionada para exibir uma janela pop-up contendo mais informações. Essa janela pop-up contém uma análise do número de execuções que apresentaram alta precisão (80% ou mais de precisão), precisão média (30% ou mais, sem chegar ao valor da precisão alta) e que falharam.

Detalhes do thread

As informações registradas durante a execução de cada thread do agente. Isso inclui planejamento e geração de respostas por padrão, bem como um rastreamento de thread para cada ferramenta que o agente invocou durante esse thread.

Detalhes do rastreamento

Cada painel de rastreamento inclui informações de entrada, processamento e saída relevantes para essa etapa da execução do agente. Essas informações são as mesmas fornecidas pelo monitoramento do agente.

SQL

Para recuperar detalhes brutos da avaliação, use a função GET_AI_EVALUATION_DATA (SNOWFLAKE.LOCAL). Essa função tem os seguintes argumentos obrigatórios:

  • database: o banco de dados que contém o agente.

  • schema: o esquema que contém o agente.

  • agent_name: O nome do agente.

  • agent_type: a constante de cadeia de caracteres “CORTEX AGENT”. Esse valor não diferencia maiúsculas de minúsculas.

  • run_name: o nome da execução da avaliação a ser recuperada.

Essa função retorna uma tabela de dados de eventos descrita em Formato da tabela de resultados da avaliação. O exemplo a seguir exibe os detalhes completos da avaliação para uma execução chamada run-1, em que o agente é chamado evaluated_agent e armazenado no esquema eval_db.eval_schema:

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

Consultar rastreamentos para um único registro

Para acessar um único registro de um rastreamento de avaliação, use a função GET_AI_RECORD_TRACE (SNOWFLAKE.LOCAL). Essa função tem os seguintes argumentos obrigatórios:

  • database: o banco de dados que contém o agente.

  • schema: o esquema que contém o agente.

  • agent_name: O nome do agente.

  • agent_type: a constante de cadeia de caracteres “CORTEX AGENT”. Esse valor não diferencia maiúsculas de minúsculas.

  • record_id: O ID do registro para filtrar.

Essa função retorna uma tabela de dados de eventos descrita em Formato da tabela de resultados da avaliação. O exemplo a seguir exibe o rastreamento do registro 9346efc3-5dd6-4038-9b1a-72ca3d3b768c, em que o agente é chamado evaluated_agent e armazenado no esquema eval_db.eval_schema:

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

Consultar erros e avisos de avaliação para uma execução

Para acessar os logs de avisos e erros que ocorreram durante uma execução de avaliação, use a função GET_AI_OBSERVABILITY_LOGS (SNOWFLAKE.LOCAL). Essa função tem os seguintes argumentos obrigatórios:

  • database: o banco de dados que contém o agente.

  • schema: o esquema que contém o agente.

  • agent_name: O nome do agente.

  • agent_type: a constante de cadeia de caracteres “CORTEX AGENT”. Esse valor não diferencia maiúsculas de minúsculas.

Essa função retorna uma tabela de dados de eventos descrita em Formato da tabela de resultados da avaliação. O exemplo a seguir verifica erros e avisos para uma execução chamada run-1, em que o agente é chamado evaluated_agent e armazenado no esquema eval_db.eval_schema:

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';

Nota

Os campos de record e record_attributes estão sujeitos a alterações, mas os campos record:"severity_text" e record_attributes:"snow.ai.observability.run.name" têm presença garantida nos logs do AI Observability.

Especificação de YAML da avaliação de agentes

Para definir o arquivo YAML para configurar uma avaliação do agente, incluindo a definição de métricas personalizadas, existem três chaves de nível superior:

  • (Opcional) dataset: uma definição de como criar um conjunto de dados para a avaliação. Esse valor é opcional ao usar uma especificação YAML para iniciar uma avaliação no Snowsight ou ao usar um conjunto de dados existente.

  • evaluation: configurações para o agente a ser avaliado.

  • metrics: as métricas registradas durante uma execução de avaliação, incluindo definições para métricas personalizadas.

Definição do conjunto de dados

O valor dataset define um novo conjunto de dados a partir de dados de tabela existentes, mapeando colunas para a consulta de entrada e dados de referência. Para obter a estrutura necessária para sua coluna ground_truth, consulte Formato do conjunto de dados. As chaves para o valor dataset são:

  • dataset_type: a constante de cadeia de caracteres «CORTEX AGENT». Esse valor não diferencia maiúsculas de minúsculas.

  • table_name: o nome totalmente qualificado da tabela a ser utilizada para o conteúdo do conjunto de dados.

  • dataset_name: o nome do conjunto de dados criado.

  • column_mapping: o mapeamento da coluna de entrada de avaliação necessária query_text e da coluna de saída ground_truth para as colunas da tabela a partir da qual o conjunto de dados será criado.

O conjunto de dados resultante é armazenado no mesmo banco de dados e esquema da tabela a partir da qual foi construído.

A seguinte definição de conjunto de dados de exemplo mostra um conjunto de dados chamado evaluation_input criado a partir da tabela evals_db.evals_schema.evaluation_data, usando user_question como entrada e expected_outcome para definir dados de referência:

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"

Configuração do agente

O valor evaluation define a configuração para o agente realizar uma avaliação. As chaves para o valor evaluation são:

  • agent_params: um dicionário descrevendo o agente para realizar a avaliação. Esse valor usa as chaves:

    • agent_name: o nome do agente a ser avaliado.

    • agent_type: a constante de cadeia de caracteres «CORTEX AGENT». Esse valor não diferencia maiúsculas de minúsculas.

  • (Opcional) run_params: metadados para identificar essa execução de avaliação. Esse valor usa as chaves:

    • (Opcional) label: o rótulo para essa avaliação.

    • (Opcional) description: uma descrição detalhada da avaliação.

  • source_metadata: um dicionário que descreve o conjunto de dados utilizado para a avaliação. Esse valor usa as chaves:

    • type: a constante de cadeia de caracteres «DATASET». Esse valor não diferencia maiúsculas de minúsculas.

    • dataset_name: o nome do conjunto de dados a ser utilizado.

O exemplo de configuração de agente a seguir executa um agente chamado evaluated_agent com o rótulo Basic evaluation, usando o conjunto de dados evaluation_input:

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

Seleção de métricas

O valor metrics é uma sequência de métricas a serem avaliadas, incluindo suas próprias definições de métricas personalizadas. Os valores aceitos para métricas predefinidas são:

  • answer_correctness: avalie a exatidão da resposta do agente em relação a uma saída de referência.

  • logical_consistency: Avalie a consistência entre instruções do agente, planejamento e chamadas de ferramentas. Essa métrica não depende de referência e não usa um conjunto de dados.

Definindo uma métrica personalizada

É possível definir sua própria métrica personalizada fornecendo um identificador, um prompt e intervalos de pontuação. O prompt fornecido é passado para um avaliador de LLM juntamente com os rastreamentos de execução para conduzir sua avaliação personalizada. As métricas personalizadas têm os seguintes pares chave-valor obrigatórios:

  • name: O nome da métrica.

  • score_ranges: Um mapeamento que define intervalos de pontuação de baixa, média e alta qualidade. Esse mapeamento usa as chaves:

    • min_score: a faixa de pontuação utilizada para identificar resultados de baixa qualidade, como uma sequência de dois elementos, do limite inferior inclusivo ao limite superior exclusivo.

    • median_score: a faixa de pontuação utilizada para identificar resultados de média qualidade, como uma sequência de dois elementos, do limite inferior inclusivo ao limite superior inclusivo.

    • max_score: a faixa de pontuação utilizada para identificar resultados de alta qualidade, como uma sequência de dois elementos, do limite inferior exclusivo ao limite superior inclusivo.

  • prompt: O modelo de prompt a ser passado para o avaliador de LLM juntamente com os dados de rastreamento da execução do agente.

    Importante

    Esse modelo deve incluir um mecanismo de pontuação que produza um valor numérico representado nos intervalos fornecidos para score_ranges.

O prompt de uma métrica personalizada pode fazer referência aos dados de rastreamento gerados pelo agente durante uma execução de avaliação. O Snowflake passa todo o rastreamento como entrada para o avaliador de LLM, mas você pode enfatizar certas informações usando uma cadeia de caracteres de substituição que referencie diretamente os dados em uma coluna GET_AI_RECORD_TRACE. As seguintes cadeias de caracteres de substituição estão disponíveis:

Cadeia de caracteres de substituição

Coluna 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

Exemplo de configuração de métricas

O exemplo a seguir define uma configuração de métricas que habilita verificações de correção de resposta e consistência lógica, e também define uma métrica personalizada relevance que retorna uma pontuação entre 1 e 10 com base em como dados de referência se compara à saída do agente:

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?

Exemplo de configuração completa

A combinação de todas as seções de exemplo anteriores resulta em uma configuração completa de avaliação do agente:

# 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?

Carregar configuração para uma área de preparação

As configurações de avaliação do agente precisam ter um formato de arquivo específico para que o Snowflake as analise. O snippet a seguir demonstra a criação do yaml_file_format necessário no esquema evals_db.evals_schema e, em seguida, cria a área de preparação evaluation_config para carregar uma configuração de agente:

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;

Carregue sua configuração para uma área de preparação criada por meio do Snowsight indo até o menu de navegação, selecionando Ingestion » Add Data e depois Load files into a Stage. Você também pode usar o comando SQL PUT para carregar um arquivo YAML local. O exemplo a seguir demonstra a cópia do arquivo local /Users/dev/evaluation_config.yaml para a área de preparação evals_db.evals_schema.evaluation_config:

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

Se você criar seu YAML em um espaço de trabalho, poderá copiá-lo do seu espaço de trabalho ativo para uma área de preparação. O exemplo a seguir copia o arquivo evaluation_config.yaml do seu espaço de trabalho para a área de preparação evals_db.evals_schema.evaluation_config:

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

Dica

A Snowflake recomenda manter seu arquivo YAML descompactado.

Formato da tabela de resultados da avaliação

As funções que retornam informações sobre uma avaliação do Cortex Agent produzem uma tabela com as seguintes colunas:

Coluna

Tipo de dados

Descrição

RECORD_ID

VARCHAR

O identificador exclusivo atribuído pelo Snowflake para este registro de avaliação.

INPUT_ID

VARCHAR

O identificador exclusivo atribuído pelo Snowflake para esta entrada de avaliação.

REQUEST_ID

VARCHAR

O identificador exclusivo atribuído pelo Snowflake para esta solicitação.

TIMESTAMP

TIMESTAMP_TZ

A hora (em UTC) em que a solicitação foi feita.

DURATION_MS

INT

O tempo, em milissegundos, que o agente levou para retornar uma resposta.

INPUT

VARCHAR

A cadeia de caracteres de consulta utilizada como entrada para este registro de avaliação.

OUTPUT

VARCHAR

A resposta retornada pelo Cortex Agent para este registro de avaliação.

ERROR

VARCHAR

Informações sobre possíveis erros ocorridos durante a solicitação.

GROUND_TRUTH

VARCHAR

As informações de dados de referência usadas para avaliar a saída do Cortex Agent deste registro.

METRIC_NAME

VARCHAR

O nome da métrica avaliada para este registro.

EVAL_AGG_SCORE

NUMBER

A pontuação de avaliação atribuída a este registro.

METRIC_TYPE

VARCHAR

O tipo de métrica que está sendo avaliada. Para métricas internas, o valor é system. Para métricas personalizadas, o valor é custom.

METRIC_STATUS

VARIANT

Um mapa com informações sobre a resposta HTTP do agente para este registro, com as seguintes chaves:

  • status: o código de status HTTP da resposta.

  • message: a mensagem HTTP enviada na resposta de status.

METRIC_CALLS

ARRAY

Uma matriz de valores VARIANT que contêm informações sobre a métrica computada. Cada entrada da matriz contém os critérios da métrica, uma explicação da pontuação da métrica e os metadados. As chaves de cada entrada são:

  • criteria: os critérios utilizados por um avaliador de LLM para avaliar a exatidão da resposta.

  • explanation: uma explicação do motivo pelo qual a pontuação foi atribuída.

  • full_metadata: um valor VARIANT que contém metadados e informações sobre o processamento desta métrica pelo avaliador de LLM. As chaves deste mapa incluem:

    • completion_tokens: o número de tokens de saída gerados pelo LLM para esta chamada de avaliação de métrica.

    • guard_tokens: o número de tokens consumidos pelo Cortex Guard para esta chamada de avaliação de métrica.

    • normalized_score: a pontuação de avaliação original normalizada para o intervalo [0,0, 1,0], arredondada para duas casas decimais.

    • original_score: a pontuação original atribuída por esta avaliação de métrica para o registro.

    • prompt_tokens: o número de tokens consumidos pelo prompt fornecido ao avaliador de LLM.

    • total_tokens: o número total de tokens usados pelo avaliador de LLM para esta computação.

TOTAL_INPUT_TOKENS

INT

O número total de tokens usados para processar a consulta de entrada.

TOTAL_OUTPUT_TOKENS

INT

O número total de tokens de saída produzidos pelo Cortex Agent.

LLM_CALL_COUNT

INT

Conta quantas vezes um LLM foi chamado, seja pelo agente, seja por um avaliador.

Disponibilidade do modelo

As avaliações de agente atualmente são compatíveis com apenas os modelos claude-4-sonnet e claude-3-5-sonnet, usando inferência entre regiões. O Snowflake escolhe automaticamente entre esses modelos com base nas configurações da sua conta.

Modelo

Entre nuvens (qualquer região)

AWS US

AWS US Commercial Gov

AWS EU

AWS APJ

claude-4-sonnet

claude-3.5-sonnet

Limitações conhecidas

As avaliações do Cortex Agent estão sujeitas às seguintes limitações:

  • Tempos de resposta e taxa de transferência do agente: o número de entradas que podem ser processadas durante uma avaliação é limitado pelos tempos de resposta do agente e pela quantidade de detalhes de rastreamento. Se você atingir tempos limite ou longos atrasos em sua avaliação, divida seus dados de avaliação. Por exemplo, se você tiver consultas que certamente invocarão muitas ferramentas diferentes, poderá particionar os dados por invocação de ferramenta comum. Se você tiver uma avaliação personalizada que resulta em tempos limite, refine ou encurte seu prompt. Você também pode considerar dividir as avaliações personalizadas para focar apenas em um elemento específico da saída do seu agente.

  • Desatualização dos dados de referência: dependendo de como você formula suas consultas de entrada, os resultados podem divergir ao longo do tempo e resultar em resultados de avaliação menos precisos. Em particular, você deve tentar limitar as consultas de entrada a datas e horários específicos e absolutos. Por exemplo, ambas as consultas de entrada What was our revenue? e What was our revenue for the first quarter? apresentarão divergência, enquanto a consulta What was our revenue between January and March of 2025? está limitada a um período específico que pode ser referenciado consistentemente nos dados de avaliação.

Considerações sobre custo

As avaliações de agente executam um Cortex Agent para criar a saída para avaliação e avaliadores de LLM para calcular as métricas de avaliação. Você é cobrado por cada execução do agente em relação a uma consulta de dados de referência. Os avaliadores de LLM da avaliação são executados pela função AI_COMPLETE, e você incorre em custos com base no modelo que o Snowflake seleciona para a avaliação. Além disso, você será cobrado pelo seguinte:

  • Cobranças de warehouse para tarefas usadas para gerenciar execuções de avaliação

  • Taxas de warehouse para consultas usadas para calcular métricas de avaliação

  • Custos de armazenamento para conjuntos de dados e resultados de avaliação

  • Custos do warehouse para recuperar os resultados da avaliação visualizados no Snowsight

Para obter mais informações sobre como estimar custos, consulte Compreensão do custo total. Consulte a tabela de consumo de serviços do Snowflake para obter informações completas sobre os custos.