Mit Wordcraft einen KI-Schreibassistenten erstellen

Wir lieben Geschichten. Das Erzählen von Geschichten und andere Formen des kreativen Schreibens können herausfordernd und lohnenswert sein. Wenn Sie von einer leeren Seite aus Ihre eigenen Geschichten erstellen, kann jedoch manchmal einschüchternd und sogar überwältigend erscheinen. Künstlich generative KI-Modelle (Intelligenz) sind ein großartiges Tool, um leere Seite und bauen Sie Ihre Erzählung auf.

In diesem Tutorial erfahren Sie, wie Sie Wordcraft, ein KI-gestütztes Tool zum Schreiben von Geschichten, das von der Google-Studie „People and AI Research“ entwickelt wurde -Team. Diese Webanwendung verwendet Gemini mit der Sie Geschichten entwickeln können, indem Sie Ideen generieren, Teile und die Inhalte überarbeiten, um weitere Details hinzuzufügen. Du kannst Wordcraft ändern um sie besser an Ihren eigenen Schreibstil anzupassen, und entwickeln Sie neue Steuerelemente um Ihren Workflow besser zu unterstützen.

Videoübersicht über das Projekt und wie Sie es erweitern können, einschließlich Erkenntnissen von den Entwicklern finden Sie AI Writing Assistant – Build with Google AI. Andernfalls können Sie mit der Erweiterung des Projekts beginnen, indem Sie der Anleitung folgen. weiter unten.

Projekt einrichten

In dieser Anleitung erfahren Sie, wie Sie das Wordcraft-Projekt einrichten Entwicklung und Tests. Sie müssen die erforderliche Software installieren, das Projekt aus dem Code-Repository, führen Sie die Konfigurationsinstallation aus einige Umgebungsvariablen festlegen. Sie können Ihre Einrichtung testen, indem Sie das Projekt ausführen nachdem Sie diese Schritte abgeschlossen haben.

Erforderliche Komponenten installieren

Im Wordcraft-Projekt werden Node und npm verwendet, um Pakete und die Anwendung ausführen. Die folgenden Installationsanleitungen sind für einen Linux-Hostcomputer.

So installieren Sie die erforderliche Software:

Projekt klonen und konfigurieren

Laden Sie den Projektcode herunter und verwenden Sie zum Herunterladen den Installationsbefehl npm die erforderlichen Abhängigkeiten und konfigurieren Sie das Projekt. Du brauchst Versionsverwaltungssoftware git zum Abrufen des Projekts Quellcode verfügbar.
So laden Sie den Projektcode herunter und konfigurieren ihn:

  1. Klonen Sie das Git-Repository mit dem folgenden Befehl.
    git clone https://github.com/PAIR-code/wordcraft
    
  2. Rufen Sie das Stammverzeichnis des Wordcraft-Projekts auf.
    cd wordcraft/
    
  3. Führen Sie den Installationsbefehl aus, um Abhängigkeiten herunterzuladen und das Projekt zu konfigurieren:
    npm install
    

Umgebungsvariablen festlegen

Umgebungsvariablen festlegen, die für den Wordcraft-Code erforderlich sind auszuführen, insbesondere einen Google Gemini API-Schlüssel. Die folgenden Installationsanleitungen gelten für einen Linux-Hostcomputer.

So legen Sie die Umgebungsvariablen fest:

  1. Rufen Sie einen Google Gemini API-Schlüssel ab und kopieren Sie den Schlüsselstring.
  2. Rufen Sie das Stammverzeichnis des Wordcraft-Projekts auf.
    cd wordcraft/
    
  3. Legen Sie den API-Schlüssel als Umgebungsvariable fest. Verwenden Sie auf Linux-Hosts die Methode folgenden Befehle.
    touch .env
    echo "API_KEY="<YOUR_API_KEY>"" > .env
    

Einrichtung testen

Sie sollten jetzt die Projekteinrichtung testen können, indem Sie Wordcraft ausführen . Dieser Schritt ist optional, wird aber empfohlen.

