diabolic6045's picture
Update api/app.py
be39ab6 verified
raw
history blame
2.99 kB
import os
from flask import Flask, jsonify, render_template, request
import google.generativeai as genai
app = Flask(__name__, static_folder='static')
genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
# Enhanced generation config
generation_config = {
"temperature": 0.9,
"top_p": 0.95,
"top_k": 40,
"max_output_tokens": 1024,
}
model = genai.GenerativeModel(
model_name="gemini-1.5-flash-002",
generation_config=generation_config,
system_instruction="You are a master storyteller who creates engaging, creative stories in any genre."
)
# Store active chat sessions
sessions = {}
@app.route('/')
def index():
return render_template('index.html')
@app.route('/start-story', methods=['POST'])
def start_story():
try:
data = request.json
genre = data.get('genre', 'fantasy')
theme = data.get('theme', 'adventure')
session_id = os.urandom(16).hex()
prompt = f"Create the beginning of a {genre} story with a {theme} theme. Make it engaging, easy to read, with a good flow and approximately 300 words. also make sure you use easy level of english and simple words."
chat_session = model.start_chat(history=[])
response = chat_session.send_message(prompt)
sessions[session_id] = {
'chat_session': chat_session,
'genre': genre,
'theme': theme,
'branch_point': 1
}
return jsonify({
'story': response.text,
'session_id': session_id
})
except Exception as e:
return jsonify({'error': str(e)}), 500
@app.route('/continue-story', methods=['POST'])
def continue_story():
try:
data = request.json
session_id = data.get('session_id')
branch_choice = data.get('branch_choice', 'main')
if session_id not in sessions:
return jsonify({'error': 'Invalid session'}), 400
session = sessions[session_id]
chat_session = session['chat_session']
if branch_choice == 'branch':
prompt = "Continue the story but introduce an unexpected twist that creates a new story branch."
else:
prompt = "Continue the story naturally from where it left off."
response = chat_session.send_message(f"{prompt} Add approximately 300 more words.")
# Generate branch options every 3 chunks
branch_options = None
if session['branch_point'] % 3 == 0:
branch_options = [
"Continue the main story",
"Explore an alternative path"
]
session['branch_point'] += 1
return jsonify({
'continuation': response.text,
'branch_options': branch_options
})
except Exception as e:
return jsonify({'error': str(e)}), 500
# if __name__ == '__main__':
app.run(host='0.0.0.0', port=7860)