# 这个文件包含你的自定义操作,可以用来运行自定义的Python代码。
# https://rasa.com/docs/rasa/custom-actions
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.events import SlotSet
from rasa_sdk.executor import CollectingDispatcher
from logging import getLogger
logger = getLogger(__name__) # 获取日志
class ActionGPTFallback(Action): # 继承Action类
return "action_gpt_fallback"
def run(self, dispatcher: CollectingDispatcher, # CollectingDispatcher表示收集分发器
tracker: Tracker, # Tracker跟踪器
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]: # Dict[Text, Any]表示文本和任何类型的字典,domain表示域
user_input = tracker.latest_message.get("text")
# 调用第三方接口处理 out_of_scope 的情况
# 这里只是一个示例,你需要根据实际情况替换成调用你的第三方接口的代码
response_from_third_party = self.call_third_party_api(user_input)
dispatcher.utter_message(response_from_third_party)
def call_third_party_api(self, user_input):
# 在这里编写调用第三方接口的代码,返回第三方接口的响应信息
url = "http://127.0.0.1:7861/chat/knowledge_base_chat"
"knowledge_base_name": "samples",
"model_name": "Qwen-1_8B-Chat",
"prompt_name": "default"
headers = {'Content-Type': 'application/json'}
response = requests.post(url, data=data, headers=headers)
response = response.json()
return response["answer"]