View on GitHub

Kantega AI-dev Workshop

Workshop for bruk av AI-verktøy (som ChatGPT og Github Copilot) i utviklingsarbeid

JSON

Omstrukturere data

Gitt en JSON-array, med objekter som inneholder en verdi som kan uttrykkes som en enum, omstrukturer dette til et map som nøkler på disse enum-verdiene.

Du kan be LLM’en om å gjøre det direkte, eller be om en funksjon som gjør det samme.

Be gjerne LLM’en om å generere den opprinnelige dataen som det jobbes med.

// Opprinnelig array som skal restruktureres
const originalArray = [
    { title: 'dog.jpg', type: 'IMAGE', size: 100 },
    { title: 'dog.mp4', type: 'VIDEO', size: 1000 },
    { title: 'dog.flac', type: 'AUDIO', size: 100 },
    // etc etc
];

// Forventet struktur etter omstrukturere
const expectedMap = {
    'IMAGE': [
        { title: 'dog.jpg' },
        { title: 'fish.jpg' }
    ],
    'VIDEO': [
        { title: 'cat.mp4' }
    ]
    // etc etc
};

Eksempel på generert data fra ChatGPT:

Prompt:

Generate a JSON-array of 20 objects. The objects in the array has the following fields:

  • “filename”: A string-value, containing random type of animal, ending with a file-extension (for example: “.jpg”) a common filetype for either video, audio, or images
  • “filetype”: A string-value, given the file-extension in the name, have a corresponding filetype, either “VIDEO”, “AUDIO”, or “IMAGE”
  • “size”: An number-value, should be a random integer between 10 and 10000 (images should have smaller values than audio; audio should have smaller values than video)
  • “description”: A string-value, a short description of the given animal (max 10 words)

Svar:

[
  {
    "filename": "elephant.jpg",
    "filetype": "IMAGE",
    "size": 500,
    "description": "Large mammal with a long trunk."
  },
  {
    "filename": "lion.mp4",
    "filetype": "VIDEO",
    "size": 5000,
    "description": "Fierce predator found in grasslands."
  },
  {
    "filename": "cat.jpg",
    "filetype": "IMAGE",
    "size": 100,
    "description": "Adorable domestic companion."
  },
  {
    "filename": "dog.mp3",
    "filetype": "AUDIO",
    "size": 50,
    "description": "Loyal and friendly pet."
  },
  {
    "filename": "giraffe.jpg",
    "filetype": "IMAGE",
    "size": 700,
    "description": "Tall herbivorous animal with a long neck."
  },
  {
    "filename": "dolphin.mp3",
    "filetype": "AUDIO",
    "size": 20,
    "description": "Highly intelligent marine mammal."
  },
  {
    "filename": "tiger.jpg",
    "filetype": "IMAGE",
    "size": 800,
    "description": "Powerful carnivore with distinctive stripes."
  },
  {
    "filename": "bird.mp4",
    "filetype": "VIDEO",
    "size": 3000,
    "description": "Feathered creature capable of flight."
  },
  {
    "filename": "snake.mp3",
    "filetype": "AUDIO",
    "size": 30,
    "description": "Slithering reptile found in various habitats."
  },
  {
    "filename": "elephant.mp4",
    "filetype": "VIDEO",
    "size": 7000,
    "description": "Largest land animal with an elongated nose."
  },
  {
    "filename": "fish.jpg",
    "filetype": "IMAGE",
    "size": 200,
    "description": "Aquatic animal with gills and fins."
  },
  {
    "filename": "cat.mp3",
    "filetype": "AUDIO",
    "size": 40,
    "description": "Independent and agile domestic pet."
  },
  {
    "filename": "lion.jpg",
    "filetype": "IMAGE",
    "size": 900,
    "description": "King of the jungle with a majestic mane."
  },
  {
    "filename": "dog.mp4",
    "filetype": "VIDEO",
    "size": 4000,
    "description": "Faithful and trainable companion animal."
  },
  {
    "filename": "bird.jpg",
    "filetype": "IMAGE",
    "size": 300,
    "description": "Feathered creature capable of melodious songs."
  },
  {
    "filename": "tiger.mp3",
    "filetype": "AUDIO",
    "size": 25,
    "description": "Ferocious feline with distinct black stripes."
  },
  {
    "filename": "dolphin.jpg",
    "filetype": "IMAGE",
    "size": 600,
    "description": "Marine mammal known for its playful behavior."
  }
]

(traff fort token-begrensningen på gratisversjonen av ChatGPT 3.5 - kan man gjøre noe for å omgå denne problemstillingen?)

Merk en feil, vårt krav om at “size”-propertyen skulle ha sjikter basert på filtypen ble ikke helt riktig. “AUDIO”-objektene har konsekvent en lavere verdi enn “IMAGE”-objektene. Hvorfor det? Kan man forbedre promptet til å sikre seg mot dette?

Kan gjøre flere ting her, først lage dette map’et, så sortere listene i map’et etter filstørrelse, så filtrere ned til 3 elementer per liste.

< Tilbake