@stable-canvas/sd-webui-a1111-prompt-parser
TypeScript icon, indicating that this package has built-in type declarations

1.2.4 • Public • Published

sd-webui-a1111-prompt-parser

Introduction

sd-webui-a1111-prompt-parser is a Stable Diffusion webUI (A1111) prompt parser for JavaScript. It parses Stable Diffusion model prompts into structured data for easy analysis and manipulation by developers.

Features

  • Parses A1111 format prompts, supporting the following syntax:
    • Plain text
    • Emphasis (parentheses)
    • Weight (brackets)
    • Lora models
    • Hypernetwork models
    • Negative prompts (square brackets)
    • Step Control (scheduling)
  • Converts parsed results into JavaScript objects for easy manipulation and use
  • Supports regenerating A1111 format prompts from JavaScript objects

Installation

pnpm add @stable-canvas/sd-webui-a1111-prompt-parser

Usage

import { PromptParser } from "@stable-canvas/sd-webui-a1111-prompt-parser";

const parser = new PromptParser();

const prompt = `masterpiece, 1girl, blonde hair, <lora:Zelda_v1:0.5>, (chromatic aberration:0.7), sharp focus, hyper detailed, (fog:0.7), <hypernet:sxz-bloom:0.5>, [real photo], [highlight:dark:0.9], (((good anatomy)))`;

const output = parser.parse(prompt);

console.log(output);

Output:

[
  { "type": "plain", "value": "masterpiece" },
  { "type": "plain", "value": "1girl" },
  { "type": "plain", "value": "blonde hair" },
  { "type": "extra_networks", "value": "lora", "args": ["Zelda_v1", "0.5"] },
  { "type": "weighted", "value": 0.7, "args": [{ "type": "plain", "value": "chromatic aberration" }] },
  { "type": "plain", "value": "sharp focus" },
  { "type": "plain", "value": "hyper detailed" },
  { "type": "weighted", "value": 0.7, "args": [{ "type": "plain", "value": "fog" }] },
  { "type": "extra_networks", "value": "hypernet", "args": ["sxz-bloom", "0.5"] },
  { "type": "negative", "value": 1, "args": [{ "type": "plain", "value": "real photo" }] },
  { "type": "scheduled_full", "value": 0.9, "args": [[{ "type": "plain", "value": "highlight" }], [{ "type": "plain", "value": "dark" }]] },
  { "type": "positive", "value": 3, "args": [{ "type": "plain", "value": "good anatomy" }] }
]

API

PromptParser Class

Constructor

new PromptParser(options?: SDPromptParser.ILarkOptions);

parse Method

parse(text: string, options?: ParseOptions): SDPromptParser.PromptNode[];
  • text: The prompt string to be parsed.
  • options: Optional parameters for configuring parsing behavior.
    • force: When set to true, parsing is forced even if there are syntax errors in the prompt. The parsing results may be incomplete. The default is false.
  • Returns: An array of parsed prompt nodes, node type definitions refer to SDPromptParser.PromptNode.

compilation Function

compilation(node: SDPromptParser.IPromptASTNode): SDPromptParser.PromptNode[];
  • node: The root node of the abstract syntax tree (AST) generated by the Lark parser.
  • Returns: An array of parsed prompt nodes, node type definitions refer to SDPromptParser.PromptNode.

generation_token Function

generation_token(nodes: SDPromptParser.PromptNode[], options?: GenerationOptions): string[];
  • nodes: An array of nodes for which to generate prompt strings.
  • options: Optional parameters for configuring generation behavior.
    • remove_1_weighted: When set to true, nodes with a weight of 1 are removed. The default is false.
  • Returns: An array of generated prompt strings.

generation_str Function

generation_str(nodes: SDPromptParser.PromptNode[], options?: GenerationOptions): string;
  • nodes: An array of nodes for which to generate the prompt string.
  • options: Optional parameters for configuring generation behavior.
    • remove_1_weighted: When set to true, nodes with a weight of 1 are removed. The default is false.
  • Returns: The generated prompt string.

Build

1. Build the Parser

1.1 Install Lark.js

pip install lark-js

1.2 Build

pnpm build-lark

2. Build the Package

pnpm build

Test

pnpm test

License

MIT

/@stable-canvas/sd-webui-a1111-prompt-parser/

    Package Sidebar

    Install

    npm i @stable-canvas/sd-webui-a1111-prompt-parser

    Weekly Downloads

    133

    Version

    1.2.4

    License

    MIT

    Unpacked Size

    1.24 MB

    Total Files

    10

    Last publish

    Collaborators

    • luke_zhang