pipeline-sft-livro

Esta skill deve ser usada para pipelines de livro para SFT: extração de ePub, segmentação literária, construção de conjuntos de dados com voz do autor, treinamento de transferência de estilo, fluxos de trabalho LoRA e avaliação de modelo para replicação de voz.

O que é pipeline-sft-livro?

O pipeline de SFT de livros (Book SFT Pipeline) é um sistema completo para converter obras literárias em conjuntos de dados de Fine-Tuning Supervisionado (SFT) e treinar modelos de transferência de estilo. Ele é projetado para desenvolvedores e pesquisadores que desejam criar modelos de linguagem que emulem a voz de autores específicos, a partir de arquivos ePub. O pipeline cobre desde a extração de texto, segmentação inteligente em chunks semânticos (150-400 palavras), geração diversificada de instruções usando múltiplos templates e prompts de sistema, até a construção de datasets no formato JSONL e o treinamento de adaptadores LoRA em modelos base (como Qwen3-8B). A validação inclui testes em cenários modernos para garantir que o estilo foi aprendido em vez de conteúdo memorizado, além de verificação de originalidade com ferramentas como GPTZero. A skill é autônoma e se integra perfeitamente com outras skills do ecossistema, como project-development e context-compression, seguindo padrões de arquitetura de pipeline e compressão de contexto.

Funciona com~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/muratcankoylan/Agent-Skills-for-Context-Engineering/tree/main/examples/book-sft-pipeline

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pipeline SFT de Livros

Um sistema completo para converter livros em conjuntos de dados SFT e treinar modelos de transferência de estilo. Esta skill ensina o pipeline desde o ePub bruto até um modelo que escreve na voz de qualquer autor.

Quando Ativar

Ative esta skill quando:

  • Construir conjuntos de dados de fine-tuning a partir de obras literárias
  • Criar modelos de voz do autor ou transferência de estilo
  • Preparar dados de treinamento para o Tinker ou plataformas SFT similares
  • Projetar pipelines de segmentação de texto para conteúdo de formato longo
  • Treinar modelos pequenos (8B ou menos) com dados limitados

Conceitos Centrais

Os Três Pilares do SFT de Livros

1. Segmentação Inteligente Os chunks de texto devem ser semanticamente coerentes. Interromper no meio de uma frase ensina o modelo a produzir saída fragmentada. Meta: 150-400 palavras por chunk, sempre em limites naturais.

2. Geração Diversa de Instruções Use múltiplos templates de prompt e prompts de sistema para evitar overfitting. Um único estilo de prompt leva à memorização. Use 15+ templates de prompt com 5+ prompts de sistema.

3. Estilo sobre Conteúdo O objetivo é aprender o ritmo e os padrões de vocabulário do autor, não memorizar enredos. Instruções sintéticas descrevem o que acontece sem citar o texto.

Arquitetura do Pipeline

┌─────────────────────────────────────────────────────────────────┐
│                    AGENTE ORQUESTRADOR                          │
│  Coordena fases do pipeline, gerencia estado, lida com falhas   │
└──────────────────────┬──────────────────────────────────────────┘
                       │
       ┌───────────────┼───────────────┬───────────────┐
       ▼               ▼               ▼               ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│  EXTRAÇÃO    │ │ SEGMENTAÇÃO  │ │  INSTRUÇÃO   │ │  CONSTRUTOR  │
│   AGENTE     │ │   AGENTE     │ │   AGENTE     │ │  DATASET     │
│ ePub→Texto   │ │Texto→Chunks  │ │ Chunks→      │ │ Pares→       │
│              │ │ 150-400 pal. │ │ Prompts      │ │ JSONL        │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
                       │
       ┌───────────────┴───────────────┐
       ▼                               ▼
┌──────────────┐               ┌──────────────┐
│  TREINAMENTO │               │  VALIDAÇÃO   │
│   AGENTE     │               │   AGENTE     │
│ LoRA no      │               │ Detector AI  │
│ Tinker       │               │ Originalidade│
└──────────────┘               └──────────────┘

Fase 1: Extração de Texto

Regras Críticas

  1. Sempre prefira ePub em vez de PDF - Erros de OCR tornam-se padrões aprendidos
  2. Use extração em nível de parágrafo - Extraia das tags <p> para preservar quebras
  3. Remova material de front/back matter - Direitos autorais e sumário poluem o dataset
