|
|
from transformers import AutoModelForCausalLM, AutoTokenizer |
|
|
|
|
|
from flask_basicauth import BasicAuth |
|
|
from datetime import datetime |
|
|
from flask_apscheduler import APScheduler |
|
|
|
|
|
from flask import Flask |
|
|
from flsak import request |
|
|
|
|
|
model_name = "inclusionAI/Ring-mini-2.0" |
|
|
print(f"load model {model_name}") |
|
|
model = AutoModelForCausalLM.from_pretrained( |
|
|
model_name, |
|
|
torch_dtype="auto", |
|
|
device_map="auto", |
|
|
trust_remote_code=True |
|
|
) |
|
|
|
|
|
print(f"load tokenizer {model_name}") |
|
|
tokenizer = AutoTokenizer.from_pretrained(model_name) |
|
|
|
|
|
app = Flask(__name__) |
|
|
scheduler = APScheduler() |
|
|
|
|
|
def scheduleTask(): |
|
|
print(f"This test runs every 30 seconds {datetime.now()}") |
|
|
|
|
|
scheduler.add_job(id = 'Scheduled Task', func=scheduleTask, trigger="interval", seconds=30) |
|
|
scheduler.start() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
basic_auth = BasicAuth(app) |
|
|
app.config['BASIC_AUTH_REALM'] = 'realm' |
|
|
app.config['BASIC_AUTH_USERNAME'] = 'vova' |
|
|
app.config['BASIC_AUTH_PASSWORD'] = 'vova' |
|
|
|
|
|
print(f"Flask app") |
|
|
|
|
|
@app.route("/", methods=['POST', 'GET']) |
|
|
@basic_auth.required |
|
|
def root(): |
|
|
if request.args.get('logs'): |
|
|
return f"<h1>Главная logs</h1>" |
|
|
else: |
|
|
return f"<h1>Главная страница</h1><p>Добро пожаловать!</p><p>current model {model_name}</p>" |
|
|
|
|
|
|
|
|
@app.route("/about") |
|
|
def about(): |
|
|
return "<h1>О нас</h1><p>Мы изучаем Flask!</p>" |
|
|
|
|
|
|
|
|
|
|
|
@app.route("/contact") |
|
|
def contact(): |
|
|
return "<h1>Контакты</h1><p>Свяжитесь с нами: email@example.com</p>" |
|
|
|
|
|
if __name__ == "__main__": |
|
|
app.run(debug=False, host='0.0.0.0', port=7860) |