/cyberdolphin

Cyberdolphin Suite of ComfyUI nodes for wiring up OpenAI and compatible LLM APIs.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

cyberdolphin

The dolphin is wiring up OpenAI and local LLMs. OpenAI v1.2.3 is required.

cyberdolphin.png

Installation

Git clone this repo into the custom_nodes folder. If necessary, check the pip requirements. It will be necessary.

Examples

There are workflows in the examples folder img.png

Nodes

The nodes all share a config file at settings.yaml. Provided with the repo is the settings.yaml.example which can be copied to a new file called settings.yaml for editing. The settings.yaml file is ignored by git.

OpenAI GPT Node

REQUIRES STRING user_prompt

The text is the user portion of the gpt prompt. Generates an engineered prompt from a user-editable template config file with the user text embedded. Dropdown select from available OpenAI models. Most of these will not work. The models that DO work at the time of writing are at least, including but not limited to gpt-3.5-turbo and gpt-4. Runs the prompt gpt-3.5-turbo (or a user-selected alternative) with the text.

PRODUCES STRING.

OpenAI Compatible Node

REQUIRES STRING text

The text is embedded in the user prompt. Generates an "engineered" prompt from template. The user text is embedded in the engineered prompt. Calls for completion of the prompt to the user-defined URL.

PRODUCES STRING

OpenAI DALL·E Node

REQUIRES STRING text

Calls OpenAI DALL·E with the text.

PRODUCES IMAGE


Pip requirements

This collection has some extra requirements that are not present in the ComfyUI distribution. Things like openai, gradio-client and technologist tools.

Experimental

This is an experimental collection of nodes. This project needs validation on MacOS, Windows and Linux. So far, it works on my machine which is a Linux distribution.

Contributions

Looking for participants, happy to work on PRs!

Guidelines for the Dolphin:

  • Keep it small - PRs should be quick and easy.
  • Large things must be compositions of smaller things.
  • Dependencies should be external - i.e. loaded by a node
  • For example:
    • the Llava loader node passes the Llava model to the recogniser node which uses the Llava model to emit a list of objects
    • and not, the "Llava node does everything"

Keep it small

In the spirit of "Keep it small", I'm trying to make sure my big ideas for the dolphin stay within the realm of LLMs -

Here are some big ideas that didn't make it into the roadmap for CyberDolphin:

Big Ideas I have for future things that are not the dolphin:

Cam Nodes

  • Webcam Node for phone/laptop
  • Cam Node for HDMI type input devices
  • Live Stream Node to capture vision from a Thing of the Internet

Speech to Text

  • Microphone node Captures spoken instructions into audio node
  • Instructions are transcribed using
    • OpenAI-Whisper node or
    • TTS model loaded by the TTS node

The Simple Storybook Production Kit

Where "LLM-node" is short for "LLM powered node":

LLM-node dreams up the story type
LLM-node dreams up the character names, their badge
LLM-node dreams up the story title
LLM-node dreams up chapter summaries

LLM-node generates a page in "the story"

LLM-node generates images of characters:
    id badge,
    smiling photo,
    frowning photo,
    'character' shot

LLM-node generates prompt for page illustration
LLM-node generates page text

License

GPL 3.