# Extrair texto de parágrafos ePub
from epub2 import EPub
from bs4 import BeautifulSoup

def extract_epub(path):
    book = EPub(path)
    chapters = []
    for item in book.flow:
        html = book.get_chapter(item.id)
        soup = BeautifulSoup(html, 'html.parser')
        paragraphs = [p.get_text().strip() for p in soup.find_all('p')]
        chapters.append('\n\n'.join(p for p in paragraphs if p))
    return '\n\n'.join(chapters)

Fase 2: Segmentação Inteligente

Chunks Menores + Sobreposição

Chunks menores (150-400 palavras) produzem mais exemplos de treinamento e melhor transferência de estilo do que chunks maiores (250-650).

def segment(text, min_words=150, max_words=400):
    paragraphs = text.split('\n\n')
    chunks, buffer, buffer_words = [], [], 0
    
    for para in paragraphs:
        words = len(para.split())
        if buffer_words + words > max_words and buffer_words >= min_words:
            chunks.append('\n\n'.join(buffer))
            # Manter último parágrafo para sobreposição
            buffer = [buffer[-1], para] if buffer else [para]
            buffer_words = sum(len(p.split()) for p in buffer)
        else:
            buffer.append(para)
            buffer_words += words
    
    if buffer:
        chunks.append('\n\n'.join(buffer))
    return chunks

Resultados Esperados

Para um livro de 86.000 palavras:

  • Método antigo (250-650 palavras): ~150 chunks
  • Novo método (150-400 + sobreposição): ~300 chunks
  • Com 2 variantes por chunk: 600+ exemplos de treinamento

Fase 3: Geração Diversa de Instruções

O Insight Principal

Usar um único template de prompt causa memorização. Templates diversos ensinam o estilo subjacente.

SYSTEM_PROMPTS = [
    "Você é um escritor criativo especialista capaz de emular estilos literários específicos.",
    "Você é um escritor literário com profundo conhecimento de estilos clássicos de prosa.",
    "Você é um escritor criativo habilidoso em emular vozes autorais distintas.",
    "Você escreve prosa que captura a essência da literatura modernista.",
    "Você é um escritor talentoso que pode canalizar autores americanos clássicos.",
]

PROMPT_TEMPLATES = [
    "Escreva uma passagem no estilo de {author}: {desc}",
    "Canalize a voz de {author} para escrever sobre: {desc}",
    "No estilo de prosa distinto de {author}, descreva: {desc}",
    "Escreva esta cena como {author} teria escrito: {desc}",
    "Usando a técnica repetitiva de {author}, descreva: {desc}",
    "Capture o ritmo de {author} nesta passagem: {desc}",
    "Escreva como {author}: {desc}",
    "Na voz de {author}, escreva: {desc}",
    "Este é um exercício literário. Escreva como {author}: {desc}",
    "Você consegue escrever no estilo de {author}? {desc}",
]

Geração de Instruções

INSTRUCTION_PROMPT = """Descreva o que está acontecendo neste trecho em 2 a 3 frases.
Foco em: personagens presentes, ações, emoções, cenário.
NÃO cite o texto diretamente.

Trecho:
{text}
"""

# Use um LLM rápido e barato (ex: Gemini Flash)
instruction = llm_call(INSTRUCTION_PROMPT.format(text=chunk))

Fase 4: Construção do Dataset

Formato de Mensagem

{
    "messages": [
        {"role": "system", "content": "Você é um escritor criativo especialista..."},
        {"role": "user", "content": "Escreva no estilo de Autor: Descrição da cena..."},
        {"role": "assistant", "content": "O texto real do livro do chunk..."}
    ]
}

Múltiplas Variantes por Chunk

def build_examples(chunk, instruction, author, variants=2):
    examples = []
    for i in range(variants):
        system = SYSTEM_PROMPTS[i % len(SYSTEM_PROMPTS)]
        template = PROMPT_TEMPLATES[(chunk.id + i) % len(PROMPT_TEMPLATES)]
        user = template.format(author=author, desc=instruction)
        examples.append({"messages": [
            {"role": "system", "content": system},
            {"role": "user", "content": user},
            {"role": "assistant", "content": chunk.text}
        ]})
    return examples

