mirror of
https://github.com/zhayujie/chatgpt-on-wechat.git
synced 2026-07-20 21:57:14 +08:00
feat: multi agent plugin
This commit is contained in:
@@ -94,9 +94,13 @@ class LinkAIBot(Bot, OpenAIImage):
|
|||||||
response = res.json()
|
response = res.json()
|
||||||
reply_content = response["choices"][0]["message"]["content"]
|
reply_content = response["choices"][0]["message"]["content"]
|
||||||
total_tokens = response["usage"]["total_tokens"]
|
total_tokens = response["usage"]["total_tokens"]
|
||||||
suffix = self._fecth_knowledge_search_suffix(response)
|
agent_suffix = self._fetch_agent_suffix(response)
|
||||||
if suffix:
|
if agent_suffix:
|
||||||
reply_content += suffix
|
reply_content += agent_suffix
|
||||||
|
if not agent_suffix:
|
||||||
|
knowledge_suffix = self._fetch_knowledge_search_suffix(response)
|
||||||
|
if knowledge_suffix:
|
||||||
|
reply_content += knowledge_suffix
|
||||||
logger.info(f"[LINKAI] reply={reply_content}, total_tokens={total_tokens}")
|
logger.info(f"[LINKAI] reply={reply_content}, total_tokens={total_tokens}")
|
||||||
self.sessions.session_reply(reply_content, session_id, total_tokens)
|
self.sessions.session_reply(reply_content, session_id, total_tokens)
|
||||||
return Reply(ReplyType.TEXT, reply_content)
|
return Reply(ReplyType.TEXT, reply_content)
|
||||||
@@ -188,14 +192,14 @@ class LinkAIBot(Bot, OpenAIImage):
|
|||||||
return self.reply_text(session, app_code, retry_count + 1)
|
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:
|
try:
|
||||||
if response.get("knowledge_base"):
|
if response.get("knowledge_base"):
|
||||||
search_hit = response.get("knowledge_base").get("search_hit")
|
search_hit = response.get("knowledge_base").get("search_hit")
|
||||||
first_similarity = response.get("knowledge_base").get("first_similarity")
|
first_similarity = response.get("knowledge_base").get("first_similarity")
|
||||||
logger.info(f"[LINKAI] knowledge base, search_hit={search_hit}, first_similarity={first_similarity}")
|
logger.info(f"[LINKAI] knowledge base, search_hit={search_hit}, first_similarity={first_similarity}")
|
||||||
plugin_config = pconf("linkai")
|
plugin_config = pconf("linkai")
|
||||||
if plugin_config.get("knowledge_base") and plugin_config.get("knowledge_base").get("search_miss_text_enabled"):
|
if plugin_config and plugin_config.get("knowledge_base") and plugin_config.get("knowledge_base").get("search_miss_text_enabled"):
|
||||||
search_miss_similarity = plugin_config.get("knowledge_base").get("search_miss_similarity")
|
search_miss_similarity = plugin_config.get("knowledge_base").get("search_miss_similarity")
|
||||||
search_miss_text = plugin_config.get("knowledge_base").get("search_miss_suffix")
|
search_miss_text = plugin_config.get("knowledge_base").get("search_miss_suffix")
|
||||||
if not search_hit:
|
if not search_hit:
|
||||||
@@ -204,3 +208,20 @@ class LinkAIBot(Bot, OpenAIImage):
|
|||||||
return search_miss_text
|
return search_miss_text
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.exception(e)
|
logger.exception(e)
|
||||||
|
|
||||||
|
def _fetch_agent_suffix(self, response):
|
||||||
|
try:
|
||||||
|
if response.get("agent") and response.get("agent").get("chain"):
|
||||||
|
chain = response.get("agent").get("chain")
|
||||||
|
suffix = "\n\n---------\n🧠思考过程"
|
||||||
|
for turn in chain:
|
||||||
|
suffix += "\n\n"
|
||||||
|
if turn.get("thought"):
|
||||||
|
suffix += f"{turn.get('thought')}"
|
||||||
|
if turn.get('plugin_name'):
|
||||||
|
suffix += f"\n{turn.get('plugin_icon')} 使用 {turn.get('plugin_name')}"
|
||||||
|
if turn.get('plugin_input'):
|
||||||
|
suffix += f",输入 {turn.get('plugin_input')}"
|
||||||
|
return suffix
|
||||||
|
except Exception as e:
|
||||||
|
logger.exception(e)
|
||||||
|
|||||||
Reference in New Issue
Block a user