|
|
@@ -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) |