Fase 5: Treinamento LoRA no Tinker

Configuração

CONFIG = {
    "model_name": "Qwen/Qwen3-8B-Base",  # Base, não instruct
    "lora_rank": 32,                      # Adaptador de 352MB
    "learning_rate": 5e-4,                # Mais alto para LoRA
    "batch_size": 4,
    "epochs": 3,
}

Por que Modelo Base?

Use modelos base (pré-treinados), não versões instruction-tuned:

  • Modelos base são mais maleáveis para novos estilos
  • Modelos instruct têm padrões que resistem à sobrescrita
  • Estilo é um padrão de baixo nível que modelos base capturam melhor

Loop de Treinamento

import tinker
from tinker import types

training_client = await service_client.create_lora_training_client_async(
    base_model="Qwen/Qwen3-8B-Base",
    rank=32
)

for epoch in range(3):
    for batch in batches:
        await training_client.forward_backward_async(batch, loss_fn="cross_entropy")
        await training_client.optim_step_async(types.AdamParams(learning_rate=5e-4))

result = await training_client.save_weights_for_sampler_async(name="final")

Fase 6: Validação

Teste de Cenário Moderno

Teste com cenários que não poderiam existir no livro original:

TEST_PROMPTS = [
    "Escreva sobre um barista preparando lattes",
    "Descreva amantes se comunicando por mensagens de texto",
    "Escreva sobre alguém ansioso com as mudanças climáticas",
]

Se o modelo aplicar marcadores de estilo a cenários modernos, ele aprendeu estilo, não conteúdo.

Verificação de Originalidade

# Pesquisar dados de treinamento por frases da saída
grep "frase específica da saída" dataset.jsonl
# Deve retornar: Nenhuma correspondência

Teste com Detector de IA

Teste as saídas com GPTZero, Pangram ou ZeroGPT.

Problemas Conhecidos e Soluções

Vazamento de Nomes de Personagens

Sintoma: O modelo usa nomes de personagens originais em novos cenários. Causa: Diversidade limitada de nomes de um único livro. Solução: Treinar em múltiplos livros ou adicionar exemplos sintéticos.

Modelo Repete Frases Exatas

Sintoma: Saídas contêm frases exatas dos dados de treinamento. Causa: Poucas variações de prompt ou muitos epochs. Solução: Use 15+ templates, limite a 3 epochs.

Saídas Fragmentadas

Sintoma: Frases parecem incompletas. Causa: Segmentação ruim quebrando no meio de um pensamento. Solução: Sempre quebrar em limites de parágrafo.

Diretrizes

  1. Sempre prefira ePub em vez de PDF - Erros de OCR tornam-se padrões aprendidos
  2. Nunca quebre no meio de uma frase - Limites devem ser gramaticalmente completos
  3. Use prompts diversos - 15+ templates, 5+ prompts de sistema
  4. Use modelos base - Não versões instruct
  5. Use chunks menores - 150-400 palavras para mais exemplos
  6. Reserve conjunto de teste - 50 exemplos no mínimo
  7. Teste em cenários modernos - Comprova transferência de estilo vs memorização
  8. Verifique originalidade - Pesquise nos dados de treinamento por frases da saída

Resultados Esperados

MétricaValor
Exemplos de treinamento500-1000 por livro
ModeloQwen/Qwen3-8B-Base
Rank LoRA32
Tamanho do adaptador~350 MB
Tempo de treinamento~15 min
Redução de perda90%+
Sucesso na transferência de estilo~50% perfeito

Estimativa de Custo

ComponenteCusto
LLM (geração de instruções)~$0.50
Treinamento no Tinker (15 min)~$1.50
Total~$2.00

Integração com Skills de Engenharia de Contexto

Este exemplo aplica várias skills da coleção Agent Skills for Context Engineering:

project-development

O pipeline segue o padrão de arquitetura em estágios e idempotente:

  • Adquirir: Extrair texto do ePub
  • Preparar: Segmentar em chunks de treinamento
  • Processar: Gerar instruções sintéticas
  • Analisar: Construir formato de mensagem
  • Renderizar: Gerar JSONL compatível com Tinker
  • Treinar: LoRA fine-tuning
  • Validar: Teste de cenário moderno

