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 .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:
|
||||
|
Reference in New Issue
Block a user