

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Valuta con punteggi preimpostati e personalizzati
<a name="model-customize-evaluation-preset-custom-scorers"></a>

Quando si utilizza il tipo di valutazione Custom Scorer, SageMaker Evaluation supporta due scorer integrati (denominati anche «funzioni di ricompensa») Prime Math e Prime Code presi dalla libreria di formazione [ volcengine/verl ](https://github.com/volcengine/verl) RL, oppure uno scorer personalizzato implementato come funzione Lambda.

## Built-in Valutatori
<a name="model-customize-evaluation-builtin-scorers"></a>

**Matematica Prime **

Prime Math Scorer si aspetta un set di dati JSONL personalizzato di voci contenente una domanda di matematica e la prompt/query risposta corretta come verità fondamentale. Il set di dati può essere uno qualsiasi dei formati supportati menzionati in. [Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)](model-customize-evaluation-dataset-formats.md)

Esempio di inserimento del set di dati (esteso per maggiore chiarezza):

```
{
    "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
}
```

**Codice Prime **

Il primo code scorer si aspetta un set di dati JSONL personalizzato di voci contenente un problema di codifica e casi di test specificati nel campo. `metadata` Struttura i test case con il nome della funzione previsto per ogni voce, gli input di esempio e gli output previsti.

Esempio di inserimento del set di dati (esteso per maggiore chiarezza):

```
{
    "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]"]
    }
}
```

## Punteggi personalizzati (Bring Your Own Metrics)
<a name="model-customize-evaluation-custom-scorers-byom"></a>

Personalizza completamente il flusso di lavoro di valutazione del modello con una logica di post-elaborazione personalizzata che ti consente di calcolare metriche personalizzate in base alle tue esigenze. È necessario implementare lo scorer personalizzato come funzione AWS Lambda che accetta le risposte del modello e restituisce i punteggi di ricompensa.

### Esempio di Lambda Input Payload
<a name="model-customize-evaluation-custom-scorers-lambda-input"></a>

Il payload ricevuto dalla funzione AWS Lambda Custom Scorer rispecchia il formato del set di dati di valutazione. SageMaker L'intelligenza artificiale rileva il formato del set di dati e invia ogni campione alla tua Lambda nella forma corrispondente, con l'aggiunta della risposta generata dal modello. La tua Lambda deve leggere la risposta dai campi che corrispondono al formato del set di dati che stai utilizzando.

Il contenitore richiama la tua Lambda una volta per campione, passando un elenco che contiene un singolo oggetto campione. La tua Lambda deve iterare l'elenco, ma attualmente contiene esattamente un elemento per chiamata. Le sezioni seguenti mostrano il payload ricevuto da Lambda per ogni formato di set di dati supportato.

#### Formato OpenAI Chat
<a name="model-customize-evaluation-custom-scorers-lambda-input-openai"></a>

```
[
  {
    "id": "123",
    "messages": [
      { "role": "system", "content": "You are helpful." },
      { "role": "user", "content": "What is the capital of France?" },
      { "role": "assistant", "content": "Paris" },
      { "role": "assistant", "content": "The capital of France is Paris." }
    ],
    "reference_answer": { "text": "Paris" }
  }
]
```

Note sul payload OpenAI:
+ La risposta del modello è l'ultimo `assistant` messaggio. Il contenitore aggiunge la risposta del modello come nuovo turno di assistente.
+ Se il set di dati termina già con un messaggio assistente (il turno di verità fondamentale), il payload contiene due messaggi di assistenza finali: il turno di verità fondamentale originale seguito dalla risposta del modello.
+ La verità fondamentale viene fornita anche al livello più alto (la copia normalizzata in fase di esecuzione). `reference_answer.text`
+ `id`è un identificatore generato dal contenitore (presente per questo formato).

#### formato verl
<a name="model-customize-evaluation-custom-scorers-lambda-input-verl"></a>

```
[
  {
    "data_source": "openai/gsm8k",
    "prompt": [
      { "role": "user", "content": "What is the capital of France?" },
      { "role": "assistant", "content": "The capital of France is Paris." }
    ],
    "response": "The capital of France is Paris.",
    "reward_model": { "style": "rule", "ground_truth": "Paris" },
    "extra_info": {
      "reference_answer": { "text": "Paris" },
      "processor_config": { "aggregation": "mean" }
    }
  }
]
```

