from PDAPI import * __metadata__ = { "methods": ["POST"], "blueprint": "Invite", "permission": 1.0, "attributes": [], "limit": "1/second", "args": [ {"Name": "InviteID", "Type": "int"}, ], "form": [ {"Name": "Content", "Type": "str", "MaxLen": 2048} ] } def HandleRequest(): InviteID = flask.request.args.get("InviteID") Content = flask.request.form.get("Content") Conversation: InviteConversation = InviteConversation.query.filter_by(InviteID=InviteID).first() if Conversation and Conversation.FinalStatus is not None: return flask.jsonify({ "Success": False, "Message": "对话已结束(已给出面试结果/拒绝回答),无法继续聊天", "IsFinal": True }) if not Conversation: return flask.jsonify({"Success": False, "Message": "对话未初始化,请刷新页面"}) if not IsConversationValid(InviteID): return flask.jsonify({"Success": False, "Message": "对话不存在或已过期"}) if len(Conversation.Messages) >= 50: return flask.jsonify({"Success": False, "Message": "对话已达到最大消息数量(50句)"}) UserMessage = {"Role": "User", "Content": Content, "CreateTime": time.time()} Messages = Conversation.Messages.copy() Messages.append(UserMessage) 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 FinalStatus = None FinalResult = AiContent FinalReason = "" FinalMood = "" try: AiJson = json.loads(AiContent.strip()) if isinstance(AiJson, dict) and "status" in AiJson: FinalStatus = AiJson["status"] if "result" in AiJson: FinalResult = AiJson["result"] if FinalStatus == 1 and "because" in AiJson: FinalReason = AiJson["because"] if FinalStatus == 1 and "mood" in AiJson: FinalMood = AiJson["mood"] except json.JSONDecodeError: pass AiMessage = {"Role": "Assistant", "Content": FinalResult, "CreateTime": time.time()} Messages.append(AiMessage) Conversation.Messages = Messages if FinalStatus is not None: Conversation.FinalStatus = FinalStatus Conversation.FinalResult = FinalResult Conversation.FinalReason = FinalReason Conversation.FinalMood = FinalMood if len(Messages) > 50: Conversation.Messages = Messages[-50:] print(Conversation.Messages) db.session.add(Conversation) db.session.commit() return flask.jsonify({ "Success": True, "Data": { "InviteID": InviteID, "MessageCount": len(Messages), "UserMessage": UserMessage, "AiMessage": AiMessage, "IsFinal": FinalStatus is not None, "FinalStatus": FinalStatus, "FinalReason": FinalReason, "FinalMood": FinalMood } })