<!-- Canonical URL: https://ask.atlascloud.ai/it/migrate-together-ai-batch-job-without-losing-request-ids -->

# Come si migra un job batch di Together AI senza perdere gli ID delle richieste?

> Mantieni invariato ogni custom_id dell'applicazione e archivia separatamente gli ID di file, batch e risposta dei due provider. Valida l'insieme completo prima dell'invio, unisci output ed errori per ID e registra i tentativi senza modificare la chiave di business.

Tratta ogni `custom_id` di origine come dato applicativo immutabile. Copialo senza modifiche nella richiesta di destinazione, salva gli ID di batch e risposta del nuovo provider in campi separati e riconcilia i risultati per `custom_id`, non per ordine del file.

La distinzione importante è tra l'identificatore dell'applicazione e quelli emessi dai provider. Conserva il primo e mappa gli altri.

## Inventaria tutti gli identificatori

L'input batch Together usa JSONL. Ogni riga contiene un `custom_id` univoco e il corpo della richiesta. Batch, file di input, file di output e risposta possono avere ID diversi.

| Identificatore | Proprietario | Regola di migrazione |
|---|---|---|
| `custom_id` | Applicazione | Conservare esattamente |
| ID batch di origine | Together | Salvare come metadato di origine |
| ID batch di destinazione | Provider target | Salvare separatamente |
| ID dei file | Ogni provider | Non usare come chiave di business |
| ID risposta | API del modello | Conservare per supporto e fatturazione |

Non sostituire `custom_id` con il numero di riga, salvo che sia già una chiave durevole. L'ordine può cambiare e gli errori possono finire in un file separato.

## Crea un registro di migrazione

Prima dell'invio, crea una riga per ogni richiesta logica:

```json
{
  "custom_id": "invoice-2026-00421",
  "source_batch_id": "batch_source",
  "target_batch_id": null,
  "payload_sha256": "...",
  "state": "prepared"
}
```

Rendi `custom_id` univoco nel set e aggiungi un hash del corpo normalizzato. L'hash rileva modifiche senza memorizzare un'altra copia del contenuto sensibile.

## Converti l'involucro, non l'identità

Gli involucri batch possono differire. Gli esempi Together mettono `custom_id` accanto a `body`; un'altra API compatibile con OpenAI può richiedere anche `method` e `url`.

```json
{"custom_id":"invoice-2026-00421","method":"POST","url":"/v1/chat/completions","body":{"model":"target-model","messages":[{"role":"user","content":"Classify this record"}]}}
```

Modifica endpoint, modello e parametri incompatibili nel convertitore. Tratta il `custom_id` di origine come stringa opaca, senza tagliarlo, tradurlo o rigenerarlo.

## Valida prima dell'invio

Controlla il JSONL:

* ogni riga si analizza da sola;
* ogni `custom_id` esiste ed è univoco;
* l'insieme degli ID corrisponde al manifesto;
* ogni corpo rispetta lo schema dell'endpoint target.

Registra hash e numero di righe del file finale. Carica proprio quell'artefatto e collega gli ID restituiti al registro.

## Riconcilia insieme output ed errori

Dopo il completamento, scarica output ed errori. Indicizza ogni riga per `custom_id` e confronta la loro unione con il set inviato.

Classifica ogni ID come riuscito, fallito, mancante o duplicato. Un batch completato non è necessariamente riconciliato. Ogni ID deve avere un solo esito terminale.

## Riprova senza cambiare identità

Crea un nuovo batch con sole richieste fallite o mancanti. Mantieni lo stesso `custom_id` e incrementa `attempt` nel registro.

Se il target vieta il riuso degli ID, conserva l'originale in un campo applicativo e crea una mappatura reversibile per l'ID di trasporto.

## Effettua il passaggio in sicurezza

Inizia con un batch piccolo e rappresentativo. Confronta successo, latenza, token, output, errori e costo. Mantieni risultati di origine e destinazione in parallelo finché la riconciliazione è deterministica.

Automatizza tre asserzioni: nessun ID sconosciuto, nessun esito terminale duplicato e nessun ID mancante.

## In sintesi

Conserva il `custom_id` applicativo, converti soltanto l'involucro del provider e mantieni un registro delle mappature. Riconcilia output ed errori per ID, registra i tentativi e passa al target solo quando ogni richiesta ha un esito terminale.

## FAQ

### Quale ID deve rimanere stabile durante la migrazione di un batch Together?

Conserva il custom_id assegnato dall'applicazione. Gli ID di batch, file e risposta dei provider sono metadati separati, non la chiave di business.

### Posso riconciliare i risultati usando il numero di riga?

No. L'ordine può cambiare e le richieste fallite possono finire in un altro file. Riconcilia l'unione di output ed errori mediante custom_id.

### Cosa deve contenere il registro di migrazione?

Salva custom_id, hash del payload normalizzato, ID di batch e file di origine e destinazione, numero di tentativo, timestamp e un solo stato terminale per richiesta.

### Un nuovo tentativo deve avere un custom_id diverso?

In genere no. Mantieni l'identificatore di business e incrementa attempt. Se l'ID di trasporto deve essere unico, conserva una mappatura reversibile al custom_id originale.

### Come individuo le richieste perse?

Confronta gli ID inviati con l'unione degli ID riusciti e falliti. Segnala ID mancanti, sconosciuti o duplicati prima di completare la riconciliazione.

### Posso riutilizzare invariato un file di input Together?

Solo se la destinazione accetta lo stesso involucro, endpoint, modello e parametri. Di solito serve un convertitore che conservi custom_id.
