func sendPrompt() async {
   do {
      let answer = try await session.respond(to: prompt)
      var newResponse = AttributedString("\(answer.content)\n\n")
      newResponse.font = .system(size: 16, weight: .regular)
      response.append(newResponse)
      calculateTokens()
   } catch LanguageModelSession.GenerationError.exceededContextWindowSize(let reason) {
      let oldEntries = session.transcript
      if oldEntries.count >= 2 {
         let newEntries = [oldEntries.first!, oldEntries.last!]
         let newTranscript = Transcript(entries: newEntries)
         session = LanguageModelSession(model: model, transcript: newTranscript)

         // Resend the last prompt
         do {
            let answer = try await session.respond(to: prompt)
            var newResponse = AttributedString("\(answer.content)\n\n")
            newResponse.font = .system(size: 16, weight: .regular)
            response.append(newResponse)
         } catch {
            print("Error resending the prompt: \(error)")
         }
      } else {
         session = LanguageModelSession(model: model)
      }
      print("Conversation moved to a new session: \(reason)")
   } catch {
      response = AttributedString("Error accessing the model: \(error)")
   }
   prompt = ""
}