Note sul payload verl:
+ La risposta del modello è inserita `response` (e viene aggiunta anche come ultima risposta)`assistant`. `prompt`
+ La verità fondamentale viene sempre emessa a. `extra_info.reference_answer.text` È `{"text": ""}` quando il set di dati non fornisce alcuna verità fondamentale. Leggi la verità fondamentale da questo campo.
+ `data_source`il valore predefinito è `"customized"` quando la voce del set di dati non lo imposta.
+ `reward_model`e altri campi specifici di verl (`id`,, `ability``attributes`,`difficulty`) vengono trasmessi solo se presenti nella voce del set di dati. Non vengono aggiunti per impostazione predefinita.

#### Formato Hugging Face Prompt-Completion
<a name="model-customize-evaluation-custom-scorers-lambda-input-hf-prompt"></a>

```
[
  {
    "id": "123",
    "prompt": "What is the capital of France?",
    "completion": "The capital of France is Paris.",
    "reference_answer": { "text": "Paris" }
  }
]
```

Note sul payload Hugging Face: Prompt-Completion 
+ La risposta del modello è presente `completion` (il contenitore sovrascrive il completamento originale del set di dati con la risposta del modello).
+ La verità fondamentale è `reference_answer.text` (il completamento originale del set di dati).

#### Formato Hugging Face Preference
<a name="model-customize-evaluation-custom-scorers-lambda-input-hf-preference"></a>

```
[
  {
    "id": "123",
    "prompt": "What is the capital of France?",
    "completion": "The capital of France is Paris.",
    "chosen": "Paris",
    "rejected": "London",
    "reference_answer": { "text": "Paris" }
  }
]
```

Note sul payload Hugging Face Preference:
+ La risposta del modello è arrivata. `completion`
+ La coppia originale `chosen` e quella `rejected` preferita vengono trasmesse.
+ La verità fondamentale è `reference_answer.text` (risolta da`chosen`).

#### SageMaker Formato di valutazione AI
<a name="model-customize-evaluation-custom-scorers-lambda-input-sm-eval"></a>

```
[
  {
    "id": "123",
    "model_response": "The capital of France is Paris.",
    "query": "What is the capital of France?",
    "response": "Paris",
    "system": "You are a helpful assistant.",
    "reference_answer": { "text": "Paris" }
  }
]
```

Note sul payload di valutazione dell' SageMaker IA:
+ La risposta del modello è arrivata. `model_response` Tutti i campi del set di dati originale vengono trasmessi invariati (`query`,`response`, `system``category`, e`metadata`).
+ La verità fondamentale appare in due campi di primo livello con lo stesso valore: l'originale `response` e. `reference_answer.text` Leggi entrambi.

**Nota**  
Questi sono i payload ricevuti dalla tua Lambda. SageMaker L'intelligenza artificiale prende ogni voce dal tuo set di dati di valutazione, aggiunge la risposta generata dal modello e la invia al tuo valutatore. Scopri come [Formati di set di dati supportati per attività Bring-Your-Own-Dataset (BYOD)](model-customize-evaluation-dataset-formats.md) creare ogni formato di set di dati. Scrivi la tua Lambda per analizzare i campi del formato utilizzato dal tuo set di dati.

### Esempio di payload di output Lambda
<a name="model-customize-evaluation-custom-scorers-lambda-output"></a>

La funzione AWS Lambda deve restituire un oggetto risultato per campione di input. Il contenitore di valutazione SageMaker AI accetta una delle due buste di risposta:

#### Opzione A — Elenco non elaborato (consigliato)
<a name="model-customize-evaluation-custom-scorers-lambda-output-raw"></a>

```
[
  {
    "id": "123",
    "aggregate_reward_score": 0.85,
    "metrics_list": [
      { "name": "factual_accuracy", "value": 0.9, "type": "Reward" },
      { "name": "format_compliance", "value": 0.8, "type": "Metric" }
    ]
  }
]
```

#### Opzione B — API Gateway-style wrapper
<a name="model-customize-evaluation-custom-scorers-lambda-output-wrapped"></a>

In questo formato, `body` è la JSON-encoded stringa dell'elenco dei risultati. Questo è il formato emesso dal modello «Create Reward Function» di Studio.

```
{
  "statusCode": 200,
  "body": "[{\"id\": \"123\", \"aggregate_reward_score\": 0.85, \"metrics_list\": [...]}]"
}
```

Le seguenti note si applicano a entrambe le buste di risposta:
+ Nell'opzione B, `body` deve essere una stringa JSON (non un oggetto JSON annidato) e deve esserlo. `statusCode` `200` Uno stato diverso da 200 fa sì che il contenitore di valutazione consideri il campione come un errore: viene conteggiato `byoc_failure_count` e le relative metriche personalizzate vengono eliminate, ma il processo di valutazione complessivo viene comunque completato.
+ `metrics_list`è facoltativo; se presente, ogni voce deve includere `name``value`, e `type` (o). `"Reward"` `"Metric"`
+ Ogni risultato `id` deve corrispondere a quello del campione di input`id`.

