Mution commited on
Commit
d567bd3
verified
1 Parent(s): 50cf635

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -24
app.py CHANGED
@@ -1,10 +1,16 @@
1
  import os
 
 
 
 
2
  from flask import Flask, request, jsonify
 
3
  from transformers import AutoModelForCausalLM, AutoTokenizer
4
  from peft import PeftModel
5
  import torch
6
 
7
  app = Flask(__name__)
 
8
 
9
  # Configuraci贸n
10
  base_model_id = "Qwen/Qwen2.5-Coder-7B-Instruct"
@@ -18,38 +24,38 @@ VALID_API_KEYS = {
18
  "hydra-sk-gamma-5647382": "Panel Web"
19
  }
20
 
21
- print("Iniciando motor Hydra Ydr 3.0...")
22
- print("Cargando tokenizador original...")
23
- tokenizer = AutoTokenizer.from_pretrained(base_model_id, token=token)
24
-
25
- print("Cargando el cerebro base (esto tomar谩 memoria y tiempo)...")
26
- # Usamos float16 y low_cpu_mem_usage para no reventar la RAM del Space gratuito
27
- base_model = AutoModelForCausalLM.from_pretrained(
28
- base_model_id,
29
- token=token,
30
- device_map="cpu",
31
- torch_dtype=torch.float16,
32
- low_cpu_mem_usage=True
33
- )
34
 
35
- print("Inyectando el conocimiento de Hydra Software...")
36
- # Aqu铆 es donde conectamos tu entrenamiento con la base
37
- model = PeftModel.from_pretrained(base_model, adapter_id, token=token)
 
 
 
 
 
38
 
39
- print("Hydra Ydr 3.0 cargado y 100% operativo.")
 
 
 
 
 
 
40
 
41
  @app.route('/ask', methods=['POST'])
42
  def ask():
43
  try:
44
- # Sistema de seguridad por API Key
45
  api_key = request.headers.get("x-api-key")
46
  if not api_key or api_key not in VALID_API_KEYS:
47
- return jsonify({"error": "Acceso denegado. API Key inv谩lida o faltante."}), 401
48
 
49
  data = request.json
50
  user_prompt = data.get("prompt", "")
51
 
52
- prompt = f"<|im_start|>system\nEres Hydra Ydr 3.0, el motor de inteligencia artificial de Hydra Software. Eres un experto absoluto en programaci贸n, desarrollo de software, creaci贸n de endpoints y arquitecturas de red. Operas de manera directa proporcionando siempre el c贸digo completo y funcional.<|im_end|>\n<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n"
53
 
54
  inputs = tokenizer(prompt, return_tensors="pt")
55
 
@@ -65,13 +71,16 @@ def ask():
65
  full_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
66
  response = full_text.split("<|im_start|>assistant\n")[-1].strip()
67
 
68
- return jsonify({
69
- "response": response,
70
- "used_key": VALID_API_KEYS[api_key]
71
- })
72
 
73
  except Exception as e:
74
  return jsonify({"error": str(e)}), 500
75
 
 
 
 
 
 
76
  if __name__ == '__main__':
 
77
  app.run(host='0.0.0.0', port=7860)
 
1
  import os
2
+ import sys
3
+ print("LOG: Iniciando app.py...")
4
+ sys.stdout.flush()
5
+
6
  from flask import Flask, request, jsonify
7
+ from flask_cors import CORS
8
  from transformers import AutoModelForCausalLM, AutoTokenizer
9
  from peft import PeftModel
10
  import torch
11
 
12
  app = Flask(__name__)
13
+ CORS(app)
14
 
15
  # Configuraci贸n
16
  base_model_id = "Qwen/Qwen2.5-Coder-7B-Instruct"
 
24
  "hydra-sk-gamma-5647382": "Panel Web"
25
  }
26
 
27
+ try:
28
+ print("LOG: Cargando tokenizador...")
29
+ tokenizer = AutoTokenizer.from_pretrained(base_model_id, token=token)
 
 
 
 
 
 
 
 
 
 
30
 
31
+ print("LOG: Cargando cerebro base...")
32
+ base_model = AutoModelForCausalLM.from_pretrained(
33
+ base_model_id,
34
+ token=token,
35
+ device_map="cpu",
36
+ torch_dtype=torch.float16,
37
+ low_cpu_mem_usage=True
38
+ )
39
 
40
+ print("LOG: Inyectando adaptador Hydra...")
41
+ model = PeftModel.from_pretrained(base_model, adapter_id, token=token)
42
+
43
+ print("LOG: IA cargada y lista.")
44
+ except Exception as e:
45
+ print(f"LOG CR脥TICO: Error al cargar el modelo: {e}")
46
+ sys.exit(1)
47
 
48
  @app.route('/ask', methods=['POST'])
49
  def ask():
50
  try:
 
51
  api_key = request.headers.get("x-api-key")
52
  if not api_key or api_key not in VALID_API_KEYS:
53
+ return jsonify({"error": "Acceso denegado."}), 401
54
 
55
  data = request.json
56
  user_prompt = data.get("prompt", "")
57
 
58
+ prompt = f"<|im_start|>system\nEres Hydra Ydr 3.0, el motor de inteligencia artificial de Hydra Software. Eres un experto absoluto en programaci贸n y desarrollo. Proporciona siempre c贸digo completo y funcional.<|im_end|>\n<|im_start|>user\n{user_prompt}<|im_end|>\n<|im_start|>assistant\n"
59
 
60
  inputs = tokenizer(prompt, return_tensors="pt")
61
 
 
71
  full_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
72
  response = full_text.split("<|im_start|>assistant\n")[-1].strip()
73
 
74
+ return jsonify({"response": response, "used_key": VALID_API_KEYS[api_key]})
 
 
 
75
 
76
  except Exception as e:
77
  return jsonify({"error": str(e)}), 500
78
 
79
+ # Ruta de prueba para verificar que el servidor vive
80
+ @app.route('/', methods=['GET'])
81
+ def health():
82
+ return "Hydra Ydr 3.0 Servidor Activo"
83
+
84
  if __name__ == '__main__':
85
+ print("LOG: Iniciando servidor Flask en 0.0.0.0:7860")
86
  app.run(host='0.0.0.0', port=7860)