from flask import Blueprint, render_template, current_app, request, flash, redirect, url_for from flask_login import login_required, current_user, login_manager from .models import User, Conversation from . import db import openai main = Blueprint('main', __name__) @main.route('/') def index(): return render_template('index.html', user=current_user) @main.route('/profile') @login_required def profile(): if current_user.role == "admin": return render_template('profile.html', user=current_user, accounts=User.query.all()) return render_template('profile.html', user=current_user) @main.route('/manage') @login_required def manage(): if current_user.role == "admin": accountid = request.args.get('id') if accountid: accounts = User.query.filter_by(id=accountid) else: accounts = User.query if accounts: return render_template('manage.html', user=current_user, accounts=accounts) else: flash("无此用户id!") return redirect(request.referrer if request.referrer else url_for('main.index')) flash("您无权管理其他账户") return redirect(url_for('main.index')) @main.route('/chat') @login_required def chat(): if current_user.isActivated: return render_template('chat.html', user=current_user) else: flash("您的账户暂未被激活") return redirect(url_for('main.index')) return redirect(url_for('main.index')) @main.route('/chat', methods=['POST']) @login_required def chat_post(): openai.api_key = current_app.config['OPENAI_API_KEY'] openai.proxy = current_app.config['NETWORK_PROXY'] msg = request.form.get("msg") new_conversation = Conversation(userid=current_user.id, useremail=current_user.email, username=current_user.name, request=msg, response="") db.session.add(new_conversation) db.session.commit() if current_user.is_authenticated and current_user.isActivated: openai_resp = openai.ChatCompletion.create( model=current_app.config['OPENAI_MODEL_NAME'], messages=[ {"role": "system", "content": current_app.config['OPENAI_PROMPT']}, {"role": "user", "content": msg} ] ) msg_resp = openai_resp['choices'][0]['message']['content'] if msg_resp: response = {"message": msg_resp, "status": "success"} else: response = {"message": "请求错误", "status": "success"} else: response = {"message": "请先登录/激活", "status": "fail"} new_conversation = Conversation(userid=current_user.id, useremail=current_user.email, username=current_user.name, request=msg, response=msg_resp) db.session.add(new_conversation) db.session.commit() return response