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

# Como migrar um trabalho em lote da Together AI sem perder IDs de solicitação?

> Mantenha cada custom_id da aplicação inalterado e armazene separadamente os IDs de arquivo, lote e resposta dos provedores. Valide o conjunto completo antes do envio, una saídas e erros por ID e registre tentativas sem mudar a chave de negócio.

Migre um trabalho em lote da Together AI tratando cada `custom_id` de origem como dado imutável da aplicação. Copie-o sem alterações para a solicitação de destino, guarde IDs de lote e resposta do novo provedor em campos separados e reconcilie resultados por `custom_id`, não pela ordem do arquivo.

A distinção importante é entre o identificador controlado pela aplicação e aqueles emitidos pelos provedores. Preserve o primeiro e mapeie os demais.

## Faça um inventário dos identificadores

A entrada em lote da Together usa JSONL. Cada linha contém um `custom_id` exclusivo e um corpo de solicitação. O lote, os arquivos de entrada e saída e cada resposta podem ter IDs diferentes.

| Identificador | Proprietário | Regra de migração |
|---|---|---|
| `custom_id` | Sua aplicação | Preservar exatamente |
| ID do lote de origem | Together | Guardar como metadado de origem |
| ID do lote de destino | Provedor de destino | Guardar separadamente |
| IDs de arquivos | Cada provedor | Nunca usar como chave de negócio |
| ID de resposta | API do modelo | Preservar para suporte e cobrança |

Não troque `custom_id` pelo número da linha, a menos que ele já seja sua chave durável. A ordem da saída pode mudar e falhas podem aparecer em um arquivo separado.

## Crie um registro de migração

Antes de enviar ao destino, crie uma linha para cada solicitação lógica:

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

Garanta que `custom_id` seja único no conjunto e acrescente um hash do corpo normalizado. Ele detecta alterações acidentais sem armazenar outra cópia de conteúdo sensível.

## Converta o envelope, não a identidade

Provedores podem usar envelopes diferentes. Exemplos da Together colocam `custom_id` ao lado de `body`; outra API em lote compatível com OpenAI também pode exigir `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"}]}}
```

Altere endpoint, modelo e parâmetros incompatíveis em um conversor. Trate o `custom_id` de origem como string opaca: não corte, mude maiúsculas, traduza nem gere novamente.

## Valide antes de enviar

Faça quatro verificações no JSONL:

* cada linha é analisada isoladamente;
* todo `custom_id` existe e é único;
* o conjunto de IDs corresponde ao manifesto;
* cada corpo segue o schema do endpoint de destino.

Registre hash e número de linhas do arquivo final. Envie exatamente esse artefato e vincule os IDs devolvidos ao registro.

## Reconcilie saídas e erros juntos

Quando o lote terminar, baixe saída e erros. Indexe cada linha por `custom_id` e compare a união com o conjunto enviado.

Classifique cada ID como bem-sucedido, com falha, ausente ou duplicado. Um lote concluído ainda pode não estar reconciliado. Só finalize quando cada ID tiver exatamente um resultado terminal.

## Tente novamente sem mudar a identidade

Crie outro lote apenas com solicitações ausentes ou com falha. Mantenha o mesmo `custom_id` e incremente um campo `attempt` no registro, sem mudar a chave de negócio.

Se o destino proibir a reutilização de IDs, conserve o original em um campo da aplicação e gere um ID de transporte com mapeamento reversível. Nunca descarte o identificador original.

## Mude o tráfego com segurança

Comece com um lote pequeno e representativo. Compare sucesso, latência, uso de tokens, saídas, erros e custo. Mantenha tabelas de origem e destino lado a lado até a reconciliação ser determinística.

Automatize três asserções: nenhum ID desconhecido, nenhum resultado terminal duplicado e nenhum ID ausente. Elas são mais importantes que preservar a ordem.

## Em resumo

Preserve o `custom_id` da aplicação, converta apenas o envelope do provedor e mantenha um registro que mapeie os artefatos. Reconcilie saídas e erros por ID, registre novas tentativas e só conclua a mudança quando todas as solicitações tiverem estado terminal.

## FAQ

### Qual ID deve permanecer estável durante a migração de um lote da Together?

Preserve o custom_id atribuído pela aplicação. IDs de lote, arquivo e resposta da Together e do destino devem ser metadados separados, não a chave de negócio.

### Posso reconciliar resultados pelo número da linha?

Não. A ordem pode mudar e solicitações com falha podem estar em outro arquivo. Reconcilie a união das saídas e dos erros pelo custom_id.

### O que deve constar no registro de migração?

Armazene custom_id, hash da carga normalizada, IDs de lote e arquivo de origem e destino, número da tentativa, datas e um estado terminal por solicitação.

### Uma nova tentativa deve receber outro custom_id?

Normalmente não. Mantenha o identificador de negócio e incremente a tentativa. Se o ID de transporte precisar ser único, preserve um mapeamento reversível para o custom_id original.

### Como detectar solicitações perdidas?

Compare os IDs enviados com a união dos IDs de sucesso e erro. Sinalize qualquer ID ausente, desconhecido ou duplicado antes de concluir a reconciliação.

### Posso reutilizar o arquivo de entrada da Together sem mudanças?

Somente se o destino aceitar o mesmo envelope, endpoint, modelo e parâmetros. Em geral, use um conversor que preserve o custom_id.
