From 85b64ef8599a387a8f4bed4b408415e469aaf577 Mon Sep 17 00:00:00 2001 From: Norm Rasmussen Date: Tue, 28 Nov 2023 18:58:50 -0500 Subject: [PATCH] Created two pages - a single click SPA page and then the option to customize each param. Created modal and the data gets loaded into the modal, but styling needs to be updated. --- __pycache__/apicalls.cpython-311.pyc | Bin 0 -> 229 bytes __pycache__/config.cpython-311.pyc | Bin 563 -> 563 bytes .../__pycache__/__init__.cpython-311.pyc | Bin 340 -> 480 bytes .../__pycache__/routes.cpython-310.pyc | Bin 2018 -> 2551 bytes .../__pycache__/routes.cpython-311.pyc | Bin 1815 -> 4555 bytes application/routes.py | 33 ++++- application/static/styles.css | 9 ++ application/templates/modal_results.html | 133 ++++++++++++++++++ application/templates/results.html | 18 +++ application/templates/single-button.html | 21 +++ gpt4all_tst.py | 10 ++ 11 files changed, 218 insertions(+), 6 deletions(-) create mode 100644 __pycache__/apicalls.cpython-311.pyc create mode 100644 application/templates/modal_results.html create mode 100644 application/templates/results.html create mode 100644 application/templates/single-button.html create mode 100644 gpt4all_tst.py diff --git a/__pycache__/apicalls.cpython-311.pyc b/__pycache__/apicalls.cpython-311.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9baf8731bf84ff7bb8bbae4a781f8f42a688d03d GIT binary patch literal 229 zcmZ3^%ge<81b%l?Qe}YjV-N=hn4pZ$LO{lJh7^Vr#vF!R#wbQch7_h?22JLdAO)I? zx0n+P3j8#gZgB(YoXq6JlFa delta 19 ZcmdnYvYCZzIWI340}zP_7O=rs$aE?*svfYZ%sK2)94XAf44N!2L5ejQZ?U?& z3*7=w^-9aVnxhACAZj;!NNr>APz@-d|qO1YJB`H=EQ=6Tij_y z`ML4=Nm;4MB@;VZ3iyF)K&~u~0}>yY85tRGFo<73MK>5EFQB3aY}^g09UhJOE%^=1 lHyD^(xUMsZU1AWMP>uqNXzR=1qQ;%q-nwp*-eAXX7GQ2Z80e0*MFZfbn| vE#}06f{AZhxOjlVAj68yCRZ^^E3|KrRFToLeep diff --git a/application/__pycache__/routes.cpython-310.pyc b/application/__pycache__/routes.cpython-310.pyc index ea6d95268f2e79e44d40c42cea8bb713c3d595a1..54e660a98fa9feb60e38beb2ec083e6d65f99110 100644 GIT binary patch literal 2551 zcmbsrOK%fLcxQL*b=HqK5FiP!<&CKvLx?C)3QZG}LYs#YqpEvZZ9EfulYKEWtAGV3 z+DoPUf~r!|8@>0>%(bVSdqZl|Z^p(1q@KE~`Cj|Yd^6u`HYt~F4W7y4o8oRCdcsmJch@s5`1?E38Ii?ikX@*w(SF;{@%EWo+Z(E+S*z z31Z_C8QnX%ui^4(4Od`{;_9y9p6Y0L>^J0206qqI5+BFo9o?NG`qpXK&557%NzFZ@ zxRdyl;?9z>y>oa1>`daRAGJ5gJrDNJ;nVmGKHJgpxm_Kf$Bz2q40SKyi%N1~D7l0$ zE6K&7_q);JLbtf4v{~ z2E-%`+P>UPgC^4d)9Fi5j9{ByU*)Pik2F}yQF-p3*#OrHW3kzS(5|evAe>f2csIf9 zBZtU2Lx=nf4A(f?gI=(Ywv0E>A+RB9>b1trtsFKX!yobdp2eYx6&~3~r!;Qk+yhPV zMUdM#4_s-hjICGNFWRp6lmI@S;a+M!eto(pes;4imp|c zdpEkAr|f>C(XWd7PC{|rPlM?$p~-dzj+t&JQA3Ikn~T|$T&}8rO_*|_f4#%GIX^uVK7cbVNjt=7#+d|7<$2}jDg7aBP85NYdu?Qu8Z8#%0lxyQFz})gv}sjco@V4 z%%n-GvazPS#qU?v7QEH9m8I2|+zCsQ7?N_Bq|}k?+x@KaAcv-bXD0zv^gJ>TZDRse z&;+tk!6=~;qMyU3k1`5)P5N*i#$WPSSX&2&E+4V+iM6qTwIBxfs9Ja==c?4y>3yL8 z(*V5-U+FywJ}mlya^S=8FpvlfQt=B39su}Xt5yb^mQ57W>dA2BFF##bI%8O34lpB7 zWLxUmm3`;6_Db8+_cd-{^MP_!Ew|je-hx*1ar<`yHpo%ghIR-vP(tske5Kc5S+^Vp zjC=26S~KYkNa<|}W+gBHKwr8e=}&xA9fn{t%w#nzgA&UF(De$cBKi?jtIZx}-MorGiZOVI3rJve>%5*v^zso-oDs52Nv?=_w zXu^{BLKtk&5y=&gbUrG7Z=fWScr)mTe3r^9O<38WR;E%yBR_^>_6Ap>7Y3XCJJ0Mw zYwmmFmbBE6;HF%z?6Y2&Ieb;Re9KvMhXw$`pZJ{P-X&q3c%C~Mghrp9F=k~;2qaXNY{0!E*<6nF65*} W1)N{V*{Etky;WhDM@GI1_4qHf!i-S> delta 1096 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 diff --git a/application/routes.py b/application/routes.py index 0c07e61..cba0832 100644 --- a/application/routes.py +++ b/application/routes.py @@ -4,9 +4,11 @@ Flask app that uses gpt4all to generate random song writing prompt. import os import string import random +import requests from flask import ( render_template, session, + request, ) from gpt4all import GPT4All from datetime import datetime, timezone, timedelta @@ -17,11 +19,11 @@ app.config.update(SECRET_KEY=os.urandom(24)) app.permanent_session_lifetime = timedelta(minutes=30) MODEL = GPT4All( - model_name="orca-mini-3b-gguf2-q4_0.gguf", + model_name="gpt4all-falcon-q4_0.gguf", model_path=(Path.home() / ".cache" / "gpt4all"), - allow_download=False, + allow_download=True, ) -TIME_SIGNATURES=["2/4", "3/4", "4/4", "2/2", "6/8", "9/8", "12/8"] +TIME_SIGNATURES = ["2/4", "3/4", "4/4", "2/2", "6/8", "9/8", "12/8"] # Need to decide between manually entering this list or using ascii_letters, below KEYS = ["A", "B", "C", "D", "E", "F", "G"] @@ -40,21 +42,40 @@ def main_prompt(): """ return render_template("index.html", title="Home") + +@app.route("/all", methods=["GET", "POST"]) +def prompt_all(): + WORD_PROMPT = str(requests.get("https://random-word-api.herokuapp.com/word").text)[ + 2:-2 + ] + if request.method == "POST": + message = "Results are here" + session["output_key"] = random.choice(KEYS) + random.choice(SIGN) + session["output_signature"] = random.choice(TIME_SIGNATURES) + response = MODEL.generate(f"A single sentence about {WORD_PROMPT}", temp=0).splitlines().pop(0) + numresp = len(response)- 1 + if numresp <= 1: + session["output_theme"] = str(response) + randresp = random.randrange(0, numresp) + session["output_theme"] = response + return render_template("single-button.html", title="Results", message=message) + return render_template("single-button.html", title="Single Option") + + @app.route("/") def prompt_instrument(): pass + @app.route("/") def prompt_key(): pass + @app.route("/") def prompt_timesig(): pass -@app.route("/") -def prompt_all(): - pass @app.route("/") def prompt_influence(): diff --git a/application/static/styles.css b/application/static/styles.css index 5f659b6..7297359 100644 --- a/application/static/styles.css +++ b/application/static/styles.css @@ -47,6 +47,9 @@ html { display: flex; justify-content: center; } +header { + height: 10%; +} .prompt-button { background-color: rgba(255, 255, 255, 0.5); @@ -64,3 +67,9 @@ html { .prompt { padding: 5px; } + +.results-container { + display: inline-block; + width: 60%; + text-align: center; +} diff --git a/application/templates/modal_results.html b/application/templates/modal_results.html new file mode 100644 index 0000000..c75f881 --- /dev/null +++ b/application/templates/modal_results.html @@ -0,0 +1,133 @@ + + + + + + diff --git a/application/templates/results.html b/application/templates/results.html new file mode 100644 index 0000000..0568e15 --- /dev/null +++ b/application/templates/results.html @@ -0,0 +1,18 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% block content %} +
+

Here are your results!

+

+
+

Key:

+

{{ session.output_key }}

+

Time Signature:

+

{{ session.output_signature }}

+

Theme:

+

{{ session.output_theme }}

+
+
+ +{% endblock %} diff --git a/application/templates/single-button.html b/application/templates/single-button.html new file mode 100644 index 0000000..16ad1c6 --- /dev/null +++ b/application/templates/single-button.html @@ -0,0 +1,21 @@ + +{% include 'head.html' %} +{% include 'header.html' %} +{% block content %} +
+ {% if message %} + {% include 'modal_results.html' %} + {% endif %} +

Get Inspired with a Song Writing Prompt!

+

{{ session.list_response }}

+
+
+ +
+
+
+ +{% endblock %} diff --git a/gpt4all_tst.py b/gpt4all_tst.py new file mode 100644 index 0000000..f2ac44c --- /dev/null +++ b/gpt4all_tst.py @@ -0,0 +1,10 @@ +from gpt4all import GPT4All +import requests +from pathlib import Path + +MODEL = GPT4All(model_name="gpt4all-falcon-q4_0.gguf", model_path=(Path.home() / ".cache" / "gpt4all"), allow_download=True) +WORD_PROMPT = str(requests.get("https://random-word-api.herokuapp.com/word").text)[2:-2] +response = MODEL.generate(f"The theme is {WORD_PROMPT} and this song is about", temp=1) +print(WORD_PROMPT) +resp = response.splitlines().pop(0) +print(resp)