x-bot 主函数构建

根据nickname前缀判断机器人

如果判断是,x-bot相关逻辑等待被触发

x-bot入参:

conversation_id bot_uid body(从最后一条机器人消息(不含)开始到最新的消息,数组形式) 当前时间(毫秒时间戳)

x-bot:

调取记忆表

把记忆表、新消息、prompt放到上下文 请求大模型

模型返回内容数组后 先查询最新消息更新时间

如果查询到的时间比之前入参的时间多了大于5秒,就把还没发送的消息存进x-profile-bot-gen数据表的pending_messages(字符串数组),然后停止云函数

如果小于或等于5秒,就发送第一条消息

然后隔1秒(随机上浮动0.5秒,下浮动0.3秒)发送下一条消息

直到距离发送第一条消息过了4.5秒(随机上下浮动1秒),如果此时消息还没发完的话,就重复一次查询最新消息的动作,来判断接下来是否发送

循环往复,直到发送完消息为止

大模型返回的格式:

{

    “think”: “xxxxx”,

    “reply”: [“第一条消息”,”第二条消息”,”第三条消息”],           

    “if_difficult_to_answer”: true/false,

    “if_difficult_reason”: “xxxxx“

}

如果if_difficult_to_answer是false,就只有reply字段是有用的,一条条信息发送出去就好了。

如果if_difficult_to_answer是true,就先查询一下最新消息更新时间,如果查询到的时间比之前入参的时间小于或等于5秒,就调用第二个prompt,再请求一次大模型。我需要在prompt中加入之前那次返回的内容,但是在哪里添加这个我还没想好,先预留好,方便我直接在prompt里面改,以变量的形式插入这个内容。如果大于5秒,就把还没发送的消息存进x-profile-bot-gen数据表的pending_messages字段(这是一个数组),然后停止云函数

如果消息顺利发送完,就把新的消息(也就是调用x-bot入参时的消息和这次发送给用户的消息合起来)放入记忆表x-memory-msg和向量数据库中)

← 碎念