| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- # -*- coding: utf-8 -*-
- """
- Intent-Definitionen fuer das Weather-Plugin.
- Definiert 3 Intents: current_weather, weather_forecast, weather_week.
- """
- from typing import Callable
- from trixy_core.nlp.intent_registry import IntentDefinition, IntentSlot
- def build_intent_definitions(
- plugin_name: str,
- handle_current_weather: Callable,
- handle_weather_forecast: Callable,
- handle_weather_week: Callable,
- ) -> list[IntentDefinition]:
- """
- Erstellt alle Intent-Definitionen fuer das Weather-Plugin.
- Args:
- plugin_name: Plugin-Name fuer die Registrierung
- handle_current_weather: Handler fuer aktuelles Wetter
- handle_weather_forecast: Handler fuer Tagesvorhersage
- handle_weather_week: Handler fuer Wochenvorhersage
- Returns:
- Liste von IntentDefinition
- """
- return [
- # 1. Aktuelles Wetter
- IntentDefinition(
- name="current_weather",
- handler=handle_current_weather,
- plugin_name=plugin_name,
- slots={
- "city": IntentSlot(
- name="city",
- slot_type=str,
- required=False,
- description="Stadtname (optional, Standard: Default-Standort)",
- examples=["Berlin", "Muenchen", "Hamburg", "Sinsheim"],
- ),
- },
- examples=[
- "Wie ist das Wetter?",
- "Wie ist das Wetter in Berlin?",
- "Wie warm ist es?",
- "Wie kalt ist es draussen?",
- "Wie ist das Wetter gerade?",
- "Wetter in Hamburg",
- "Temperatur draussen",
- ],
- description="Aktuelles Wetter abfragen",
- patterns=[
- "(wie ist|wie wird) [denn] {das|} wetter [draussen|gerade|heute]",
- "wetter [in] {city}",
- "(wie warm|wie kalt) ist [es] [draussen|gerade]",
- "temperatur [draussen]",
- ],
- ),
- # 2. Tagesvorhersage
- IntentDefinition(
- name="weather_forecast",
- handler=handle_weather_forecast,
- plugin_name=plugin_name,
- slots={
- "city": IntentSlot(
- name="city",
- slot_type=str,
- required=False,
- description="Stadtname (optional)",
- examples=["Berlin", "Muenchen", "Hamburg"],
- ),
- "date": IntentSlot(
- name="date",
- slot_type=str,
- required=False,
- description="Datum (Standard: morgen)",
- examples=["morgen", "Freitag", "uebermorgen"],
- ),
- },
- examples=[
- "Wie wird das Wetter morgen?",
- "Wie wird das Wetter am Freitag in Muenchen?",
- "Brauche ich morgen einen Regenschirm?",
- "Wetter morgen",
- "Wie wird es morgen?",
- "Vorhersage fuer Freitag",
- ],
- description="Wettervorhersage fuer einen bestimmten Tag",
- patterns=[
- "wie wird {das|} wetter {date}",
- "wie wird [das] wetter [am] {date} [in] {city}",
- "wetter {date}",
- "vorhersage [fuer] {date}",
- "brauche ich {date} [einen] regenschirm",
- ],
- ),
- # 3. Wochenvorhersage
- IntentDefinition(
- name="weather_week",
- handler=handle_weather_week,
- plugin_name=plugin_name,
- slots={
- "city": IntentSlot(
- name="city",
- slot_type=str,
- required=False,
- description="Stadtname (optional)",
- examples=["Berlin", "Muenchen", "Hamburg"],
- ),
- },
- examples=[
- "Wie wird das Wetter diese Woche?",
- "Wettervorhersage",
- "Wochenwetter",
- "Wie wird das Wetter die naechsten Tage?",
- "Wetter fuer die Woche",
- ],
- description="Wettervorhersage fuer die naechsten Tage",
- patterns=[
- "wie wird {das|} wetter [diese|die] (woche|naechsten tage)",
- "(wettervorhersage|wochenwetter)",
- "wetter fuer [die] woche",
- ],
- ),
- ]
|