Browse Source

feat: knowledge base miss prefix

develop
zhayujie 1 year ago
parent
commit
a2160d135e
3 changed files with 26 additions and 1 deletions
  1. +22
    -1
      bot/linkai/link_ai_bot.py
  2. +1
    -0
      plugins/godcmd/godcmd.py
  3. +3
    -0
      plugins/plugin.py

+ 22
- 1
bot/linkai/link_ai_bot.py View File

@@ -12,7 +12,7 @@ from bot.session_manager import SessionManager
from bridge.context import Context, ContextType
from bridge.reply import Reply, ReplyType
from common.log import logger
from config import conf
from config import conf, pconf


class LinkAIBot(Bot, OpenAIImage):
@@ -94,6 +94,9 @@ class LinkAIBot(Bot, OpenAIImage):
response = res.json()
reply_content = response["choices"][0]["message"]["content"]
total_tokens = response["usage"]["total_tokens"]
suffix = self._fecth_knowledge_search_suffix(response)
if suffix:
reply_content += suffix
logger.info(f"[LINKAI] reply={reply_content}, total_tokens={total_tokens}")
self.sessions.session_reply(reply_content, session_id, total_tokens)
return Reply(ReplyType.TEXT, reply_content)
@@ -183,3 +186,21 @@ class LinkAIBot(Bot, OpenAIImage):
time.sleep(2)
logger.warn(f"[LINKAI] do retry, times={retry_count}")
return self.reply_text(session, app_code, retry_count + 1)


def _fecth_knowledge_search_suffix(self, response) -> str:
try:
if response.get("knowledge_base"):
search_hit = response.get("knowledge_base").get("search_hit")
first_similarity = response.get("knowledge_base").get("first_similarity")
logger.info(f"[LINKAI] knowledge base, search_hit={search_hit}, first_similarity={first_similarity}")
plugin_config = pconf("linkai")
if plugin_config.get("knowledge_base"):
search_miss_similarity = plugin_config.get("knowledge_base").get("search_miss_similarity")
search_miss_text = plugin_config.get("knowledge_base").get("search_miss_text")
if not search_hit:
return search_miss_text
if search_miss_similarity and float(search_miss_similarity) > first_similarity:
return search_miss_text
except Exception as e:
logger.exception(e)

+ 1
- 0
plugins/godcmd/godcmd.py View File

@@ -203,6 +203,7 @@ class Godcmd(Plugin):

self.password = gconf["password"]
self.admin_users = gconf["admin_users"] # 预存的管理员账号,这些账号不需要认证。itchat的用户名每次都会变,不可用
global_config["admin_users"] = self.admin_users
self.isrunning = True # 机器人是否运行中

self.handlers[Event.ON_HANDLE_CONTEXT] = self.on_handle_context


+ 3
- 0
plugins/plugin.py View File

@@ -21,6 +21,9 @@ class Plugin:
if os.path.exists(plugin_config_path):
with open(plugin_config_path, "r", encoding="utf-8") as f:
plugin_conf = json.load(f)

# 写入全局配置内存
plugin_config[self.name] = plugin_conf
logger.debug(f"loading plugin config, plugin_name={self.name}, conf={plugin_conf}")
return plugin_conf



Loading…
Cancel
Save