|
from flask import Flask, render_template, request, jsonify |
|
from duckduckgo_search import DDGS |
|
import os |
|
app = Flask(__name__) |
|
app.secret_key = os.getenv("API_KEY") |
|
|
|
STORY_PROMPT = os.getenv("PROMPT") |
|
|
|
@app.route('/') |
|
def home(): |
|
return render_template('index.html') |
|
|
|
@app.route('/generate', methods=['POST']) |
|
def generate_story(): |
|
topic = request.json.get('topic', '') |
|
previous_chapter = request.json.get('previous_chapter', '') |
|
chapter_number = request.json.get('chapter_number', 1) |
|
|
|
if not topic: |
|
return jsonify({'error': 'Topic is required'}), 400 |
|
|
|
try: |
|
prompt = STORY_PROMPT.replace('{$TOPIC}', topic) |
|
prompt = prompt.replace('{$PREVIOUS_CHAPTER}', previous_chapter if previous_chapter else '') |
|
|
|
with DDGS() as ddgs: |
|
response = ddgs.chat(prompt, model='claude-3-haiku') |
|
|
|
return jsonify({ |
|
'story': response, |
|
'chapter_number': chapter_number |
|
}) |
|
except Exception as e: |
|
return jsonify({'error': str(e)}), 500 |
|
|
|
if __name__ == '__main__': |
|
app.run(host='0.0.0.0', port=7860) |