### Definizione Lambda personalizzata
<a name="model-customize-evaluation-custom-scorers-lambda-definition"></a>

Trova un esempio di scorer personalizzato completamente implementato con input di esempio e output previsto su: \#nova -reward-llm-judge-example [ https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html ](https://docs.aws.amazon.com/sagemaker/latest/dg/nova-implementing-reward-functions.html#nova-reward-llm-judge-example)

Utilizzate il seguente schema come punto di partenza per la vostra funzione.

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

def lambda_grader(samples: list[dict]) -> list[dict]:
    """
    Args:
        Samples: List of dictionaries; each sample's shape mirrors your evaluation dataset format
            (OpenAI, verl, Hugging Face Prompt-Completion, Hugging Face Preference, or SageMaker Evaluation).
            See the Sample Lambda Input Payload section above for the per-format shape.
            
        # Example shown is the OpenAI format; other dataset formats use different fields.
        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..."
                }
            ],
            # reference_answer contents vary by dataset; reference_answer.text holds the normalized ground truth
            "reference_answer": {
                "text": "No, as an AI developed by Company, I do not have a dedicated 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"
                }
            ]
        }
    """
```

### Campi di input e output
<a name="model-customize-evaluation-custom-scorers-fields"></a>

**Campi di input **


| Campo | Description | Note aggiuntive | 
| --- | --- | --- | 
| id | Identificatore univoco per il campione | Riprodotto nell'output. Stringa. Presente per i formati OpenAI, Hugging Face e SageMaker AI Evaluation; per verl appare solo se impostato nella voce del set di dati. | 
| reference\_answer.text | Verità fondamentale normalizzata per il campione | Presente in tutti i formati (di primo livello per la maggior parte; under extra\_info per verl). Il valore è "" quando il set di dati non fornisce alcuna verità fondamentale. Leggi la verità fondamentale da questo campo. | 
| messages | Cronologia chat ordinata (solo OpenAI-format set di dati) | Matrice di oggetti messaggio. La risposta del modello è l'ultimo assistant messaggio. | 
| messaggi [] .role | Relatore del messaggio | Valori comuni: «utente», «assistente», «sistema» | 
| messaggi [] .content | Contenuto testuale del messaggio | Stringa normale | 
| prompt | Richiesta di input (formati Hugging Face: string; verl: chat array) | Per verl, la risposta del modello viene aggiunta anche come turno finale. assistant | 
| completion | Risposta del modello (formati Hugging Face Prompt-Completion e Preference) | Il contenitore sovrascrive il completamento originale del set di dati con la risposta del modello. | 
| scelto o rifiutato | Risposte preferite e rifiutate (formato Hugging Face Preference) | Passato dal set di dati. La verità fondamentale si risolve da. chosen | 
| risposta | Risposta del modello (verl) /risposta fondamentale (valutazione AI) SageMaker  | Nella valutazione dell' SageMaker IA, ciò vale per la verità fondamentale originale (lo stesso valore di). reference\_answer.text | 
| model\_response | Risposta generata dal modello (formato di valutazione SageMaker AI) | Stringa | 
| data\_source, reward\_model, extra\_info | campi specifici di verl | data\_sourceil valore predefinito è «personalizzato». reward\_model e altri campi verl vengono passati solo se presenti nella voce del set di dati. | 
| metadati | Free-form informazioni per agevolare la classificazione | Oggetto; campi opzionali trasmessi dal set di dati | 

**Campi di output **


**Campi di output**  

| Campo | Description | Note aggiuntive | 
| --- | --- | --- | 
| id | Stesso identificatore del campione di input | Deve corrispondere all'input | 
| aggregate\_reward\_score | Punteggio complessivo del campione | Float (ad esempio, 0,0—1,0 o intervallo definito dall'attività) | 
| metrics\_list | Punteggi dei componenti che compongono l'aggregato | Matrice di oggetti metrici | 

### Autorizzazioni richieste
<a name="model-customize-evaluation-custom-scorers-permissions"></a>

Assicurati che il ruolo di SageMaker esecuzione che usi per eseguire la valutazione disponga delle autorizzazioni AWS Lambda.

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

Assicurati che il ruolo di esecuzione della tua AWS Lambda Function disponga delle autorizzazioni di esecuzione Lambda di base, oltre alle autorizzazioni aggiuntive di cui potresti aver bisogno per qualsiasi chiamata downstream. AWS 

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