# -*- 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", ], ), ]