""" This script takes all the songs we have and create a summary for each lyric """ from dotenv import load_dotenv load_dotenv() import json from collections import defaultdict from pathlib import Path from pprint import pprint from langchain.chains import LLMChain from langchain.chat_models import ChatOpenAI from langchain.prompts import PromptTemplate prompt = PromptTemplate( input_variables=["song"], template=Path("prompts/summary.prompt").read_text(), ) llm = ChatOpenAI(temperature=0) chain = LLMChain(llm=llm, prompt=prompt) with open( "data/lyrics_with_spotify_url.json", "r", ) as f: data = json.load(f) lyrics_summaries = {} for movie, lyrics in data.items(): for lyric in lyrics: print(f"Creating summary for {lyric['name']}") summary = chain.run(song=lyric["text"]) lyrics_summaries[lyric["name"].lower()] = { "summary": summary, "embed_url": lyric["embed_url"], } with open( "data/lyrics_with_spotify_url_and_summary.json", "w", ) as f: json.dump(lyrics_summaries, f) pprint(lyrics_summaries)