Nevar pievienot vairāk kā 25 tēmas Tēmai ir jāsākas ar burtu vai ciparu, tā var saturēt domu zīmes ('-') un var būt līdz 35 simboliem gara.

pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 11 mēnešiem
pirms 11 mēnešiem
pirms 11 mēnešiem
pirms 1 gada
pirms 11 mēnešiem
pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 1 gada
pirms 1 gada
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. from bot.bot_factory import create_bot
  2. from bridge.context import Context
  3. from bridge.reply import Reply
  4. from common import const
  5. from common.log import logger
  6. from common.singleton import singleton
  7. from config import conf
  8. from translate.factory import create_translator
  9. from voice.factory import create_voice
  10. @singleton
  11. class Bridge(object):
  12. def __init__(self):
  13. self.btype = {
  14. "chat": const.CHATGPT,
  15. "voice_to_text": conf().get("voice_to_text", "openai"),
  16. "text_to_voice": conf().get("text_to_voice", "google"),
  17. "translate": conf().get("translate", "baidu"),
  18. }
  19. model_type = conf().get("model") or const.GPT35
  20. if model_type in ["text-davinci-003"]:
  21. self.btype["chat"] = const.OPEN_AI
  22. if conf().get("use_azure_chatgpt", False):
  23. self.btype["chat"] = const.CHATGPTONAZURE
  24. if model_type in ["wenxin", "wenxin-4"]:
  25. self.btype["chat"] = const.BAIDU
  26. if model_type in ["xunfei"]:
  27. self.btype["chat"] = const.XUNFEI
  28. if model_type in [const.QWEN]:
  29. self.btype["chat"] = const.QWEN
  30. if model_type in [const.GEMINI]:
  31. self.btype["chat"] = const.GEMINI
  32. if model_type in [const.ZHIPU_AI]:
  33. self.btype["chat"] = const.ZHIPU_AI
  34. if conf().get("use_linkai") and conf().get("linkai_api_key"):
  35. self.btype["chat"] = const.LINKAI
  36. if not conf().get("voice_to_text") or conf().get("voice_to_text") in ["openai"]:
  37. self.btype["voice_to_text"] = const.LINKAI
  38. if not conf().get("text_to_voice") or conf().get("text_to_voice") in ["openai", const.TTS_1, const.TTS_1_HD]:
  39. self.btype["text_to_voice"] = const.LINKAI
  40. if model_type in ["claude"]:
  41. self.btype["chat"] = const.CLAUDEAI
  42. self.bots = {}
  43. self.chat_bots = {}
  44. def get_bot(self, typename):
  45. if self.bots.get(typename) is None:
  46. logger.info("create bot {} for {}".format(self.btype[typename], typename))
  47. if typename == "text_to_voice":
  48. self.bots[typename] = create_voice(self.btype[typename])
  49. elif typename == "voice_to_text":
  50. self.bots[typename] = create_voice(self.btype[typename])
  51. elif typename == "chat":
  52. self.bots[typename] = create_bot(self.btype[typename])
  53. elif typename == "translate":
  54. self.bots[typename] = create_translator(self.btype[typename])
  55. return self.bots[typename]
  56. def get_bot_type(self, typename):
  57. return self.btype[typename]
  58. def fetch_reply_content(self, query, context: Context) -> Reply:
  59. return self.get_bot("chat").reply(query, context)
  60. def fetch_voice_to_text(self, voiceFile) -> Reply:
  61. return self.get_bot("voice_to_text").voiceToText(voiceFile)
  62. def fetch_text_to_voice(self, text) -> Reply:
  63. return self.get_bot("text_to_voice").textToVoice(text)
  64. def fetch_translate(self, text, from_lang="", to_lang="en") -> Reply:
  65. return self.get_bot("translate").translate(text, from_lang, to_lang)
  66. def find_chat_bot(self, bot_type: str):
  67. if self.chat_bots.get(bot_type) is None:
  68. self.chat_bots[bot_type] = create_bot(bot_type)
  69. return self.chat_bots.get(bot_type)
  70. def reset_bot(self):
  71. """
  72. 重置bot路由
  73. """
  74. self.__init__()