diff --git a/senju/ai_gen.py b/senju/ai_gen.py index 2a12a90..9dec9ae 100644 --- a/senju/ai_gen.py +++ b/senju/ai_gen.py @@ -1,8 +1,12 @@ +from __future__ import annotations + import json + import requests + from senju.haiku import Haiku -AI_BASE_URL: str = "http://ollama:11434/api" +AI_BASE_URL: str = "http://ollama:11434/api" AI_GEN_ENDPOINT: str = "/generate" AI_GEN_SYS_PROMPT = """ @@ -42,10 +46,11 @@ EXACT FORMAT compliance. Any deviation will cause the application to break. USER INPUT FOR HAIKU CREATION: """ + def request_haiku(seed: str) -> Haiku: """This function prompts the ai to generate the hauku based on the user input""" - + ai_gen_request = { "model": "llama3.2:1b", "prompt": f"{AI_GEN_SYS_PROMPT}{seed}", @@ -54,12 +59,17 @@ def request_haiku(seed: str) -> Haiku: while True: try: - r = requests.post(url=AI_BASE_URL+AI_GEN_ENDPOINT, json=ai_gen_request) + r = requests.post(url=AI_BASE_URL+AI_GEN_ENDPOINT, + json=ai_gen_request) ai_response = json.loads(r.json()["response"]) - haiku = Haiku([ai_response["line1"], ai_response["line2"], ai_response["line3"]]) - break; - except: - pass - - return haiku + haiku = Haiku( + [ + ai_response["line1"], + ai_response["line2"], + ai_response["line3"] + ]) + break + except json.JSONDecodeError: + continue + return haiku diff --git a/senju/haiku.py b/senju/haiku.py index a6cb4d6..1a626e4 100644 --- a/senju/haiku.py +++ b/senju/haiku.py @@ -1,5 +1,8 @@ -from dataclasses import dataclass +from __future__ import annotations + import json +from dataclasses import dataclass + @dataclass class Haiku: @@ -7,4 +10,3 @@ class Haiku: def get_json(self): return json.dumps(self.lines) - diff --git a/senju/main.py b/senju/main.py index e974ad1..75f6043 100644 --- a/senju/main.py +++ b/senju/main.py @@ -1,5 +1,8 @@ +from __future__ import annotations + from pathlib import Path -from flask import Flask, redirect, render_template, url_for, request + +from flask import Flask, redirect, render_template, request, url_for from senju.ai_gen import request_haiku from senju.haiku import Haiku @@ -47,13 +50,15 @@ def prompt_view(): title="Haiku generation" ) + @app.route("/generate_haiku", methods=['POST']) def generate_haiku(): prompt = "a" - print("Generation function") if request.method == 'POST': json_data = request.get_json() prompt = json_data["prompt"] - haiku = request_haiku(prompt) - id = store.save_haiku(haiku) - return str(id) + haiku = request_haiku(prompt) + id = store.save_haiku(haiku) + return str(id) + else: + return "Method not allowed", 405 diff --git a/senju/store_manager.py b/senju/store_manager.py index 4886559..e99b98e 100644 --- a/senju/store_manager.py +++ b/senju/store_manager.py @@ -1,8 +1,10 @@ -from typing import Optional -from tinydb import TinyDB -from pathlib import Path -from logging import Logger +from __future__ import annotations +from logging import Logger +from pathlib import Path +from typing import Optional + +from tinydb import TinyDB from tinydb.queries import QueryImpl from senju.haiku import Haiku diff --git a/senju/templates/prompt.html b/senju/templates/prompt.html index 699dfd3..730d47e 100644 --- a/senju/templates/prompt.html +++ b/senju/templates/prompt.html @@ -5,21 +5,21 @@

Very 1337 prompt input

- -
- +

Response:

Waiting for input...

@@ -72,4 +72,3 @@ document.getElementById("submit-btn").addEventListener("click", function() { }); {% endblock %} - diff --git a/tests/conftest.py b/tests/conftest.py index 0967994..5b2b1b2 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import tempfile from pathlib import Path diff --git a/tests/test_store.py b/tests/test_store.py index f49b754..dc770c7 100644 --- a/tests/test_store.py +++ b/tests/test_store.py @@ -1,5 +1,7 @@ # do not remove this import. This is needed for # pytest fixtures to work +from __future__ import annotations + import pytest # noqa: F401 from senju.haiku import Haiku diff --git a/tests/test_tests.py b/tests/test_tests.py index 90bf9fa..58ab3fa 100644 --- a/tests/test_tests.py +++ b/tests/test_tests.py @@ -1,7 +1,10 @@ # I do not trust python and it's tests, so I'm testing them. May not be worth # much, but at least it shows me a few things. +from __future__ import annotations + import os + # do not remove this import. This is needed for # pytest fixtures to work import pytest # noqa: F401