diff --git a/project/main.py b/project/main.py index 4993402..0fac325 100644 --- a/project/main.py +++ b/project/main.py @@ -2,6 +2,7 @@ from flask import Blueprint, render_template, current_app, request, flash, redir from flask_login import login_required, current_user, login_manager from .models import User, Conversation from . import db +from datetime import datetime, timedelta import openai main = Blueprint('main', __name__) @@ -75,13 +76,25 @@ def chat_post(): db.session.commit() if current_user.is_authenticated and current_user.isActivated: + messages = [ + {"role": "system", + "content": current_app.config['OPENAI_PROMPT']}, + ] + chats_desc = Conversation.query.filter_by( + userid=current_user.id, useremail=current_user.email).order_by(Conversation.datetime.desc()).limit(20).all() + for chat in reversed(chats_desc): + if chat.datetime <= datetime.utcnow() - timedelta(seconds=300): + continue + if chat.response: + messages.append( + {"role": "assistant", "content": chat.response}) + else: + messages.append( + {"role": "user", "content": chat.request}) + 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} - ] + messages=messages ) msg_resp = openai_resp['choices'][0]['message']['content'] if msg_resp: