minzo456 commited on
Commit
79ad033
·
verified ·
1 Parent(s): 3a9cb47

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +50 -23
app.py CHANGED
@@ -1,19 +1,22 @@
1
  import os
2
  import torch
3
  import datetime
4
- from flask import Flask, request, Response
5
  from flask_cors import CORS
6
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
7
  from threading import Thread
8
 
9
  app = Flask(__name__)
10
- # 🔱 ඉතා වැදගත්: පිටති HTML එකට සම්බන්ධ වීමට CORS අනිවර්යයි
11
- CORS(app)
12
 
 
 
 
13
  MODEL_ID = "Qwen/Qwen2.5-1.5B-Instruct"
14
  HF_TOKEN = os.getenv("HF_TOKEN")
15
 
16
- print("🐘 Elephant Core Backend is booting up...")
17
 
18
  tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, token=HF_TOKEN)
19
  model = AutoModelForCausalLM.from_pretrained(
@@ -23,30 +26,54 @@ model = AutoModelForCausalLM.from_pretrained(
23
  token=HF_TOKEN
24
  )
25
 
26
- SYSTEM_PROMPT = "🐘 HELPFUL ELEPHANT AI. Authorized by MINZO-PRIME. Provide technical precision."
27
 
 
 
 
28
  @app.route('/api/chat', methods=['POST'])
29
  def chat():
30
- data = request.json
31
- user_msg = data.get('message', '').strip()
32
-
33
- messages = [
34
- {"role": "system", "content": SYSTEM_PROMPT},
35
- {"role": "user", "content": user_msg}
36
- ]
37
-
38
- inputs = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt").to(model.device)
39
- streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
40
-
41
- gen_kwargs = dict(input_ids=inputs, streamer=streamer, max_new_tokens=1024, temperature=0.7, do_sample=True)
42
- thread = Thread(target=model.generate, kwargs=gen_kwargs)
43
- thread.start()
 
 
 
 
 
 
 
 
 
 
44
 
45
- def generate():
46
- for new_text in streamer:
47
- yield new_text
 
 
 
 
 
 
 
 
48
 
49
- return Response(generate(), mimetype='text/plain')
 
 
50
 
51
  if __name__ == '__main__':
 
52
  app.run(host='0.0.0.0', port=7860)
 
1
  import os
2
  import torch
3
  import datetime
4
+ from flask import Flask, request, jsonify, Response
5
  from flask_cors import CORS
6
  from transformers import AutoModelForCausalLM, AutoTokenizer, TextIteratorStreamer
7
  from threading import Thread
8
 
9
  app = Flask(__name__)
10
+ # 🔱 වැදගත්: ෑම තැනක සිට සම්බන්ධ වීමට CORS ඉඩ ලබ දීම
11
+ CORS(app, resources={r"/api/*": {"origins": "*"}})
12
 
13
+ # ============================================
14
+ # 🔱 TRANSFORMERS ENGINE CONFIG
15
+ # ============================================
16
  MODEL_ID = "Qwen/Qwen2.5-1.5B-Instruct"
17
  HF_TOKEN = os.getenv("HF_TOKEN")
18
 
19
+ print("🐘 Helpful Elephant is loading via Transformers...")
20
 
21
  tokenizer = AutoTokenizer.from_pretrained(MODEL_ID, token=HF_TOKEN)
22
  model = AutoModelForCausalLM.from_pretrained(
 
26
  token=HF_TOKEN
27
  )
28
 
29
+ SYSTEM_PROMPT = "🐘 HELPFUL ELEPHANT AI v1.0. High-speed Research Mode. Commander: MINZO-PRIME."
30
 
31
+ # ============================================
32
+ # 🔱 API ENDPOINT
33
+ # ============================================
34
  @app.route('/api/chat', methods=['POST'])
35
  def chat():
36
+ try:
37
+ data = request.json
38
+ user_msg = data.get('message', '').strip()
39
+
40
+ messages = [
41
+ {"role": "system", "content": SYSTEM_PROMPT},
42
+ {"role": "user", "content": user_msg}
43
+ ]
44
+
45
+ inputs = tokenizer.apply_chat_template(
46
+ messages,
47
+ add_generation_prompt=True,
48
+ return_tensors="pt"
49
+ ).to(model.device)
50
+
51
+ streamer = TextIteratorStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True)
52
+
53
+ generation_kwargs = dict(
54
+ input_ids=inputs,
55
+ streamer=streamer,
56
+ max_new_tokens=1024,
57
+ temperature=0.7,
58
+ do_sample=True
59
+ )
60
 
61
+ thread = Thread(target=model.generate, kwargs=generation_kwargs)
62
+ thread.start()
63
+
64
+ def generate():
65
+ for new_text in streamer:
66
+ yield new_text
67
+
68
+ return Response(generate(), mimetype='text/plain')
69
+
70
+ except Exception as e:
71
+ return jsonify({"error": str(e)}), 500
72
 
73
+ @app.route('/')
74
+ def health():
75
+ return "🐘 Elephant AI Core is Online. Port: 7860"
76
 
77
  if __name__ == '__main__':
78
+ # 🔱 Hugging Face සඳහා අනිවාර්යයෙන්ම port 7860 විය යුතුයි
79
  app.run(host='0.0.0.0', port=7860)