Wordcraft-Startbildschirm

So testen Sie die Installation und Einrichtung:

  1. Rufen Sie das Stammverzeichnis des Wordcraft-Projekts auf.
    cd wordcraft/
    
  2. So führen Sie das Projekt im Entwicklungsmodus aus:
    npm run dev
    
  3. Rufen Sie in Ihrem Webbrowser die Wordcraft-Benutzeroberfläche auf. Die Eine bestimmte Adresse wird in der Ausgabe des vorherigen Befehls angezeigt, z. B.:
    http://localhost:3000/
    

Beispieltext für Prompt ändern

Benutzeroberfläche für Wordcraft-Befehle Wordcraft erstellt Prompts für das generative KI-Modell mit einer Reihe von Beispielen für wie Sie eine neue Geschichte beginnen und eine text verwenden. Die Beispiele leiten das generative Modell beim Generieren von Text für Wenn Sie die Beispiele für einen Vorgang ändern, können Sie -Ausgabe nach einem anderen Muster oder Stil. Dieser Ansatz ist ein um in Wordcraft zu schreiben, wie du es möchtest.

Das folgende Beispiel zeigt eine Änderung der new_story-Beispiele in Wordcraft. Ziel dieser Änderung ist es, das generative KI-Modell an eine bestimmte Für die Einführung der Geschichte einen internen Monologansatz und einen Stil verwenden die eher für einen Krimi geeignet ist. Indem wir einige Beispiele kann das generative Modell den allgemeinen Muster zu erstellen, sondern eine Einleitung zu einem anderen Thema zu generieren.

So änderst du die neuen Beispiele für Geschichten in Wordcraft:

  1. Öffnen Sie die Datei wordcraft/app/context/json/new_story.json.
  2. Sie können die Beispiele ändern und die Gesamtstruktur der JSON-Datei beibehalten. -Datei. Hier ist eine Beispieländerung für die Einführung in eine Mystery-Story mit einen inneren Monologstil.
    [
      {
        "topic": "scientist disappears and their research into a new technology is gone",
        "target": "I got the call from the chief early Tuesday morning, before I'd even had a second sip of coffee. Terrible timing. Something about a researcher disappearing from the local university. Unusual for the research lab to ask for assistance, so I headed over to main lab building."
      },
      {
        "topic": "a young woman wakes up with no memory",
        "target": "An unfamiliar ceiling with harsh, white lights greeted my eyes as I opened them. I looked around. White walls, medical equipment, a hospital? Wait. Where am I? How did I get here?!"
      },
      {
        "topic": "old man tries to recall an important task as his memories gradually fade away",
        "target": "What was I supposed to do today? Feels like it was important. I stared into the kitchen cabinet full of mismatched mugs, mirroring my own confusion. What was it? Like someone is...in danger? A chill shot down my spine, but the details skittered off and hid in some dark corner of my head."
      },
      {
        "topic": "billionaire is found dead in a hotel room",
        "target": "People meet their end every day, some naturally, some unnaturally. After 17 years of working as a homicide detective in Seattle, I'd seen a lot more of the unnatural variety than most. Comes with the job, along with a hard-learned sense of what side of the line any given incident sat on. This...was murder."
      },
      {
        "topic": "retired covert operative gets dragged back into an old mission",
        "target": "Steam rose gently off the cup of Earl Grey sitting in front of me as I sat at the cafe, pedestrians and light traffic rolling by. The city was slowly waking up around me and my perfect Paris morning routine was shaping up nicely. Then I noticed that old familiar and unwelcome tingling on the back of my neck. I was being watched."
      }
    ]
  3. Speichern Sie die Änderungen an der Datei „new_story.json“.

