Dynamic Color Blocks

Created
Mar 19, 2024 5:40 AM
Type

How AI color generation works

We start by sending a prompt to ChatGPT, asking for colors using OpenAI Function Calling. In response, the API sends back a JSON text stream that isn't fully formatted yet. But here's where the efficiency kicks in: even before we've received all of the data, we're already parsing it on-the-fly and turning it into structured payload entities. And send each of these entities straight to the browser using Server Sent Events, ensuring a real-time experience.

Modes

All-Together the UI waits for complete data.

One-By-One goes object by object.

Progressive operates via key-value pairs.

Real-time feeds data by individual tokens.

The Prompt

Give me a palette of 5 gorgeous colors with their hex codes, names, and descriptions.

The Function

name: give_colors
description: Give a list of colors
parameters:
  type: object
  properties:
    colors:
      type: array
      items:
        type: object
        properties:
          hex:
            type: string
            description: The hexadecimal code of the color
          name:
            type: string
            description: The color name
          description:
            type: string
            description: The description of the color

The raw stream of tokens

data: {"he
data: x":"#FF
data: 69B4"
data: ,"na
data: me":"Ho
data: t Pink"

The parsable entity stream

{ "index": 0, "status": "PARTIAL",
"data": { "hex": "#FF69B4", "name": "Hot Pink" },
"entity": "colors" }

Installation

To get started with JavaScript / TypeScript:

npm i openai-partial-stream

Import, and you'll want the manual, check out the documentation on GitHub