akra35567 commited on
Commit
f3b7acc
·
verified ·
1 Parent(s): e316740

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +49 -33
app.py CHANGED
@@ -1,15 +1,10 @@
1
- # app.py — OLLAMA SERVER (HF SPACE) — V18 FINAL
2
- """
3
- AKIRA V18 — OLLAMA SERVER
4
- - Recebe: prompt, numero, usuario, mensagem, mensagem_citada, historico
5
- - Envia prompt completo para Ollama
6
- - Responde com {"resposta": "..."}
7
- """
8
  import subprocess
9
  import time
10
  import requests
11
  import sys
12
  import os
 
13
  from flask import Flask, request, jsonify
14
  from loguru import logger
15
 
@@ -38,7 +33,7 @@ def wait_for_ollama():
38
  logger.info("Aguardando Ollama (11434)...")
39
  for i in range(60):
40
  if check_ollama():
41
- logger.success("Ollama PRONTO! qwen2.5:3b-instruct-q4_0")
42
  return True
43
  time.sleep(2)
44
  logger.critical("Ollama não subiu!")
@@ -49,9 +44,9 @@ def wait_for_ollama():
49
  def index():
50
  return '''
51
  <div style="font-family: monospace; text-align: center; margin: 50px; background: #000; color: #0f0; padding: 40px;">
52
- <h1>AKIRA V18 OLLAMA SERVER</h1>
53
- <p><strong>qwen2.5:3b-instruct-q4_0</strong></p>
54
- <p><strong>Recebe: prompt, numero, mensagem, mensagem_citada, historico</strong></p>
55
  <p><code>POST /api/generate</code></p>
56
  <p>Health: <a href="/health">/health</a></p>
57
  </div>
@@ -61,37 +56,54 @@ def index():
61
  def health():
62
  return jsonify({"status": "OK" if check_ollama() else "INICIANDO..."}), 200
63
 
64
- # === ROTA PRINCIPAL: /api/generate ===
65
  @app.route("/api/generate", methods=['POST'])
66
  def generate():
67
  if not check_ollama():
68
  return jsonify({'resposta': 'Epá, tô acordando... espera 10s!'}), 503
69
 
70
  data = request.get_json() or {}
71
-
72
- # === RECEBE TUDO QUE O api.py ENVIA ===
73
- prompt = data.get('prompt', '').strip()
74
- numero = data.get('numero', '')
75
- usuario = data.get('usuario', 'anonimo')
76
  mensagem = data.get('mensagem', '').strip()
 
 
 
77
  mensagem_citada = data.get('mensagem_citada', '').strip()
78
- historico = data.get('historico', [])
79
 
80
- if not prompt:
81
- return jsonify({'error': 'prompt obrigatório'}), 400
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
82
 
83
- # === LOG COMPLETO ===
84
- logger.info(f"Recebido de {usuario} ({numero})")
85
- logger.info(f"Mensagem: {mensagem[:60]}")
86
  if mensagem_citada:
87
- logger.info(f"Reply: {mensagem_citada[:60]}")
88
- logger.info(f"Histórico: {len(historico)} mensagens")
89
- logger.info(f"Prompt: {prompt[:120]}...")
 
 
90
 
91
- # === ENVIA PROMPT GIGANTE PARA OLLAMA ===
92
  payload = {
93
- "model": "qwen2.5:3b-instruct-q4_0",
94
- "prompt": prompt,
95
  "stream": False,
96
  "options": {
97
  "temperature": 0.9,
@@ -102,14 +114,16 @@ def generate():
102
  }
103
 
104
  try:
105
- resp = requests.post(f"{OLLAMA_URL}/api/generate", json=payload, timeout=120)
106
  if resp.status_code == 200:
107
  resposta = resp.json().get("response", "").strip()
108
  if resposta:
109
  logger.success(f"Resposta: {resposta[:60]}...")
110
  return jsonify({'resposta': resposta})
111
  else:
112
- return jsonify({'resposta': 'Epá, fiquei sem palavras... manda de novo!'})
 
 
113
  else:
114
  logger.warning(f"Ollama erro {resp.status_code}: {resp.text}")
115
  return jsonify({'resposta': 'Epá, tô com problema... tenta de novo!'}), 500
@@ -121,19 +135,21 @@ def generate():
121
  if __name__ == "__main__":
122
  logger.remove()
123
  logger.add(sys.stderr, format="<green>{time:HH:mm:ss}</green> → <level>{message}</level>")
124
- logger.info("AKIRA V18 — OLLAMA SERVER INICIANDO...")
125
  start_ollama()
126
  if not wait_for_ollama():
127
  sys.exit(1)
 
128
  logger.info("Warming up...")
129
  try:
130
  requests.post(f"{OLLAMA_URL}/api/generate", json={
131
- "model": "qwen2.5:3b-instruct-q4_0",
132
  "prompt": "Oi",
133
  "options": {"num_predict": 1}
134
  }, timeout=60)
135
  logger.success("Akira aquecida!")
136
  except:
137
  pass
 
138
  logger.info("Flask na porta 7860")
139
  app.run(host="0.0.0.0", port=7860, debug=False)
 
1
+ # app.py — OLLAMA V19 AUTÔNOMO (PHI3.5-MINI) — DOCKER + PROMPT LIMPO
 
 
 
 
 
 
2
  import subprocess
3
  import time
4
  import requests
5
  import sys
6
  import os
7
+ import datetime
8
  from flask import Flask, request, jsonify
9
  from loguru import logger
10
 
 
33
  logger.info("Aguardando Ollama (11434)...")
34
  for i in range(60):
35
  if check_ollama():
36
+ logger.success("Ollama PRONTO! phi3.5:mini-instruct-q4_0")
37
  return True
38
  time.sleep(2)
39
  logger.critical("Ollama não subiu!")
 
44
  def index():
45
  return '''