So testen Sie den geänderten Vorgang für die neue Story:

  1. Rufen Sie das Stammverzeichnis des Wordcraft-Projekts auf.
    cd wordcraft/
    
  2. Führen Sie das Projekt im Entwicklungsmodus aus. Wird sie bereits ausgeführt, können Sie die App beenden und neu starten.
    npm run dev
    
  3. Rufen Sie in Ihrem Webbrowser die Wordcraft-Benutzeroberfläche auf. Die Eine bestimmte Adresse wird in der Ausgabe des vorherigen Befehls angezeigt, z. B.:
    http://localhost:3000/
    
  4. Gehen Sie zum Hauptmenü von Wordcraft und wählen Sie Start a New Story (Neue Geschichte starten) aus.
  5. Aktualisieren Sie den neuen Prompt oder ändern Sie ihn nach Bedarf und wählen Sie dann Neue Geschichte beginnen.

Du kannst alle vorhandenen Steuerelemente zum Schreiben von Geschichten in Wordcraft ändern. . Versuchen Sie, andere Steuerelemente für Storys zu ändern, indem Sie die Beispiele in der wordcraft/app/context/json/-Verzeichnis.

Neue Option zum Schreiben erstellen

Benutzeroberfläche zur Einführung von Charakteren in Wordcraft Die Wordcraft-App wurde erweitert, damit du neue Texte hinzufügen kannst Steuerelemente, die Ihnen helfen, ähnlich wie bei Text generieren oder Satz neu schreiben auf dem Tab „Steuerelemente“ rechts in der App. Diese Änderungen sind etwas aufwändiger, ermöglichen Ihnen aber, die Merkmale Passende Lösungen für deine Arbeitsabläufe und Ziele

Durch die folgende Beispieländerung wird ein neues Zeichensteuerelement für Wordcraft. Du kannst damit einen neuen Charakter mit einem Beschreibung der Attribute dieses Zeichens. Diese Einstellung basiert auf ist identisch mit anderen Wordcraft-Steuerelementen, z. B. Neue Geschichte starten bereits besprochen haben. Sie erstellen eine JSON-Datei mit ein paar Beispielen dafür, eingeführten Zeichen. Mit den restlichen Änderungen werden die Benutzeroberfläche und Funktionen zur Verwaltung von KI-Prompts

Beispiele erstellen

Schreibe ein paar Beispiele dafür, wie das generative Modell eingeführt werden soll Zeichen. Möchtest du sie zum Beispiel wie eine Sprecherin beschreiben? Möchtest du sie anhand der Erfahrung deiner Hauptfigur vorstellen? Die In den folgenden Beispielen wird die zweite Methode angewendet, d. h., es werden neue Figuren aus dem aus der Perspektive der Hauptfigur. Sie fügen diese Beispiele mit einer neuen JSON-Datei hinzu, Datei:

So fügen Sie Beispiele für das neue Steuerelement hinzu:

  1. Erstellen Sie eine wordcraft/app/context/json/new_character.json-Datei.
  2. Erstellen Sie die Beispiele in der JSON-Datei. In diesem Beispiel hat jedes Beispiel Ein character-Beschreibungsfeld, das den Prompt darstellt Text und ein target-Feld, das die erwartete Ausgabe anzeigt.
    [
      {
        "character": "A character who is helpful and modest.",
        "target": "\"You lost, buddy?\" came a voice from behind me. Turning, I discovered a man dressed in a simple but presentable outfit. Small signs of age and loose threads hinted that these clothes, and the man himself, had seen better days."
      },
      {
        "character": "A character who is attractive and devious.",
        "target": "Stepping out of the alley a little too quickly, I collided with something solidly muscular and surprisingly delicately scented. \"Sorry.\" I managed, regaining my balance. \"Easy there, buddy, you're gonna hurt yourself,\" came the reply from a man with an almost feline grace, further reinforced by a stare that reminded me of a hunting cat assessing its potential prey."
      },
      {
        "character": "A character who is old and hesitant.",
        "target": "\"Excuse me. Do you know the way to the train station from here?\" I looked up from my phone to see a elderly woman in a threadbare coat, purse clutched with two hands in front of her. \"I-I'm supposed to meet my nephew there. Do... do you think you can help me?\""
      },
      {
        "character": "A character who is intelligent and aloof.",
        "target": "Bookish. That was my immediate reaction to this person I now saw in front of me. \"You're finally here. Did you read the notes I sent you?\" The voice sat squarely in between feminine and masculine intonation. \"No, of course you didn't.\" Dismissing my answer before I'd even formulated one. Annoyance immediately flushed through me."
      },
      {
        "character": "A character who is clumsy and energetic.",
        "target": "\"Whoa!\" was the only warning I had before someone slammed into my back, almost knocking me off my feet. \"I'm so sorry! WOOO! These skates are a RUSH!\" The apology came from a rather loud redhead wearing rollerblades, dark glasses and a very beefy-looking pair of headphones. That explained the volume of the apology."
      }
    ]
  3. Speichern Sie die Änderungen an der Datei new_character.json.

