New.space.name / app.py
Vitorts's picture
Update app.py
86f6bf7 verified
Raw
History Blame Contribute Delete
2.81 kB
from flask import Flask, request, jsonify, send_file
from groq import Groq
import os
app = Flask(__name__)
client = Groq(api_key=os.environ.get("GROQ_API_KEY"))
SYSTEM = """Você é o Mestre de Jogo (MJ) absoluto do RPG "O Pilar dos Deuses".
MUNDO: Dividido entre Boreas (Norte) e Austros (Sul), separados pelo Pilar dos Deuses.
REINOS BOREAS:
1. Império de Ferro (Bastilha de Aço) - Militar S, Intel A, Mágico D, Financeiro A. Humanos modificados. Elite: Engrenagens do Apocalipse.
2. Reino de Sangue (Acampamento Eterno) - Militar A. Orcs/Tieflings. Elite: Rasga-Vésperas.
3. Hegemonia Glacial (Ventus) - Mágico A. Elementais de Gelo. Elite: Sentinelas da Geada.
4. República dos Artífices (Neo-Mecanica) - Financeiro S. Gnomos/Humanos. Elite: Arquitetos de Aço.
REINOS AUSTROS:
5. Teocracia Solar (Lumen) - Mágico S. Celestiais. CAÇAM linhagens demoníacas ativamente.
6. Confederação das Ilhas (Porto das Sombras) - Intel S. Piratas/mercadores.
7. Sultanato das Areias (Oásis de Ouro) - Intel S. Ifrits/Humanos.
8. Federação das Selvas (Veridia) - Militar A. Feras/Dríades/Elfos.
SISTEMAS:
- Role 1d20 internamente: 1=falha catastrófica, 20=crítico épico. Informe [DADO:N].
- Ranks: E < D < C < B < A < S < SS < SS+
- Calendário: 360 dias. Ciclos: Despertar(1-3), Ascensão(4-6), Zênite(7-9), Ocaso(10-12)
- Linhagem demoníaca adormecida desperta em crises. Dê pistas sutis.
- Morte é permanente. Combate brutal com dano real.
FORMATO OBRIGATÓRIO:
Linha 1: [DADO:N]
Narrativa épica em PT-BR (mínimo 3 parágrafos)
Última linha: STATUS|hp=N|maxHp=N|gold=N|rank=X|local=X|hora=HH:MM|dia=N|ciclo=X|clima=X|for=N|agi=N|mana=N|car=N|men=N"""
@app.route('/')
def index():
return send_file('index.html')
@app.route('/api/chat', methods=['POST'])
def chat():
try:
data = request.json
messages = data.get('messages', [])
char = data.get('char', {})
char_info = f"\n\nPERSONAGEM: {char.get('name','?')} | Linhagem: {char.get('lineage','?')} | HP:{char.get('hp',100)}/{char.get('maxHp',100)} | Rank:{char.get('rank','E')} | Ouro:{char.get('gold',50)} | Local:{char.get('local','?')} | For:{char.get('for',10)} Agi:{char.get('agi',10)} Mana:{char.get('mana',5)} Car:{char.get('car',8)} Men:{char.get('men',10)}"
response = client.chat.completions.create(
model="llama-3.3-70b-versatile",
max_tokens=1500,
messages=[
{"role": "system", "content": SYSTEM + char_info},
*messages[-12:]
]
)
return jsonify({"reply": response.choices[0].message.content})
except Exception as e:
return jsonify({"error": str(e)}), 500
if __name__ == '__main__':
port = int(os.environ.get('PORT', 7860))
app.run(host='0.0.0.0', port=port)