language:
- pt
license: apache-2.0
size_categories: - 10k<n<100k
task_categories: - text-generation
tags: - sft
- tool-calling
- agentic
- instruction-following
- portuguese
- uncensored
- synthetic
configs: - config_name: default
data_files: dataset_final.jsonl
ptbr-sft-uncensored
Dataset SFT em português (BR) para treinar uma LLM com cinco capacidades:
| Categoria | Cobertura |
|---|---|
toolcalling |
chamadas de função (formato OpenAI/HF tools), escolha de ferramenta, erro e recuperação, ferramenta ausente, caso negativo (quando NÃO chamar) |
agentic |
cadeias multi-passo com dependência entre chamadas, esclarecimento antes de agir, verificação de resultado |
instruction |
restrições verificáveis: contagem de frases/palavras, JSON puro, letras iniciais, tabelas, palavras proibidas, formato markdown |
humor |
piadas, trocadilhos, cordel, analogias, copywriting engraçado |
opiniao |
"uncensored" benigno: posições firmes sem hedge, conselhos diretos sem sermão, ficção escura, tolerância a palavrões do usuário — sem conteúdo genuinamente nocivo (armas, malware, etc.) |
Formato: JSONL de conversas no estilo chat (messages), com tools nos exemplos de tool calling (compatível com TRL/transformers apply_chat_template).
Arquivos
seed.jsonl— 42 exemplos escritos à mão, núcleo de qualidade de cada categoria.generate_dataset.py— gerador completo (ver modos abaixo).teacher_prompts.jsonl/templates.jsonl/dataset_final.jsonl— gerados pelos comandos.
Como gerar em escala (precisa de compute)
1. Tool calling e agentic — sem LLM, roda em CPU
python generate_dataset.py templates --n 45000 --out templates.jsonl
Determinístico com --seed. Escala a centenas de milhares; custo ~minutos de cpu-basic.
2. Humor, opinião e instruction complexo — destilação com modelo professor
python generate_dataset.py prompts --n 8000 --out teacher_prompts.jsonl
Depois, rodar os prompts com um modelo professor via vLLM em GPU (ex.: Qwen/Qwen3-32B, temperatura 0.8):
# esqueleto: ler teacher_prompts.jsonl, gerar com vLLM, gravar teacher_outputs.jsonl
# cada linha: {"id", "category", "prompt", "output"}
Custo estimado: ~8k gerações curtas em uma a10g ≈ 1–2h de GPU.
3. Merge e validação
python generate_dataset.py merge --templates templates.jsonl \
--teacher teacher_outputs.jsonl --seed-file seed.jsonl \
--n 60000 --out dataset_final.jsonl
Balanceia para ~45% toolcalling / 25% agentic / 15% instruction / 8% humor / 7% opinião, valida JSON de arguments, remove exemplos sem resposta final e embaralha.
Fine-tune sugerido
- Base: Qwen3-1.7B/4B ou Llama-3.2-3B-Instruct, LoRA r=16, 2–3 épocas, lr 1e-4 — via
TRL SFTTrainercomassistant_only_losse chat template que suporte tools.
Limitações conhecidas
- Templates programáticos cobrem padrões repetidos de tool calling; a variedade real de instruções/humor vem da destilação.
- "Uncensored" aqui significa ausência de recusas triviais e opiniões com posição — não geração de conteúdo perigoso.