support multi-round chat
This commit is contained in:
parent
f8ef238673
commit
e0ad3f0059
@ -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 flask_login import login_required, current_user, login_manager
|
||||||
from .models import User, Conversation
|
from .models import User, Conversation
|
||||||
from . import db
|
from . import db
|
||||||
|
from datetime import datetime, timedelta
|
||||||
import openai
|
import openai
|
||||||
|
|
||||||
main = Blueprint('main', __name__)
|
main = Blueprint('main', __name__)
|
||||||
@ -75,13 +76,25 @@ def chat_post():
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
|
|
||||||
if current_user.is_authenticated and current_user.isActivated:
|
if current_user.is_authenticated and current_user.isActivated:
|
||||||
openai_resp = openai.ChatCompletion.create(
|
messages = [
|
||||||
model=current_app.config['OPENAI_MODEL_NAME'],
|
|
||||||
messages=[
|
|
||||||
{"role": "system",
|
{"role": "system",
|
||||||
"content": current_app.config['OPENAI_PROMPT']},
|
"content": current_app.config['OPENAI_PROMPT']},
|
||||||
{"role": "user", "content": msg}
|
|
||||||
]
|
]
|
||||||
|
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=messages
|
||||||
)
|
)
|
||||||
msg_resp = openai_resp['choices'][0]['message']['content']
|
msg_resp = openai_resp['choices'][0]['message']['content']
|
||||||
if msg_resp:
|
if msg_resp:
|
||||||
|
Reference in New Issue
Block a user