CommunityCodierung & Entwicklunggithub.com

book-sft-pipeline

Diese Fähigkeit wird für Buch-zu-SFT-Pipelines verwendet: ePub-Extraktion, literarische Segmentierung, Erstellung von Autorenstimmen-Datensätzen, Style-Transfer-Training, LoRA-Workflows und Modellevaluierung zur Stimmreplikation.

Was ist book-sft-pipeline?

Die 'Book SFT Pipeline' ist eine vollständige, agentenbasierte Pipeline zur Umwandlung von Büchern (ePub) in Supervised Fine-Tuning (SFT)-Datensätze und zum Training von Style-Transfer-Modellen. Sie zielt darauf ab, einem KI-Modell beizubringen, in der Stimme eines bestimmten Autors zu schreiben. Die Pipeline besteht aus sechs Phasen: Extraktion, intelligente Segmentierung (150-400 Wörter pro Chunk), diverse Instruktionsgenerierung, Dataset-Konstruktion, LoRA-Training auf der Tinker-Plattform und Validierung. Sie betont die Verwendung von Basismodellen (nicht Instruction-Tuned), kleineren Chunks mit Überlappung für mehr Trainingsbeispiele und einer großen Vielfalt an Prompt-Vorlagen, um Auswendiglernen zu verhindern. Die Pipeline eignet sich für kleine Modelle (8B oder weniger) und begrenzte Datenmengen und kostet etwa 2 USD pro Buch. Sie integriert Konzepte aus mehreren Context-Engineering-Fähigkeiten wie Projektentwicklung, Kontextkompression, Multi-Agent-Muster und Evaluierung.

Funktioniert mit~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 Codierung & Entwicklung skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Buch SFT Pipeline

Ein vollständiges System zur Umwandlung von Büchern in SFT-Datensätze und zum Trainieren von Style-Transfer-Modellen. Diese Fähigkeit lehrt die Pipeline vom rohen ePub bis zu einem Modell, das in der Stimme eines beliebigen Autors schreibt.

Wann aktivieren

Aktivieren Sie diese Fähigkeit, wenn:

  • Feintuning-Datensätze aus literarischen Werken erstellt werden
  • Autorenstimmen- oder Style-Transfer-Modelle erstellt werden
  • Trainingsdaten für Tinker oder ähnliche SFT-Plattformen vorbereitet werden
  • Textsegmentierungspipelines für Langform-Inhalte entworfen werden
  • Kleine Modelle (8B oder weniger) mit begrenzten Daten trainiert werden

Kernkonzepte

Die drei Säulen der Buch-SFT

1. Intelligente Segmentierung Textblöcke müssen semantisch kohärent sein. Das Unterbrechen mitten im Satz lehrt das Modell, fragmentierte Ausgaben zu produzieren. Ziel: 150-400 Wörter pro Block, immer an natürlichen Grenzen.

2. Vielfältige Instruktionsgenerierung Verwenden Sie mehrere Prompt-Vorlagen und System-Prompts, um Overfitting zu verhindern. Ein einziger Prompt-Stil führt zu Auswendiglernen. Verwenden Sie 15+ Prompt-Vorlagen mit 5+ System-Prompts.

3. Stil über Inhalt Das Ziel ist es, den Rhythmus und die Vokabularmuster des Autors zu lernen, nicht Handlungen auswendig zu lernen. Synthetische Instruktionen beschreiben, was passiert, ohne den Text zu zitieren.

Pipeline-Architektur

┌─────────────────────────────────────────────────────────────────┐
│                    ORCHESTRATOR AGENT                           │
│  Koordiniert Pipeline-Phasen, verwaltet Zustand, behandelt Fehler│
└──────────────────────┬──────────────────────────────────────────┘
                       │
       ┌───────────────┼───────────────┬───────────────┐
       ▼               ▼               ▼               ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│  EXTRAKTION  │ │ SEGMENTIERUNG│ │ INSTRUKTION  │ │ DATENSATZ-   │
│    AGENT     │ │    AGENT     │ │    AGENT     │ │ ERSTELLER    │
│ ePub → Text  │ │ Text → Blöcke│ │ Blöcke →     │ │ Paare →      │
│              │ │ 150-400 Wörter│ │ Prompts      │ │ JSONL        │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
                       │
       ┌───────────────┴───────────────┐
       ▼                               ▼
┌──────────────┐               ┌──────────────┐
│   TRAINING   │               │  VALIDIERUNG  │
│    AGENT     │               │    AGENT      │
│ LoRA auf     │               │ KI-Erkennung  │
│ Tinker       │               │ Originalität  │
└──────────────┘               └──────────────┘

Phase 1: Textextraktion

Kritische Regeln

  1. Immer ePub gegenüber PDF bevorzugen - OCR-Fehler werden zu erlernten Mustern
  2. Absatzweise Extraktion verwenden - Aus <p>-Tags extrahieren, um Brüche zu erhalten
  3. Vor-/Nachwort entfernen - Copyright und Inhaltsverzeichnis verunreinigen den Datensatz
# Text aus ePub-Absätzen extrahieren
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)

Phase 2: Intelligente Segmentierung

Kleinere Blöcke + Überlappung

Kleinere Blöcke (150-400 Wörter) erzeugen mehr Trainingsbeispiele und einen besseren Style-Transfer als größere Blöcke (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))
            # Letzten Absatz für Überlappung behalten
            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

Erwartete Ergebnisse

Für ein Buch mit 86.000 Wörtern:

  • Alte Methode (250-650 Wörter): ~150 Blöcke
  • Neue Methode (150-400 + Überlappung): ~300 Blöcke
  • Mit 2 Varianten pro Block: 600+ Trainingsbeispiele

Phase 3: Vielfältige Instruktionsgenerierung

Die entscheidende Erkenntnis

Die Verwendung einer einzigen Prompt-Vorlage führt zu Auswendiglernen. Vielfältige Vorlagen lehren den zugrunde liegenden Stil.

SYSTEM_PROMPTS = [
    "Du bist ein erfahrener kreativer Schriftsteller, der spezifische literarische Stile nachahmen kann.",
    "Du bist ein literarischer Schriftsteller mit tiefem Wissen über klassische Prosastile.",
    "Du bist ein kreativer Schriftsteller, der sich darauf versteht, unverwechselbare Autorenstimmen nachzuahmen.",
    "Du schreibst Prosa, die die Essenz der modernistischen Literatur einfängt.",
    "Du bist ein talentierter Schriftsteller, der klassische amerikanische Autoren kanalisieren kann.",
]

PROMPT_TEMPLATES = [
    "Schreibe eine Passage im Stil von {author}: {desc}",
    "Kanalisiere {author}s Stimme, um zu schreiben über: {desc}",
    "In {author}s unverwechselbarem Prosastil beschreibe: {desc}",
    "Schreibe diese Szene so, wie {author} es getan hätte: {desc}",
    "Mit {author}s repetitiver Technik beschreibe: {desc}",
    "Fange den Rhythmus von {author} in dieser Passage ein: {desc}",
    "Schreibe wie {author}: {desc}",
    "In der Stimme von {author} schreibe: {desc}",
    "Dies ist eine literarische Übung. Schreibe wie {author}: {desc}",
    "Kannst du in {author}s Stil schreiben? {desc}",
]

Instruktionsgenerierung

INSTRUCTION_PROMPT = """Beschreibe, was in diesem Auszug passiert, in 2-3 Sätzen.
Konzentriere dich auf: anwesende Charaktere, Handlungen, Emotionen, Schauplatz.
Zitiere den Text NICHT direkt.

Auszug:
{text}
"""

# Verwende ein schnelles, günstiges LLM (z.B. Gemini Flash)
instruction = llm_call(INSTRUCTION_PROMPT.format(text=chunk))

Phase 4: Datensatzerstellung

Nachrichtenformat

{
    "messages": [
        {"role": "system", "content": "Du bist ein erfahrener kreativer Schriftsteller..."},
        {"role": "user", "content": "Schreibe im Stil von Autor: Szenenbeschreibung..."},
        {"role": "assistant", "content": "Der eigentliche Buchtext aus dem Block..."}
    ]
}

Mehrere Varianten pro Block

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

Phase 5: LoRA-Training auf Tinker

Konfiguration

CONFIG = {
    "model_name": "Qwen/Qwen3-8B-Base",  # Base, nicht instruct
    "lora_rank": 32,                      # 352MB Adapter
    "learning_rate": 5e-4,                # Höher für LoRA
    "batch_size": 4,
    "epochs": 3,
}

Warum das Basismodell?

Verwenden Sie Base-Modelle (vortrainiert), nicht Instruction-getunte Versionen:

  • Basismodelle sind formbarer für neue Stile
  • Instruction-Modelle haben Muster, die dem Überschreiben widerstehen
  • Stil ist ein niedrigschwelliges Muster, das Basismodelle besser erfassen

Trainingsschleife

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")

Phase 6: Validierung

Moderner Szenario-Test

Testen Sie mit Szenarien, die im ursprünglichen Buch nicht existieren könnten:

TEST_PROMPTS = [
    "Schreibe über einen Barista, der Lattes zubereitet",
    "Beschreibe Liebende, die per Textnachricht kommunizieren",
    "Schreibe über jemanden, der wegen des Klimawandels ängstlich ist",
]

Wenn das Modell Stilmerkmale auf moderne Szenarien anwendet, hat es Stil gelernt, nicht Inhalt.

Überprüfung der Originalität

# Trainingsdaten nach Ausgabephrasen durchsuchen
grep "spezifische Phrase aus der Ausgabe" datensatz.jsonl
# Sollte zurückgeben: Keine Treffer

KI-Erkennungs-Test

Testen Sie Ausgaben mit GPTZero, Pangram oder ZeroGPT.

Bekannte Probleme und Lösungen

Leckage von Charakternamen

Symptom: Das Modell verwendet originale Charakternamen in neuen Szenarien. Ursache: Begrenzte Namensvielfalt aus einem Buch. Lösung: Training auf mehreren Büchern oder Hinzufügen synthetischer Beispiele.

Modell wiederholt exakte Phrasen

