handle_exit_intent.py 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. from plugins_func.register import register_function, ToolType, ActionResponse, Action
  2. from config.logger import setup_logging
  3. from typing import TYPE_CHECKING
  4. if TYPE_CHECKING:
  5. from core.connection import ConnectionHandler
  6. TAG = __name__
  7. logger = setup_logging()
  8. handle_exit_intent_function_desc = {
  9. "type": "function",
  10. "function": {
  11. "name": "handle_exit_intent",
  12. "description": "当用户想结束对话或需要退出系统时调用",
  13. "parameters": {
  14. "type": "object",
  15. "properties": {
  16. "say_goodbye": {
  17. "type": "string",
  18. "description": "和用户友好结束对话的告别语",
  19. }
  20. },
  21. "required": ["say_goodbye"],
  22. },
  23. },
  24. }
  25. @register_function(
  26. "handle_exit_intent", handle_exit_intent_function_desc, ToolType.SYSTEM_CTL
  27. )
  28. def handle_exit_intent(conn: "ConnectionHandler", say_goodbye: str | None = None):
  29. # 处理退出意图
  30. try:
  31. if say_goodbye is None:
  32. say_goodbye = "再见,祝您生活愉快!"
  33. if not conn.close_after_chat:
  34. conn.close_after_chat = True
  35. logger.bind(tag=TAG).info(f"退出意图已处理:{say_goodbye}")
  36. return ActionResponse(
  37. action=Action.RESPONSE, result="退出意图已处理", response=say_goodbye
  38. )
  39. except Exception as e:
  40. logger.bind(tag=TAG).error(f"处理退出意图错误: {e}")
  41. return ActionResponse(
  42. action=Action.NONE, result="退出意图处理失败", response=""
  43. )