场景
例如,跟 Rasa 机器人对话中,询问今天星期几,然后使用 Python 返回中文答复。
nlu.yml
增加自然语言解析:
- intent: weekday
examples: |
- 今天是星期几
- 今天几号
- 今天的日期
domain.yml
增加 actions:
intents:
- weekday
actions:
- action_weekday
rules.yml
配置映射关系
- rule: 星期几
steps:
- intent: weekday
- action: action_weekday
actions.py
actions/actions.py
先暂时写死返回数据,测试 action 的 python 代码是否被执行。
注:name 函数返回值,即对应之前在 rules.yml 和 domain.yml 中配置的 action 名字,要匹配上。
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
class ActionWeekday(Action):
def name(self) -> Text:
return "action_weekday"
def run(
self,
dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any],
) -> List[Dict[Text, Any]]:
dispatcher.utter_message(text="星期八")
return []
训练数据
仅仅将 action 添加到 domain.yml,rasa 可能识别不了更改,所以需要加上 force 参数。
rasa train --force
endpoints.yml
取消注释:
action_endpoint:
url: "http://localhost:5055/webhook"
启动 Rasa 动作服务器
> rasa run actions
2023-05-23 15:59:08 INFO rasa_sdk.endpoint - Starting action endpoint server...
2023-05-23 15:59:08 INFO rasa_sdk.executor - Registered function for 'action_weekday'.
2023-05-23 15:59:08 INFO rasa_sdk.endpoint - Action endpoint is up and running on http://0.0.0.0:5055
生产环境中在 docker 中如何运行?还是 run 命令已经默认启动了?
启动 Rasa Shell
测试一下效果:
> rasa shell
Your input -> 今天星期几
星期八
修改 python 逻辑返回真实数据
直接问 ChatGPT 吧 。。。
python 返回当前日期,及星期几,用中文
可以使用 Python 内置的 datetime 和 calendar 模块来获取当前日期和星期几,并将其转换为中文。以下是示例代码:
import datetime
import calendar
# 获取当前日期和时间
now = datetime.datetime.now()
# 获取当前日期(例如:2023年5月23日)
current_date = now.strftime('%Y年%m月%d日')
# 获取当前星期几(例如:星期一)
weekday = calendar.day_name[now.weekday()]
# 将英文星期几转换为中文
weekdays = ['星期一', '星期二', '星期三', '星期四', '星期五', '星期六', '星期日']
weekday_cn = weekdays[now.weekday()]
# 输出结果
print(current_date + ' ' + weekday_cn)
执行上述代码,会输出当前日期及星期几的中文表示,例如:
2023年05月23日 星期二
把逻辑复制到 actions.py 中就可以了,重启 rasa run actions 再次在 shell 中测试:
注:无需重启 rasa shell
Your input -> 今天几号
2023年05月23日 星期二
Your input -> 今天星期几
2023年05月23日 星期二
Your input -> 明天星期几
2023年05月23日 星期二
效果可以,可惜不支持明天,除了手动增加意图识别,不知道有没有更好的方法。
查看合集
微信关注我哦 👍
我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊, 查看更多联系方式