Giter Site home page Giter Site logo

pyloom's Introduction

This is an experimental tree-based writing interface for GPT-3. The code is actively being developed and thus unstable and poorly documented.

Features

  • Read mode

    • Linear story view
    • Tree nav bar
    • Edit mode
  • Tree view

    • Explore tree visually with mouse
    • Expand and collapse nodes
    • Change tree topology
    • Edit nodes in place
  • Navigation

    • Hotkeys
    • Bookmarks
    • Chapters
    • 'Visited' state
  • Generation

    • Generate N children with GPT-3
    • Modify generation settings
    • Change hidden memory on a node-by-node basis
  • File I/O

    • Open/save trees as JSON files
    • Work with trees in multiple tabs
    • Combine trees

Demo

ooo what features! wow so cool

Block multiverse mode

Read this for a conceptual explanation of block multiverse interface and demo video

How to use in loom

  1. Click Wavefunction button on bottom bar. This will open the block multiverse interface in the right sidebar (drag to resize).
  2. Write initial prompt in the main textbox.
  3. [Optional] Write ground truth continuation in the gray entry box at the bottom of the block multiverse interface. Blocks in ground truth trajectory will be colored black.
  4. Set model and params in top bar.
  5. Click Propagate to propagate plot the block multiverse
  6. Click on any of the blocks to zoom ("renormalize") to that block
  7. Click Propagate again to plot future block multiverse starting from a renormalized frame
  8. Click Reset zoom to reset zoom level to initial position
  9. Click Clear to clear the block multiverse plot. Do this before generating a new block multiverse.

Hotkeys

Alt hotkeys correspond to Command on Mac

File

Open: o, Control-o

Import JSON as subtree: Control-Shift-O

Save: s, Control-s

Dialogs

Change chapter: Control-y

Preferences: Control-p

Generation Settings: Control-Shift-P

Visualization Settings: Control-u

Multimedia dialog: u

Tree Info: Control-i

Node Metadata: Control+Shift+N

Run Code: Control+Shift+B

Mode / display

Toggle edit / save edits: e, Control-e

Toggle story textbox editable: Control-Shift-e

Toggle visualize: j, Control-j

Toggle bottom pane: Tab

Toggle side pane: Alt-p

Toggle show children: Alt-c

Hoist: Alt-h

Unhoist: Alt-Shift-h

Navigate

Click to go to node: Control-shift-click

Next: period, Return, Control-period

Prev: comma, Control-comma

Go to child: Right, Control-Right

Go to next sibling: Down, Control-Down

Go to parent: Left, Control-Left

Go to previous Sibling: Up, Control-Up

Return to root: r, Control-r

Walk: w, Control-w

Go to checkpoint: t

Save checkpoint: Control-t

Go to next bookmark: d, Control-d

Go to prev bookmark: a, Control-a

Search ancestry: Control-f

Search tree: Control-shift-f

Click to split node: Control-alt-click

Goto node by id: Control-shift-g

Organization

Toggle bookmark: b, Control-b

Toggle archive node: !

Generation and memory

Generate: g, Control-g

Inline generate: Alt-i

Add memory: Control-m

View current AI memory: Control-Shift-m

View node memory: Alt-m

Edit topology

Delete: BackSpace, Control-BackSpace

Merge with Parent: Shift-Left

Merge with children: Shift-Right

Move node up: Shift-Up

Move node down: Shift-Down

Change parent: Shift-P

New root child: Control-Shift-h

New Child: h, Control-h, Alt-Right

New Parent: Alt-Left

New Sibling: Alt-Down

Edit text

Toggle edit / save edits: Control-e

Save edits as new sibling: Alt-e

Click to edit history: Control-click

Click to select token: Alt-click

Next counterfactual token: Alt-period

Previous counterfactual token: Alt-comma

Apply counterfactual changes: Alt-return

Enter text: Control-bar

Escape textbox: Escape

Prepend newline: n, Control-n

Prepend space: Control-Space

Collapse / expand

Collapse all except subtree: Control-colon

Collapse node: Control-question

Collapse subtree: Control-minus

Expand children: Control-quotedbl

Expand subtree: Control-plus

View

Center view: l, Control-l

Reset zoom: Control-0

Instructions

Mac

  • conda create -n pyloom python=3.10
  • conda activate pyloom
  • conda install pytorch::pytorch -c pytorch
  • pip install -r requirements.txt
  • set the OPENAI_API_KEY env variable
  • python main.py

Python

  1. Make sure you have tkinter installed

    sudo apt-get install python3-tk

  2. Setup your python env (should be >= 3.9.13)

     ```python3 -m venv env```
     ```source env/bin/activate```
    
  3. Install requirements

    pip install -r requirements.txt

  4. [Optional] Set environmental variables for OPENAI_API_KEY, GOOSEAI_API_KEY, AI21_API_KEY (you can also use the settings options)

    export OPENAI_API_KEY={your api key}

  5. Run main.py

  6. Load a json tree

  7. Read :)

Docker

(Only tested on Linux.)

  1. [Optional] Edit the Makefile with your API keys (you can also use the settings options)

  2. Run the make targets

     ```make build```
     ```make run```
    
  3. Load a json tree

  4. Read :)

Local Inference with llama-cpp-python

llama.cpp lets you run models locally, and is especially useful for running models on Mac. [https://github.com/abetlen/llama-cpp-python] provides nice installation and a convenient API.

Setup

To run on M-series Mac:

  1. conda create -n llama-cpp-local python=3.10; conda activate llama-cpp-local
    • To infer on MPS: CMAKE_ARGS="-DLLAMA_METAL=on"
    • To infer on CPU: CMAKE_ARGS="-DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS -DLLAMA_METAL=on"
  2. pip install 'llama-cpp-python[server]'
  3. pip install huggingface-hub
  4. Now you can run the server with whatever .gguf model you desire from Huggingface, i.e: python3 -m llama_cpp.server --hf_model_repo_id NousResearch/Meta-Llama-3-8B-GGUF --model 'Meta-Llama-3-8B-Q4_5_M.gguf' --port 8009

Inference

  1. conda activate llama-cpp-local and start your llama-cpp-python server.
  2. In a new terminal window, activate your pyloom environment and run main.py
  3. Enter configurations for your local model in Settings > Model config > Add model. By default, the llama-cpp-port-8009 model uses the following settings:
{
            'model': 'Meta-Llama-3-8B-Q4_5_M',
            'type': 'llama-cpp',
            'api_base': 'http://localhost:8009/v1',
},

pyloom's People

Contributors

socketteer avatar ksadov avatar fergusfettes avatar njbbaer avatar tel-0s avatar metasemi avatar gcamilo avatar nonlinearmoon avatar

Stargazers

Josh Pazmino avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.