44 lines
1.7 KiB
Plaintext
44 lines
1.7 KiB
Plaintext
from PDAPI import *
|
|
|
|
|
|
__metadata__ = {
|
|
"methods": ["POST"],
|
|
"blueprint": "Invite",
|
|
"permission": 1.0,
|
|
"attributes": [],
|
|
"limit": "1/second",
|
|
"args": [
|
|
{"Name": "InviteID", "Type": "int"}
|
|
]
|
|
}
|
|
def HandleRequest():
|
|
InviteID = flask.request.args.get("InviteID")
|
|
Conversation = InviteConversation.query.filter_by(InviteID=InviteID).first()
|
|
if Conversation and IsConversationValid(InviteID):
|
|
AiMessages = [Msg for Msg in Conversation.Messages if Msg.get("Role") == "Assistant"]
|
|
if AiMessages:
|
|
return flask.jsonify({
|
|
"Success": True,
|
|
"Data": {"InviteID": InviteID, "AiMessage": AiMessages[-1]}
|
|
})
|
|
Messages = [{"Role": "System", "Content": openr(JoinPath(TempLate, "Invite/prompt")), "CreateTime": time.time()}]
|
|
NewConversation = InviteConversation(
|
|
InviteID=InviteID,
|
|
Messages=Messages,
|
|
CreateTime=time.time()
|
|
)
|
|
db.session.add(NewConversation)
|
|
db.session.commit()
|
|
AiMessages = [{"role": Msg["Role"].lower(), "content": Msg["Content"]} for Msg in Messages]
|
|
Client = OpenAI(api_key="sk-e6e4206cded047818f7e329538c69613", base_url="https://api.deepseek.com")
|
|
Response = Client.chat.completions.create(model="deepseek-chat", messages=AiMessages, stream=False)
|
|
AiContent = Response.choices[0].message.content
|
|
AiMessage = {"Role": "Assistant", "Content": AiContent, "CreateTime": time.time()}
|
|
Messages.append(AiMessage)
|
|
NewConversation.Messages = Messages
|
|
db.session.add(NewConversation)
|
|
db.session.commit()
|
|
return flask.jsonify({
|
|
"Success": True,
|
|
"Data": {"InviteID": InviteID, "MessageCount": len(Messages), "AiMessage": AiMessage}
|
|
}) |