diff --git a/bot/linkai/link_ai_bot.py b/bot/linkai/link_ai_bot.py index 089e387..00ad0e9 100644 --- a/bot/linkai/link_ai_bot.py +++ b/bot/linkai/link_ai_bot.py @@ -96,9 +96,14 @@ class LinkAIBot(Bot, OpenAIImage): total_tokens = response["usage"]["total_tokens"] logger.info(f"[LINKAI] reply={reply_content}, total_tokens={total_tokens}") self.sessions.session_reply(reply_content, session_id, total_tokens) - suffix = self._fecth_knowledge_search_suffix(response) - if suffix: - reply_content += suffix + + agent_suffix = self._fetch_agent_suffix(response) + if agent_suffix: + reply_content += agent_suffix + if not agent_suffix: + knowledge_suffix = self._fetch_knowledge_search_suffix(response) + if knowledge_suffix: + reply_content += knowledge_suffix return Reply(ReplyType.TEXT, reply_content) else: @@ -188,7 +193,7 @@ class LinkAIBot(Bot, OpenAIImage): return self.reply_text(session, app_code, retry_count + 1) - def _fecth_knowledge_search_suffix(self, response) -> str: + def _fetch_knowledge_search_suffix(self, response) -> str: try: if response.get("knowledge_base"): search_hit = response.get("knowledge_base").get("search_hit") @@ -204,3 +209,30 @@ class LinkAIBot(Bot, OpenAIImage): return search_miss_text except Exception as e: logger.exception(e) + + def _fetch_agent_suffix(self, response): + try: + plugin_list = [] + logger.debug(f"[LinkAgent] res={response}") + if response.get("agent") and response.get("agent").get("chain") and response.get("agent").get("need_show_plugin"): + chain = response.get("agent").get("chain") + suffix = "\n\n- - - - - - - - - - - -" + i = 0 + for turn in chain: + plugin_name = turn.get('plugin_name') + suffix += "\n" + need_show_thought = response.get("agent").get("need_show_thought") + if turn.get("thought") and plugin_name and need_show_thought: + suffix += f"{turn.get('thought')}\n" + if plugin_name: + plugin_list.append(turn.get('plugin_name')) + suffix += f"{turn.get('plugin_icon')} {turn.get('plugin_name')}" + if turn.get('plugin_input'): + suffix += f":{turn.get('plugin_input')}" + if i < len(chain) - 1: + suffix += "\n" + i += 1 + logger.info(f"[LinkAgent] use plugins: {plugin_list}") + return suffix + except Exception as e: + logger.exception(e)