从用户输入的消息中提取城市信息然后查询天气信息
1.培训数据
在 data/nlu.yml
文件中,添加意图和实体的例子:
nlu: - intent: ask_weather examples: | - 今天 [北京](city) 的天气怎么样? - [上海](city) 明天会下雨吗? - 告诉我[广州](city)的天气 - [深圳](city) 后天的天气预报是什么?
2.定义 stories
在 data/stories.yml
文件中,定义一个简单的 story:
stories: - story: user asks about weather steps: - intent: ask_weather entities: - city: "北京" - action: action_fetch_weather
3.定义 actions:
from rasa_sdk import Action, Tracker from rasa_sdk.executor import CollectingDispatcher from rasa_sdk.types import DomainDict # 模拟一个查询天气的函数 def fetch_weather(city: str) -> str: # 这里可以调用真实的天气 API,但为简单起见,我们只返回一个模拟值 return f"{city}的天气是晴朗的。" class ActionFetchWeather(Action): def name(self) -> str: return "action_fetch_weather" async def run(self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: DomainDict) -> list: city = tracker.get_slot("city") if city: weather_info = fetch_weather(city) dispatcher.utter_message(text=weather_info) else: dispatcher.utter_message(text="对不起,我不知道您询问哪个城市的天气。") return []
4.定义 slots 和 responses:
在 domain.yml
文件中,定义 city
slot 和一个简单的回复模板:
slots: city: type: text intents:
- ask_weather
responses: utter_ask_city: - text: "您想询问哪个城市的天气?" actions: - action_fetch_weather
5.启动 actions server:
使用以下命令启动 action server:
rasa run actions
6.培训模型并运行:
使用以下命令培训模型:
rasa train
启动 Rasa 服务:
rasa shell
标签:city,教程,rasa,python,天气,weather,action,fetch From: https://www.cnblogs.com/fanhua999/p/17639034.html