Cada fase é retomável e produz artefatos intermediários para depuração.

context-compression

A segmentação é uma forma de compressão de contexto para treinamento. O insight central de context-compression se aplica: a densidade da informação importa mais que a quantidade de informação. Chunks menores e coerentes (150-400 palavras) produzem melhor transferência de estilo do que chunks maiores e diluídos.

A estratégia de dois níveis espelha a avaliação de compressão de contexto:

  • Nível 1: Compressão rápida e determinística
  • Nível 2: Assistida por LLM para casos extremos

multi-agent-patterns

O pipeline usa o padrão supervisor/orquestrador:

  • Orquestrador coordena fases e gerencia estado
  • Agentes especializados (Extração, Segmentação, Instrução, Construtor) têm contextos isolados
  • Cada agente recebe apenas a informação necessária para sua tarefa

Isso corresponde ao princípio de que subagentes existem principalmente para isolar contexto, não para simular papéis.

evaluation

A validação segue o padrão avaliação de estado final:

  • Teste funcional: A saída corresponde aos marcadores de estilo esperados?
  • Verificação de originalidade: O conteúdo é genuinamente gerado?
  • Validação externa: Pontuações de detectores de IA

O teste de "cenário moderno" é uma forma de avaliação fora da distribuição que prova a generalização.

context-fundamentals

A diversidade de prompts previne o colapso da atenção em padrões únicos. Quando treinado com estruturas de prompt idênticas, o modelo memoriza o mapeamento instrução-resposta. Templates diversos forçam a atenção sobre os próprios padrões de estilo.

Referências

Referências internas:

Skills relacionadas da Agent Skills for Context Engineering:

  • project-development - Padrões de arquitetura de pipeline
  • context-compression - Estratégias de compressão
  • multi-agent-patterns - Coordenação de agentes
  • evaluation - Frameworks de avaliação
  • context-fundamentals - Atenção e densidade de informação

Recursos externos:


Metadados da Skill

Criado: 2025-12-26 Última Atualização: 2025-12-28 Autor: Muratcan Koylan Versão: 2.0.0 Independente: Sim (separada da coleção principal de engenharia de contexto)

Individual skills in this repo

This repo contains 19 individual skills — each has its own dedicated page.

advanced-evaluation

This skill should be used for advanced LLM evaluation: LLM-as-judge systems, direct scoring, pairwise comparison, rubric calibration, evaluator bias mitigation, confidence scoring, and automated quality assessment.

bdi-mental-states

This skill should be used when modeling agent mental states with BDI concepts: beliefs, desires, intentions, RDF-to-belief transformations, rational agency traces, cognitive agents, BDI ontologies, and neuro-symbolic AI integration.

comprehensive-research-agent

Ensure thorough validation, error recovery, and transparent reasoning in research tasks with multiple tool calls

context-compression

This skill should be used when long-running agent sessions need context compression, structured summarization, compaction, token-per-task optimization, or durable handoff summaries that preserve decisions, files, risks, and next actions.

context-degradation

This skill should be used for diagnosing and mitigating context degradation: lost-in-middle failures, context poisoning, context clash, context confusion, attention-pattern issues, and agent performance degradation caused by accumulated or conflicting context.

context-fundamentals

This skill should be used to explain or reason about the foundational concepts of context engineering: what context is, the anatomy of a context window, how attention mechanics work, the U-shaped attention curve, why context quality matters more than quantity, and the mental models needed to interpret every other context-engineering decision. Use this for conceptual explanation, onboarding, and background reading. Route operational work to the specialized skills: debugging attention failures goes to context-degradation, token-efficiency work goes to context-optimization, conversation summarization goes to context-compression, and project-shape decisions go to project-development.

context-optimization

This skill should be used for improving context efficiency: context budgeting, observation masking, prefix or KV-cache strategy, partitioning, token-cost reduction, retrieval scoping, and extending effective context capacity without lowering answer quality.

evaluation

This skill should be used when building agent evaluation systems: deterministic checks, regression suites, multi-dimensional rubrics, quality gates, production monitoring, baseline comparison, and outcome measurement for agent pipelines.

filesystem-context

