

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á.

# Prepare dados para modelos de peso aberto
<a name="rft-prepare-data-open-weight"></a>

Ao ajustar modelos de peso aberto com ajuste fino de reforço usando OpenAI-compatible APIs, forneça dados de treinamento trazendo seus próprios prompts no formato JSONL com essa finalidade. `fine-tune`

## Formato e requisitos dos dados de treinamento
<a name="rft-data-format-open-weight"></a>

Os dados de treinamento devem seguir o formato de conclusão de bate-papo do OpenAI com exemplos de 100 a 20 mil. Cada exemplo de treinamento contém:
+ `messages`: nesse campo, inclua a função de usuário, sistema ou assistente contendo o prompt de entrada fornecido ao modelo.
+ `reference_answer`: nesse campo, ele deve conter o resultado esperado ou os critérios de avaliação que sua função de recompensa usa para pontuar a resposta do modelo. Ela não se limita a resultados estruturados — ela pode conter qualquer formato que ajude sua função de recompensa a avaliar a qualidade.
+ [Opcional] Você pode adicionar campos usados pelo avaliador Lambda para avaliação.

**Requisitos:**
+ Formato JSONL com prompts no formato de conclusão de chat OpenAI (um prompt por linha)
+ O objetivo deve ser definido como `fine-tune`
+ Um mínimo de 100 registros no conjunto de dados de treinamento
+ O Amazon Bedrock valida automaticamente o formato do conjunto de dados de treinamento

------
#### [ Example: General question-answering ]

```
{
            "messages": [
                {
                    "role": "system", 
                    "content": "You are a helpful assistant"
                },
                {
                    role": "user", 
                    "content": "What is machine learning?"}
            ],
            "reference_answer": "Machine learning is a subset of artificial intelligence that enables computers to learn and make decisions from data without being explicitly programmed."
            }
```

------
#### [ Example: Math problem ]

```
{
  "id": "sample-001",
  "messages": [
    {
      "role": "system",
      "content": "You are a math tutor"
    },
    {
      "role": "user",
      "content": "Solve: 2x + 5 = 13"
    }
  ],
  "reference_answer": {
    "solution": "x = 4",
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]
  }
}
```

------

## API de arquivos
<a name="fine-tuning-openai-files-api"></a>

