belongsTo(WebSocketDialog::class, 'dialog_id'); } /** * @param $sessionId * @param WebSocketDialogMsg $dialogMsg * @return void */ public static function updateTitle($sessionId, $dialogMsg) { if (!$sessionId) { return; } if ($dialogMsg->type != 'text') { return; } $cacheKey = 'dialog_session_title_' . $sessionId; if (Cache::has($cacheKey)) { return; } $originalTitle = $dialogMsg->key ?: $dialogMsg->msg['text'] ?: 'Untitled'; $title = Base::cutStr($originalTitle, 100); if ($title == '...') { return; } $session = self::whereId($sessionId)->first(); if (!$session) { return; } $session->title = $title; $session->save(); Cache::forever($cacheKey, true); // 通过AI接口更新对话标题 go(function () use ($session, $title, $originalTitle) { Coroutine::sleep(0.1); $res = Extranet::openAIGenerateTitle($originalTitle); if (Base::isError($res)) { return; } $newTitle = $res['data']; if ($newTitle && $newTitle != $title) { $session->title = Base::cutStr($newTitle, 100); $session->save(); } }); } }