LLM + API Data

LLM analyzes API data (requires llm capability)

function findCovers({ song = 'Yesterday', artist = 'Beatles' }) {
  // Search iTunes for the song
  let query = song + ' ' + artist
  let url =
    'https://itunes.apple.com/search?term=' + query + '&limit=25&media=music'
  let response = httpFetch({ url, cache: 3600 })

  // Format results for LLM analysis
  let results = response.results || []
  let tracks = results.map(
    (x) =>
      '"' + x.trackName + '" by ' + x.artistName + ' (' + x.collectionName + ')'
  )
  let trackList = tracks.join('\n')

  // Schema.response from example - much cleaner!
  let schema = Schema.response('cover_versions', {
    covers: [{ track: '', artist: '', album: '' }],
  })

  let prompt =
    'Search results for "' +
    song +
    '" by ' +
    artist +
    ':\n\n' +
    trackList +
    '\n\nList cover versions (tracks NOT by ' +
    artist +
    ').'

  let llmResponse = llmPredict({ prompt, options: { responseFormat: schema } })
  let parsed = JSON.parse(llmResponse)
  return { originalArtist: artist, song, covers: parsed.covers }
}