Você pode usar a API de OpenAI-compatible arquivos para carregar seus dados de treinamento para trabalhos de ajuste fino. Os arquivos são armazenados com segurança no Amazon Bedrock e usados na criação de trabalhos de ajuste fino. Para obter detalhes completos da API, consulte a [documentação de OpenAI Arquivos](https://platform.openai.com/docs/api-reference/files).

### Carregar arquivo de treinamento
<a name="fine-tuning-openai-upload-file"></a>

Para carregar um arquivo de treinamento, escolha a guia do seu método preferido e siga as etapas:

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Upload training file
with open(TRAINING_FILE_PATH, 'rb') as f:
    file_response = client.files.create(
        file=f,
        purpose='fine-tune'
    )

# Store file ID for next steps
training_file_id = file_response.id
print(f"✅ Training file uploaded successfully: {training_file_id}")
```

------
#### [ HTTP request ]

Faça uma solicitação POST para`/v1/files`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -F purpose="fine-tune" \
  -F file="@training_data.jsonl"
```

------

### Recuperar detalhes do arquivo
<a name="fine-tuning-openai-retrieve-file"></a>

Para recuperar detalhes sobre um arquivo específico, escolha a guia do seu método preferido e siga as etapas:

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Retrieve file details
file_details = client.files.retrieve(training_file_id)

# Print raw response
print(json.dumps(file_details.model_dump(), indent=2))
```

------
#### [ HTTP request ]

Faça uma solicitação GET para`/v1/files/{file_id}`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

### Listar arquivos
<a name="fine-tuning-openai-list-files"></a>

Para listar os arquivos enviados, escolha a guia do seu método preferido e siga as etapas:

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# List files
files_response = client.files.list(purpose='fine-tune')

# Print raw response
print(json.dumps(files_response.model_dump(), indent=2))
```

------
#### [ HTTP request ]

Faça uma solicitação GET para`/v1/files`:

```
curl https://bedrock-mantle.us-west-2.api.aws/v1/files?purpose=fine-tune \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

### Excluir arquivo
<a name="fine-tuning-openai-delete-file"></a>

Para excluir um arquivo, escolha a guia do seu método preferido e siga as etapas:

------
#### [ OpenAI SDK (Python) ]

```
# Requires OPENAI_API_KEY and OPENAI_BASE_URL environment variables
from openai import OpenAI
client = OpenAI()

# Delete file
delete_response = client.files.delete(training_file_id)
```

------
#### [ HTTP request ]

Faça uma solicitação DELETE para`/v1/files/{file_id}`:

```
curl -X DELETE https://bedrock-mantle.us-west-2.api.aws/v1/files/file-abc123 \
  -H "Authorization: Bearer $OPENAI_API_KEY"
```

------

## Características dos dados de treinamento efetivos
<a name="rft-data-characteristics-open-weight"></a>

Dados eficazes de treinamento de RFT requerem três características principais:
+ **Clareza e consistência** — use instruções claras e inequívocas com formatação consistente. Evite rótulos contraditórios, instruções ambíguas ou respostas de referência conflitantes que enganem o treinamento.
+ **Diversidade** — inclua formatos de entrada variados, casos extremos e níveis de dificuldade que refletem os padrões de uso da produção em diferentes tipos e cenários de usuários.
+ **Funções de recompensa eficientes** — Crie funções que sejam executadas rapidamente (segundos, não minutos), que se paralelizem e retornem pontuações consistentes para um treinamento econômico. AWS Lambda

## Propriedades adicionais
<a name="rft-additional-properties-open-weight"></a>

O formato de dados de RFT é compatível com campos personalizados além dos requisitos principais do esquema (`messages` e `reference_answer`). Essa flexibilidade permite que você adicione quaisquer dados adicionais que sua função de recompensa precise para uma avaliação adequada.

**nota**  
Você não precisa configurar isso em sua receita. O formato de dados suporta inerentemente campos adicionais. Basta incluí-los em seus dados de treinamento JSON e eles serão passados para sua função de recompensa no campo `metadata`.

**Propriedades comuns adicionais**
+ `task_id`: identificador único de rastreamento
+ `difficulty_level`: indicador de complexidade do problema
+ `domain`: área ou categoria do assunto
+ `expected_reasoning_steps`: número de etapas na solução

Esses campos adicionais são passados para sua função de recompensa durante a avaliação, permitindo uma lógica de pontuação sofisticada adaptada ao seu caso de uso específico.

**Exemplos com propriedades adicionais**

------
#### [ Chemistry problem ]

```
{
  "id": "chem-001",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful chemistry assistant"
    },
    {
      "role": "user",
      "content": "Predict hydrogen bond donors and acceptors for this SMILES: CCN(CC)CCC(=O)c1sc(N)nc1C"
    }
  ],
  "reference_answer": {
    "donor_bond_counts": 2,
    "acceptor_bond_counts": 4
  }
}
```

O campo `reference_answer` contém o resultado esperado ou os critérios de avaliação que sua função de recompensa usa para pontuar a resposta do modelo. Ele não se limita a resultados estruturados. Ele pode conter qualquer formato que ajude sua função de recompensa a avaliar a qualidade.

------
#### [ Math problem with metadata ]

```
{
  "messages": [
    {
      "role": "system",
      "content": "You are a math tutor"
    },
    {
      "role": "user",
      "content": "Solve: 2x + 5 = 13"
    }
  ],
  "reference_answer": {
    "solution": "x = 4",
    "steps": ["2x = 13 - 5", "2x = 8", "x = 4"]
  },
  "task_id": "algebra_001",
  "difficulty_level": "easy",
  "domain": "algebra",
  "expected_reasoning_steps": 3
}
```

------