Mution commited on
Commit
fcefe7a
verified
1 Parent(s): ec240fe

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +36 -20
app.py CHANGED
@@ -5,38 +5,54 @@ import torch
5
 
6
  app = Flask(__name__)
7
 
8
- # Configuraci贸n del modelo
9
  model_id = "Mution/Hydra-Ydr-3.0"
10
  token = os.getenv("HF_TOKEN")
11
 
12
- print("Cargando modelo en memoria...")
13
- tokenizer = AutoTokenizer.from_pretrained(model_id, token=token)
 
 
 
 
 
14
  model = AutoModelForCausalLM.from_pretrained(
15
  model_id,
16
  token=token,
17
  device_map="cpu",
18
  torch_dtype=torch.float32
19
  )
20
- print("Modelo cargado correctamente.")
21
 
22
  @app.route('/ask', methods=['POST'])
23
  def ask():
24
- data = request.json
25
- user_prompt = data.get("prompt", "")
26
-
27
- # Formato exacto que usaste en el entrenamiento
28
- 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"
29
-
30
- inputs = tokenizer(prompt, return_tensors="pt")
31
-
32
- with torch.no_grad():
33
- outputs = model.generate(**inputs, max_new_tokens=500, do_sample=True, temperature=0.7)
34
-
35
- # Extraer solo la respuesta del asistente
36
- full_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
37
- response = full_text.split("<|im_start|>assistant\n")[-1]
38
-
39
- return jsonify({"response": response})
 
 
 
 
 
 
 
 
 
 
 
40
 
41
  if __name__ == '__main__':
42
  app.run(host='0.0.0.0', port=7860)
 
5
 
6
  app = Flask(__name__)
7
 
8
+ # Configuraci贸n principal
9
  model_id = "Mution/Hydra-Ydr-3.0"
10
  token = os.getenv("HF_TOKEN")
11
 
12
+ print("Iniciando motor Hydra Ydr 3.0...")
13
+ print("Cargando tokenizador (modo seguro para evitar conflicto de keys)...")
14
+
15
+ # Soluci贸n al error de Qwen2: forzamos use_fast=False
16
+ tokenizer = AutoTokenizer.from_pretrained(model_id, token=token, use_fast=False)
17
+
18
+ print("Cargando modelo en memoria (esto tomar谩 unos minutos)...")
19
  model = AutoModelForCausalLM.from_pretrained(
20
  model_id,
21
  token=token,
22
  device_map="cpu",
23
  torch_dtype=torch.float32
24
  )
25
+ print("Hydra Ydr 3.0 cargado y listo para operar en el servidor.")
26
 
27
  @app.route('/ask', methods=['POST'])
28
  def ask():
29
+ try:
30
+ data = request.json
31
+ user_prompt = data.get("prompt", "")
32
+
33
+ # Identidad estricta para Hydra Software
34
+ 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"
35
+
36
+ inputs = tokenizer(prompt, return_tensors="pt")
37
+
38
+ with torch.no_grad():
39
+ # Generaci贸n de la respuesta
40
+ outputs = model.generate(
41
+ **inputs,
42
+ max_new_tokens=512,
43
+ do_sample=True,
44
+ temperature=0.7,
45
+ top_p=0.9
46
+ )
47
+
48
+ # Limpieza del formato para devolver solo el texto 煤til
49
+ full_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
50
+ response = full_text.split("<|im_start|>assistant\n")[-1].strip()
51
+
52
+ return jsonify({"response": response})
53
+
54
+ except Exception as e:
55
+ return jsonify({"error": str(e)}), 500
56
 
57
  if __name__ == '__main__':
58
  app.run(host='0.0.0.0', port=7860)