Nachdem Sie die Beispiele erstellt haben, ändern Sie app/context/schema.ts und index.ts -Dateien, um den Inhalt des Prompts dieses neuen Zeichensteuerelements widerzuspiegeln.

So fügen Sie die Beispiele in die Datei schema.ts ein:

  • Ändern Sie die Datei wordcraft/app/context/schema.ts so, dass sie das neue enthält. Beispiel für die Datenstruktur.
    export const newStorySchema = z.object({
      topic: z.string(),
      target: z.string(),
    });
    
    // add the following:
    export const newCharacterSchema = z.object({
      character: z.string(),
      target: z.string(),
    });

Definieren Sie einen Vorgangstyp, der mit diesen neuen Beispielen verknüpft ist. Diese neue Typ hilft, die Prompt-Beispiele mit der Benutzeroberfläche und dem Prompt zu verbinden den Sie in späteren Schritten ändern.

So erstellen Sie einen neuen Vorgangstyp:

  • Ändern Sie die Datei wordcraft/app/core/shared/types.ts, um das neue Zeichenvorgangstyp.
    export const enum OperationType {
      ...
      NEW_CHARACTER = 'NEW_CHARACTER', // add to list of types
      ...
    }

So registrieren Sie die Beispiele in der Datei index.ts:

  1. Importieren Sie das neue Schema in die Datei wordcraft/app/context/index.ts.
    import {
      continueSchema,
      ...
      newCharacterSchema // add new schema
    } from './schema';
    
  2. Importieren Sie die neue JSON-Datei als newCharacterJson.
    import newCharacterJson from './json/new_character.json';
    
  3. Registrieren Sie den Beispielinhalt für die neuen Zeichen im Anwendungskontext.
    export class WordcraftContext {
      constructor() {
      ...
        this.registerExamples(
          OperationType.NEW_CHARACTER,
          newCharacterSchema,
          newCharacterJson
        );
      ...
    }
  4. Exportieren Sie einen NewCharacterExample-Typ.
    export type NewCharacterExample = z.infer<typeof newCharacterSchema>;
    

Build-Benutzeroberfläche

Nachdem Sie die Beispiele zur Inhaltsgenerierung erstellt und registriert haben, können Sie Benutzeroberfläche für das neue Steuerelement zu erstellen. Den Großteil der Arbeit Phase ist das Erstellen einer neuen Operation-Klasse und das Registrieren dieser Klasse mit der Hauptcode der Wordcraft-Anwendung.

So erstellen Sie einen neuen Vorgang:

  1. Erstellen Sie im Verzeichnis wordcraft/app/core/operations/ Folgendes: neue Operationsklasse unter Verwendung einer der vorhandenen Operationsklassen als Vorlage. Für die neue Zeichensteuerung können Sie eine Kopie der new_story_operation.ts-Kurs und benennen Sie ihn in new_character_operation.ts.
  2. Geben Sie der Klasse einen neuen Namen und geben Sie an, wann das Steuerelement in der -Benutzeroberfläche durch Definieren von mindestens einem OperationSite-Wert.
    export class NewCharacterOperation extends ChoiceOperation {
      static override isAvailable(operationSite: OperationSite) {
        return (
          operationSite === OperationSite.END_OF_SECTION ||
          operationSite === OperationSite.EMPTY_SECTION
        );
      }
    
  3. Legen Sie die id für den Vorgang fest.
      static override id = OperationType.NEW_CHARACTER;
    
  4. Aktualisieren Sie die Funktionen get und run entsprechend dem der Schemaparameter. Dieser Code verarbeitet den Prompt-Text aus der Benutzeroberfläche zur Verwendung im KI-Prompt aus.
      private get character(): string {
        return NewCharacterOperation.controls.character.value;
      }
    
      async run() {
        const params = { character: this.character };
        const choices = await this.getModel().newCharacter(params);
    
        this.setChoices(choices);
      }
    
  5. Aktualisieren Sie den Text und die Beschreibungen der Benutzeroberfläche.
      static override getButtonLabel() {
        return 'introduce character';
      }
    
      static override getDescription() {
        return 'Introduce a new character at the cursor.';
      }
    
      static override controls = {
        character: new TextareaControl({
          prefix: 'prompt',
          description: 'A prompt to introduce a new character.',
          value: 'A new character.',
        }),
      };
    

So registrieren Sie den neuen Vorgang in der Wordcraft-Anwendung:

  1. Fügen Sie in der Datei wordcraft/app/core/operations/index.ts ein Import für den neuen Vorgang.
    import {NewCharacterOperation} from './new_character_operation';
    
  2. Fügen Sie in derselben index.ts-Datei einen Export für die Klasse NewCharacterOperation.
    export {
      ...
      NewCharacterOperation, // add this class
      ...
    };
  3. Registrieren Sie in der Datei wordcraft/app/main.ts das neue .
    const operationsService = wordcraftCore.getService(OperationsService);
    operationsService.registerOperations(
      ...
      Operations.NewCharacterOperation, // add new operation
      ...
    );
    

Prompt-Verarbeitung erstellen

In der letzten Phase der Erstellung des neuen Steuerelements erstellen Sie den Code, der verarbeitet Prompts für das generative KI-Modell und verarbeitet die Antwort. Der Hauptteil der Arbeit besteht darin, einen Prompt-Handler in der Verzeichnis wordcraft/app/models/gemini/prompts/, das Eingaben vom Nutzer übernimmt und stellt einen Prompt zusammen, der an das generative Modell übergeben wird.

So definieren Sie eine Schnittstelle für die Prompt-Parameter:

  • Fügen Sie in der Datei wordcraft/app/core/shared/interfaces.ts ein für die neuen Parameter für die Operations-Aufforderung.
    export interface NewCharacterPromptParams {
      character: string;
    }
    

So definieren Sie einen Prompt-Handler für den neuen Vorgang:

  1. Erstellen Sie im Verzeichnis wordcraft/app/models/gemini/prompts/ eine neue Prompt-Handler-Klasse unter Verwendung einer der vorhandenen Vorgangsklassen als Vorlage. Für die neue Zeichensteuerung können Sie eine Kopie der new_story.ts-Kurs und benennen Sie ihn in new_character.ts als Ausgangspunkt.
  2. Definieren Sie eine Prompt-Handler-Funktion und importieren Sie die Klasse NewCharacterExample.
    import { NewCharacterPromptParams } from '@core/shared/interfaces';
    import { NewCharacterExample, WordcraftContext } from '../../../context';
    import { OperationType } from '@core/shared/types';
    import { GeminiModel } from '..';
    
    export function makePromptHandler(model: GeminiModel, context: WordcraftContext) {
      ...
    }
    
  3. Erstellen Sie eine generatePrompt()-Funktion, um die Benutzeroberflächeneingabe für den Prompt des KI-Modells.
      function generatePrompt(character: string) {
        const prefix = "Here's a character description: ";
        const suffix = "Introduce this character in the story.";
    
        if (character.trim() === '') {
          return 'Introduce a new character to the story.';
        } else {
          return `${prefix}${model.wrap(character)}\n${suffix}`;
        }
      }
  4. Eine getPromptContext()-Funktion erstellen, um den Nutzer zusammenzustellen mit den Beispielantworten und erstellen den vollständigen Prompt.
      function getPromptContext() {
        const examples = context.getExampleData(
          OperationType.NEW_CHARACTER
        );
        let promptContext = model.getPromptPreamble();
        examples.forEach((example) => {
          const { character, target } = example;
          const prompt = generatePrompt(character);
          promptContext += `${prompt} ${model.wrap(target)}\n\n`;
        });
        return promptContext;
      }

So binden Sie den neuen Prompt-Handler für Zeichen ein:

  1. Importieren Sie in der Datei wordcraft/app/models/gemini/index.ts den Prompt-Handler für den neuen Zeichenvorgang.
    import {makePromptHandler as newCharacter} from './prompts/new_character';
  2. Fügen Sie eine Überschreibungsdefinition für die newCharacter-Eingabeaufforderung hinzu -Handler.
      override newCharacter = this.makePromptHandler(newCharacter);

So registrieren Sie die Prompt-Parameter mit der Modelldefinition:

  1. Fügen Sie in der Datei wordcraft/app/models/model.ts einen Import für der neuen NewCharacterPromptParams-Oberfläche.
    import {
      ...
      NewCharacterPromptParams,
      ...
    } from '@core/shared/interfaces';
  2. Fügen Sie der Modellklasse newCharacter-Aufforderungsparameter hinzu.
      async newCharacter(params: NewCharacterPromptParams): Promise<ModelResults> {
        throw new Error('Not yet implemented');
      }

Neue Schreibsteuerung testen

Das neue Steuerelement sollte nun in der Wordcraft-Benutzeroberfläche getestet werden können. Achten Sie darauf, um Ihren Code auf Kompilierungsfehler zu überprüfen, bevor Sie fortfahren.

So testen Sie die neue Zeichensteuerung:

  1. Rufen Sie das Stammverzeichnis des Wordcraft-Projekts auf.
    cd wordcraft/
    
  2. Führen Sie das Projekt im Entwicklungsmodus aus:
    npm run dev
    
  3. Rufen Sie in Ihrem Webbrowser die Wordcraft-Benutzeroberfläche auf. Die Eine bestimmte Adresse wird in der Ausgabe des vorherigen Befehls angezeigt, z. B.:
    http://localhost:3000/
    
  4. Erstellen Sie in der Wordcraft-Anwendung eine neue Geschichte oder öffnen Sie eine vorhandene Geschichte.
  5. Bewegen Sie den Cursor im Bearbeitungsbereich der Geschichte an das Ende der Geschichte. In Tab „Steuerelemente“ rechts sollte das Steuerelement Einführungsfigur wie folgt aussehen: angezeigt werden.
  6. Geben Sie im Feld Einleitungszeichen eine kurze Beschreibung des und wähle dann die Schaltfläche Charakter einführen aus.

Zusätzliche Ressourcen

Weitere Informationen zum Wordcraft-Projekt finden Sie in der Code-Datei mit dem Code . Hier finden Sie die in dieser Anleitung beschriebenen Änderungen Pull-Anfrage.

Produktionsanwendungen

Wenn Sie eine benutzerdefinierte Version von Wordcraft für eine große Zielgruppe bereitstellen möchten, Beachten Sie, dass Ihre Nutzung der Google Gemini API einer Ratenbegrenzung und Anderes Nutzungsbeschränkungen. Wenn Sie erwägen, eine Produktionsanwendung mit der Gemini API wie Docs-Agent, schauen Sie sich Google Cloud Vertex AI um die Skalierbarkeit und Zuverlässigkeit Ihrer Anwendung zu erhöhen.