Symptom: Ausgaben enthalten exakte Sätze aus den Trainingsdaten. Ursache: Zu wenige Prompt-Variationen oder zu viele Epochen. Lösung: Verwenden Sie 15+ Vorlagen, begrenzen Sie auf 3 Epochen.

Fragmentierte Ausgaben

Symptom: Sätze wirken unvollständig. Ursache: Schlechte Segmentierung, die einen Gedanken unterbricht. Lösung: Immer an Absatzgrenzen brechen.

Richtlinien

  1. Immer ePub gegenüber PDF bevorzugen - OCR-Fehler werden zu erlernten Mustern
  2. Nie mitten im Satz brechen - Grenzen müssen grammatikalisch vollständig sein
  3. Vielfältige Prompts verwenden - 15+ Vorlagen, 5+ System-Prompts
  4. Basismodelle verwenden - Nicht Instruction-Versionen
  5. Kleinere Blöcke verwenden - 150-400 Wörter für mehr Beispiele
  6. Testsatz reservieren - Mindestens 50 Beispiele
  7. Auf modernen Szenarien testen - Beweist Style-Transfer vs. Auswendiglernen
  8. Originalität überprüfen - Trainingsdaten nach Ausgabephrasen durchsuchen

Erwartete Ergebnisse

MetrikWert
Trainingsbeispiele500-1000 pro Buch
ModellQwen/Qwen3-8B-Base
LoRA-Rang32
Adaptergröße~350 MB
Trainingszeit~15 Min
Verlustreduktion90%+
Style-Transfer-Erfolg~50% perfekt

Kostenabschätzung

KomponenteKosten
LLM (Instruktionsgenerierung)~0,50 $
Tinker-Training (15 Min)~1,50 $
Gesamt~2,00 $

Integration mit Context-Engineering-Fähigkeiten

Dieses Beispiel wendet mehrere Fähigkeiten aus der Sammlung "Agent Skills for Context Engineering" an.

project-development

Die Pipeline folgt dem stufenweisen, idempotenten Architekturmuster:

  • Erwerben: Text aus ePub extrahieren
  • Vorbereiten: In Trainingsblöcke segmentieren
  • Verarbeiten: Synthetische Instruktionen generieren
  • Parsen: Nachrichtenformat erstellen
  • Rendern: Tinker-kompatibles JSONL ausgeben
  • Trainieren: LoRA-Feintuning
  • Validieren: Moderner Szenario-Test

Jede Phase ist fortsetzbar und produziert Zwischenartefakte zum Debuggen.

context-compression

Segmentierung ist eine Form der Kontextkompression für das Training. Die Kern-Erkenntnis aus context-compression gilt: Informationsdichte ist wichtiger als Informationsmenge. Kleinere, kohärente Blöcke (150-400 Wörter) erzeugen einen besseren Style-Transfer als größere, verdünnte Blöcke.

Die zweistufige Strategie spiegelt die Kontextkompressions-Evaluierung wider:

  • Stufe 1: Schnelle, deterministische Kompression
  • Stufe 2: LLM-unterstützt für Grenzfälle

multi-agent-patterns

Die Pipeline verwendet das Supervisor/Orchestrator-Muster:

  • Der Orchestrator koordiniert Phasen und verwaltet den Zustand
  • Spezialisierte Agenten (Extraktion, Segmentierung, Instruktion, Ersteller) haben isolierte Kontexte
  • Jeder Agent erhält nur die für seine Aufgabe benötigten Informationen

Dies entspricht dem Prinzip, dass Sub-Agenten hauptsächlich dazu dienen, Kontext zu isolieren, anstatt Rollen zu simulieren.

evaluation

Die Validierung folgt dem Endzustands-Evaluierungsmuster:

  • Funktionale Tests: Entspricht die Ausgabe den erwarteten Stilmerkmalen?
  • Überprüfung der Originalität: Ist der Inhalt wirklich generiert?
  • Externe Validierung: KI-Erkennungswerte

Der "Moderne Szenario"-Test ist eine Form der Out-of-Distribution-Evaluierung, die Generalisierung beweist.

context-fundamentals

Prompt-Vielfalt verhindert, dass die Aufmerksamkeit auf einzelne Muster kollabiert. Beim Training mit identischen Prompt-Strukturen speichert das Modell die Instruktions-Antwort-Zuordnung auswendig. Vielfältige Vorlagen zwingen die Aufmerksamkeit auf die Stilmuster selbst.

Referenzen

Interne Referenzen:

Verwandte Fähigkeiten aus Agent Skills for Context Engineering:

  • project-development - Pipeline-Architekturmuster
  • context-compression - Kompressionsstrategien
  • multi-agent-patterns - Agentenkoordination
  • evaluation - Evaluierungs-Frameworks
  • context-fundamentals - Aufmerksamkeit und Informationsdichte

Externe Ressourcen:


Fähigkeitsmetadaten

Erstellt: 2025-12-26 Zuletzt aktualisiert: 2025-12-28 Autor: Muratcan Koylan Version: 2.0.0 Eigenständig: Ja (getrennt von der Haupt-Context-Engineering-Sammlung)

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.

Verwandte Skills