This skill should be used when agent work needs file-backed context: durable scratchpads, tool-output offloading, just-in-time discovery, cross-agent handoff files, filesystem memory, or cleanup policies for context stored outside the prompt.

harness-engineering

This skill should be used when designing autonomous agent harnesses: research loops, evaluation scaffolds, locked and editable surfaces, durable logs, novelty gates, pruning, rollback, PR preparation, and human approval boundaries.

hosted-agents

This skill should be used when designing hosted or background agent infrastructure: sandboxed execution, remote coding environments, warm pools, session persistence, multiplayer collaboration, self-spawning agents, or Modal-style sandboxes.

latent-briefing

This skill should be used when the user asks to "share memory between agents", "KV cache compaction for multi-agent", "orchestrator worker context", "latent briefing", "reduce worker tokens", "cross-agent memory without summarization", or discusses Attention Matching compaction, recursive language models with workers, or token explosion in hierarchical agents.

long-horizon-prompting

This skill should be used when writing, enhancing, or evaluating the launch prompt for a long-running autonomous agent or a parallel multi-agent orchestration attacking a hard problem: pseudo-formal task briefs that define terms and an exact success predicate linguistically, enumerate non-counting outcomes, set persistence rules with explicit stop and return conditions and effort floors, manage a diverse portfolio of parallel approaches with an approach registry and blocked-route bookkeeping, and gate the return on adversarial audit. Route agent topology and coordination protocols to multi-agent-patterns, runtime control surfaces and loop governance to harness-engineering, evaluator and quality-gate construction to evaluation, judge design to advanced-evaluation, and compaction or memory mechanics to context-compression and memory-systems.

memory-systems

This skill should be used for persistent semantic memory in agent systems: cross-session knowledge retention, entity tracking, temporal validity, graph or vector retrieval, memory consolidation, and memory benchmark selection. Route file-backed scratchpads to filesystem-context, handoff summaries to context-compression, and token-efficiency tactics to context-optimization.

multi-agent-patterns

This skill should be used when designing multi-agent systems that need context isolation, supervisor or swarm coordination, explicit handoffs, parallel execution, or a decision on whether multiple agents are justified.

project-development

This skill should be used for project-level decisions about LLM-powered systems: whether an LLM is the right primitive for the task at hand, the shape of a multi-stage batch or agent pipeline, token and cost estimation, choosing between single-agent and multi-agent at the project level, structured output design for downstream parsing, and structuring agent-assisted iteration. Use this when the unit of work is a whole project or a multi-stage pipeline. Route individual tool design to tool-design and individual skill-loading or context-budget tactics to context-optimization.

self-improvement-loops

This skill should be used when the harness, scaffold, workflow, or optimizer itself is the optimization target: recursive self-improvement (RSI) loops, meta-harnesses, self-improving harnesses that mine their own failures and propose bounded edits, evolutionary or population-based search over agent scaffolds, acceptance gates for self-modifying systems, and agentic context evolution where the mechanism that produces context is versioned and evolved. Route governance of a single autonomous loop (locked surfaces, durable logs, rollback, novelty gates, approval boundaries) to harness-engineering, measurement and quality-gate design to evaluation, judge design to advanced-evaluation, and remote sandbox infrastructure to hosted-agents.

self-managed-context

This skill should be used when a model gets read-write control over its own live context window instead of a harness-scheduled compaction policy: the context exposed as an editable file the model rewrites with code tools, model-driven eviction and in-place updates, the harness invariants that keep self-editing safe (pinned prefix, edit gate, edit receipts, budget readouts, rollback on overflow), the prefix-cache cost of mid-context edits, and steering or training the model's own context-editing strategy. Route note content and fixed-threshold summarization to context-compression, cache-stable layout under harness control to context-optimization, file offloading to filesystem-context, and loop governance to self-improvement-loops.

tool-design

This skill should be used for the tool-interface layer of an agent system specifically: writing tool descriptions agents can route on, designing tool schemas and response formats, naming conventions, actionable error recovery messages, MCP server design, tool-set consolidation, and deciding when to add or remove an individual tool. Use this when the unit of work is a single tool or a set of tools. Route project-shape, pipeline architecture, and task-model-fit decisions to project-development; route deciding whether to introduce sub-agents to multi-agent-patterns.

Habilidades Relacionadas