

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

# Avalie com pontuadores predefinidos e personalizados
<a name="model-customize-evaluation-preset-custom-scorers"></a>

Ao usar o tipo de avaliação Custom Scorer, o SageMaker Evaluation suporta dois pontuadores integrados (também chamados de “funções de recompensa”) Prime Math e Prime Code retirados da biblioteca de treinamento [volcengine/verl RL](https://github.com/volcengine/verl), ou seu próprio marcador personalizado implementado como uma função Lambda.

## Marcadores integrados
<a name="model-customize-evaluation-builtin-scorers"></a>

**Matemática principal**

O principal marcador matemático espera um conjunto de dados JSONL personalizado de entradas contendo uma pergunta matemática como a prompt/query e a resposta correta como verdade fundamental. O conjunto de dados pode ser qualquer um dos formatos compatíveis mencionados em[Formatos de conjunto de dados compatíveis para Bring-Your-Own-Dataset tarefas (BYOD)](model-customize-evaluation-dataset-formats.md).

Exemplo de entrada do conjunto de dados (expandido para maior clareza):

```
{
    "system":"You are a math expert: ",
    "query":"How many vertical asymptotes does the graph of $y=\\frac{2}{x^2+x-6}$ have?",
    "response":"2" # Ground truth aka correct answer
}
```

**Código Prime**

O marcador de código principal espera um conjunto de dados JSONL personalizado de entradas contendo um problema de codificação e casos de teste especificados no campo. `metadata` Estruture os casos de teste com o nome da função esperado para cada entrada, entradas de amostra e saídas esperadas.

Exemplo de entrada do conjunto de dados (expandido para maior clareza):

```
{
    "system":"\\nWhen tackling complex reasoning tasks, you have access to the following actions. Use them as needed to progress through your thought process.\\n\\n[ASSESS]\\n\\n[ADVANCE]\\n\\n[VERIFY]\\n\\n[SIMPLIFY]\\n\\n[SYNTHESIZE]\\n\\n[PIVOT]\\n\\n[OUTPUT]\\n\\nYou should strictly follow the format below:\\n\\n[ACTION NAME]\\n\\n# Your action step 1\\n\\n# Your action step 2\\n\\n# Your action step 3\\n\\n...\\n\\nNext action: [NEXT ACTION NAME]\\n\\n",
    "query":"A number N is called a factorial number if it is the factorial of a positive integer. For example, the first few factorial numbers are 1, 2, 6, 24, 120,\\nGiven a number N, the task is to return the list/vector of the factorial numbers smaller than or equal to N.\\nExample 1:\\nInput: N = 3\\nOutput: 1 2\\nExplanation: The first factorial number is \\n1 which is less than equal to N. The second \\nnumber is 2 which is less than equal to N,\\nbut the third factorial number is 6 which \\nis greater than N. So we print only 1 and 2.\\nExample 2:\\nInput: N = 6\\nOutput: 1 2 6\\nExplanation: The first three factorial \\nnumbers are less than equal to N but \\nthe fourth factorial number 24 is \\ngreater than N. So we print only first \\nthree factorial numbers.\\nYour Task:  \\nYou don't need to read input or print anything. Your task is to complete the function factorialNumbers() which takes an integer N as an input parameter and return the list/vector of the factorial numbers smaller than or equal to N.\\nExpected Time Complexity: O(K), Where K is the number of factorial numbers.\\nExpected Auxiliary Space: O(1)\\nConstraints:\\n1<=N<=10^{18}\\n\\nWrite Python code to solve the problem. Present the code in \\n```python\\nYour code\\n```\\nat the end.",
    "response": "", # Dummy string for ground truth. Provide a value if you want NLP metrics like ROUGE, BLEU, and F1.
    ### Define test cases in metadata field
    "metadata": {
        "fn_name": "factorialNumbers",
        "inputs": ["5"],
        "outputs": ["[1, 2]"]
    }
}
```

## Pontuadores personalizados (traga suas próprias métricas)
<a name="model-customize-evaluation-custom-scorers-byom"></a>

Personalize totalmente seu fluxo de trabalho de avaliação de modelos com uma lógica de pós-processamento personalizada que permite calcular métricas personalizadas de acordo com suas necessidades. Você deve implementar seu marcador personalizado como uma função AWS Lambda que aceita respostas do modelo e retorna pontuações de recompensa.

### Exemplo de carga útil de entrada Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-input"></a>

Seu AWS Lambda personalizado espera entradas no formato OpenAI. Exemplo:

```
{
    "id": "123",
    "messages": [
        {
            "role": "user",
            "content": "Do you have a dedicated security team?"
        },
        {
            "role": "assistant",
            "content": "As an AI developed by Amazon, I do not have a dedicated security team..."
        }
    ],
    "reference_answer": {
        "compliant": "No",
        "explanation": "As an AI developed by Company, I do not have a traditional security team..."
    }
}
```

### Exemplo de carga útil de saída Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-output"></a>

O contêiner de SageMaker avaliação espera que suas respostas do Lambda sigam este formato:

```
{
    "id": str,                              # Same id as input sample
    "aggregate_reward_score": float,        # Overall score for the sample
    "metrics_list": [                       # OPTIONAL: Component scores
        {
            "name": str,                    # Name of the component score
            "value": float,                 # Value of the component score
            "type": str                     # "Reward" or "Metric"
        }
    ]
}
```

### Definição personalizada de Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-definition"></a>

[Encontre um exemplo de um marcador personalizado totalmente implementado com entrada de amostra e saída esperada em: https://docs.aws.amazon.com/sagemaker/ latest/dg/nova - .html\# -example implementing-reward-functions nova-reward-llm-judge](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html#nova-reward-llm-judge-example)

Use o esqueleto a seguir como ponto de partida para sua própria função.

```
def lambda_handler(event, context):
    return lambda_grader(event)

def lambda_grader(samples: list[dict]) -> list[dict]:
    """
    Args:
        Samples: List of dictionaries in OpenAI format
            
        Example input:
        {
            "id": "123",
            "messages": [
                {
                    "role": "user",
                    "content": "Do you have a dedicated security team?"
                },
                {
                    "role": "assistant",
                    "content": "As an AI developed by Company, I do not have a dedicated security team..."
                }
            ],
            # This section is the same as your training dataset
            "reference_answer": {
                "compliant": "No",
                "explanation": "As an AI developed by Company, I do not have a traditional security team..."
            }
        }
        
    Returns:
        List of dictionaries with reward scores:
        {
            "id": str,                              # Same id as input sample
            "aggregate_reward_score": float,        # Overall score for the sample
            "metrics_list": [                       # OPTIONAL: Component scores
                {
                    "name": str,                    # Name of the component score
                    "value": float,                 # Value of the component score
                    "type": str                     # "Reward" or "Metric"
                }
            ]
        }
    """
```

### Campos de entrada e saída
<a name="model-customize-evaluation-custom-scorers-fields"></a>

**Campos de entrada**


| Campo | Description | Notas adicionais | 
| --- | --- | --- | 
| id | Identificador exclusivo para a amostra | Ecoou de volta na saída. Formato de string | 
| mensagens | Histórico de bate-papo solicitado no formato OpenAI | Matriz de objetos de mensagem | 
| mensagens [] .role | Palestrante da mensagem | Valores comuns: “usuário”, “assistente”, “sistema” | 
| mensagens [] .content | Conteúdo de texto da mensagem | String simples | 
| metadata | Informações de formato livre para auxiliar na avaliação | Objeto; campos opcionais transmitidos dos dados de treinamento | 

**Campos de saída**


**Campos de saída**  

| Campo | Description | Notas adicionais | 
| --- | --- | --- | 
| id | Mesmo identificador da amostra de entrada | Deve corresponder à entrada | 
| pontuação\_remuneração\_agregada | Pontuação geral da amostra | Flutuação (por exemplo, 0,0—1,0 ou intervalo definido pela tarefa) | 
| lista\_de\_métricas | Pontuações de componentes que compõem o agregado | Matriz de objetos métricos | 

### Permissões obrigatórias
<a name="model-customize-evaluation-custom-scorers-permissions"></a>

Certifique-se de que a função de SageMaker execução que você usa para executar a avaliação tenha permissões do AWS Lambda.

```
{
    "Version": "2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "lambda:InvokeFunction"
            ],
            "Resource": "arn:aws:lambda:region:account-id:function:function-name"
        }
    ]
}
```

Certifique-se de que sua função de execução AWS da Função Lambda tenha permissões básicas de execução do Lambda, bem como permissões adicionais que você possa precisar para qualquer chamada downstream. AWS 

```
{
  "Version": "2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "logs:CreateLogGroup",
        "logs:CreateLogStream",
        "logs:PutLogEvents"
      ],
      "Resource": "arn:aws:logs:*:*:*"
    }
  ]
}
```