Okay, this branch has become a mess. Opening a new branch with a semi-working celery setup and then will add in my routes and html pages. This branch has reached it's deadend
This commit is contained in:
83
application/background_tasks.py
Normal file
83
application/background_tasks.py
Normal file
@ -0,0 +1,83 @@
|
||||
from celery import shared_task
|
||||
from redbeat import RedBeatSchedulerEntry
|
||||
from celery import current_app as celery_app
|
||||
from sqlalchemy.sql.expression import func, select, insert
|
||||
from sqlalchemy.ext.automap import automap_base
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import Session
|
||||
from gpt4all import GPT4All
|
||||
|
||||
engine = create_engine("sqlite:///words_prompts.db", pool_pre_ping=True)
|
||||
|
||||
Base = automap_base()
|
||||
Base.prepare(engine, reflect=True)
|
||||
|
||||
Words = Base.classes.words
|
||||
Themes = Base.classes.themes
|
||||
|
||||
|
||||
MODEL = GPT4All(
|
||||
model_name="gpt4all-falcon-q4_0.gguf",
|
||||
# model_path=(Path.home() / ".cache" / "gpt4all"),
|
||||
allow_download=False,
|
||||
)
|
||||
|
||||
|
||||
@shared_task
|
||||
def grab_word():
|
||||
while True:
|
||||
with Session(engine) as word_session:
|
||||
random_word = word_session.query(Words.words)
|
||||
random_word = random_word.order_by(func.random()).first()
|
||||
random_word = str(random_word)[4:-4]
|
||||
# SYSTEM_TEMPLATE = "A single sentence based on a word."
|
||||
# PROMPT_TEMPLATE = "### Instruction: {0} \n### Response: "
|
||||
response = MODEL.generate(
|
||||
f"Give me a writing prompt about {random_word}.",
|
||||
temp=0.7,
|
||||
callback=stop_on_token_callback,
|
||||
)
|
||||
word_session.execute(insert(Themes).values(themes=response))
|
||||
word_session.commit()
|
||||
|
||||
|
||||
def stop_on_token_callback(token_id, token_string):
|
||||
"""
|
||||
Function to limit return length of the
|
||||
gpt4all response. Period indicates a sentence.
|
||||
"""
|
||||
if "." in token_string:
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
# def every(__seconds: float, func, *args, **kwargs):
|
||||
# while True:
|
||||
# func(*args, **kwargs)
|
||||
# await asyncio.sleep(__seconds)
|
||||
#
|
||||
#
|
||||
# def main():
|
||||
# asyncio.ensure_future(grab_word())
|
||||
|
||||
|
||||
# with app.app_context():
|
||||
# loop = asyncio.get_event_loop()
|
||||
# loop.run_until_complete(grab_word())
|
||||
# loop.run_forever()
|
||||
|
||||
|
||||
# async def get_theme(random_word):
|
||||
# print("Get Theme function running.")
|
||||
# # SYSTEM_TEMPLATE = "A single sentence based on a word."
|
||||
# # PROMPT_TEMPLATE = "### Instruction: {0} \n### Response: "
|
||||
# random_word = await random_word
|
||||
# print(f"Theme Func, word: {random_word}")
|
||||
# while True:
|
||||
# response = MODEL.generate(
|
||||
# f"Tell me about {random_word}.", temp=0.7, callback=stop_on_token_callback
|
||||
# )
|
||||
# with Session(engine) as thm_session:
|
||||
# print(f"Theme func, response: {response}")
|
||||
# thm_session.add(response)
|
||||
# thm_session.commit()
|
||||
Reference in New Issue
Block a user