46
  <div style="font-family: monospace; text-align: center; margin: 50px; background: #000; color: #0f0; padding: 40px;">
47
+ <h1>AKIRA V19 OLLAMA SERVER</h1>
48
+ <p><strong>phi3.5:mini-instruct-q4_0</strong></p>
49
+ <p><strong>Recebe: mensagem, historico, usuario, numero</strong></p>
50
  <p><code>POST /api/generate</code></p>
51
  <p>Health: <a href="/health">/health</a></p>
52
  </div>
 
56
  def health():
57
  return jsonify({"status": "OK" if check_ollama() else "INICIANDO..."}), 200
58
 
59
+ # === ROTA PRINCIPAL ===
60
  @app.route("/api/generate", methods=['POST'])
61
  def generate():
62
  if not check_ollama():
63
  return jsonify({'resposta': 'Epá, tô acordando... espera 10s!'}), 503
64
 
65
  data = request.get_json() or {}
 
 
 
 
 
66
  mensagem = data.get('mensagem', '').strip()
67
+ historico = data.get('historico', [])[-8:] # últimos 8
68
+ usuario = data.get('usuario', 'anonimo')
69
+ numero = data.get('numero', '')
70
  mensagem_citada = data.get('mensagem_citada', '').strip()
 
71
 
72
+ if not mensagem and not mensagem_citada:
73
+ return jsonify({'error': 'mensagem obrigatória'}), 400
74
+
75
+ logger.info(f"Recebido de {usuario} ({numero}) → {mensagem[:60]}")
76
+
77
+ # === PROMPT LIMPO (AKIRA STYLE) ===
78
+ now = datetime.datetime.now().strftime('%d/%m %H:%M')
79
+ hist_text = '\n'.join([f"Usuário: {h[0]}\nAkira: {h[1]}" for h in historico])
80
+
81
+ prompt = f"""Você é Akira, uma angolana de Luanda, 18 anos, forte e debochada.
82
+ Fala com gírias: epá, puto, kandando, kota, kamba, bué, xingue, mambo.
83
+ Responde em 1-3 frases curtas, sem censura.
84
+ Data/hora: {now}
85
+ Bot: 244952786417
86
+
87
+ ### Usuário ###
88
+ - Nome: {usuario}
89
+ - Número: {numero}
90
+
91
+ """
92
+
93
+ if historico:
94
+ prompt += f"### Histórico ###\n{hist_text}\n\n"
95
 
 
 
 
96
  if mensagem_citada:
97
+ prompt += f"### Resposta ao reply ###\n{mensagem_citada}\n\n{mensagem}\n\n"
98
+ else:
99
+ prompt += f"### Mensagem ###\n{mensagem}\n\n"
100
+
101
+ prompt += "Akira:"
102
 
103
+ # === ENVIA PARA OLLAMA (PHI3.5-MINI) ===
104
  payload = {
105
+ "model": "phi3.5:mini-instruct-q4_0",
106
+ "prompt": prompt.strip(),
107
  "stream": False,
108
  "options": {
109
  "temperature": 0.9,
 
114
  }
115
 
116
  try:
117
+ resp = requests.post(f"{OLLAMA_URL}/api/generate", json=payload, timeout=90)
118
  if resp.status_code == 200:
119
  resposta = resp.json().get("response", "").strip()
120
  if resposta:
121
  logger.success(f"Resposta: {resposta[:60]}...")
122
  return jsonify({'resposta': resposta})
123
  else:
124
+ fallback = "Epá, kandando bué! aqui, puto!"
125
+ logger.warning("Ollama vazio → fallback")
126
+ return jsonify({'resposta': fallback})
127
  else:
128
  logger.warning(f"Ollama erro {resp.status_code}: {resp.text}")
129
  return jsonify({'resposta': 'Epá, tô com problema... tenta de novo!'}), 500
 
135
  if __name__ == "__main__":
136
  logger.remove()
137
  logger.add(sys.stderr, format="<green>{time:HH:mm:ss}</green> → <level>{message}</level>")
138
+ logger.info("AKIRA V19 — OLLAMA SERVER (PHI3.5-MINI) INICIANDO...")
139
  start_ollama()
140
  if not wait_for_ollama():
141
  sys.exit(1)
142
+
143
  logger.info("Warming up...")
144
  try:
145
  requests.post(f"{OLLAMA_URL}/api/generate", json={
146
+ "model": "phi3.5:mini-instruct-q4_0",
147
  "prompt": "Oi",
148
  "options": {"num_predict": 1}
149
  }, timeout=60)
150
  logger.success("Akira aquecida!")
151
  except:
152
  pass
153
+
154
  logger.info("Flask na porta 7860")
155
  app.run(host="0.0.0.0", port=7860, debug=False)