Mit Home Assistant 2025.6 wurde ai_task als eigene Domain eingeführt – ein lange überfälliger Baustein, der das Aufrufen von Sprachmodellen aus Automationen heraus in eine strukturierte, reproduzierbare Form bringt. Wer bisher OpenAI nur über die conversation-Domain angesprochen hat, kennt das Problem: Antworten kamen als Freitext, mussten mit Templates geparst werden und brachen bei jedem Modell-Update. Mit ai_task lassen sich Aufgaben jetzt als JSON-Schema definieren, das Modell liefert strukturierte Daten zurück, und Automationen können diese ohne Parsing direkt verwenden.
Was ai_task von conversation unterscheidet
Die conversation-Entity (im System als conversation.openai_conversation) ist für Dialoge optimiert: Du sagst etwas, das Modell antwortet im natürlichen Sprachstil. Das ist perfekt für Sprachassistenten und Chat-UIs, aber ungeeignet, wenn die Antwort in einer Automation weiterverarbeitet werden soll.
ai_task (Entität ai_task.openai_ai_task_2) verfolgt einen anderen Ansatz: Du übergibst eine Aufgabe mit klarem Eingabekontext und optional einem Schema, das Modell liefert eine maschinenlesbare Antwort. Die zugrundeliegende Logik nutzt Function Calling bzw. Structured Outputs der LLM-Provider. Verfügbar sind aktuell OpenAI, Anthropic, Google Gemini und lokale Modelle via Ollama.
Setup-Beispiel: tägliche Kalender-Synthese
Ein praktisches Einsatzfeld: Morgens um 06:30 Uhr alle Kalender-Einträge des Tages durch das Modell schicken und drei Prioritäten zurückbekommen. Die Eingabe ist ein Liste von Terminen, die Ausgabe ein strukturiertes Objekt mit den drei wichtigsten Punkten und einer Empfehlung für die Tageskleidung anhand der Wettervorhersage.
automation:
- alias: Tages-Briefing per AI Task
trigger:
- platform: time
at: "06:30:00"
action:
- service: ai_task.generate_data
target:
entity_id: ai_task.openai_ai_task_2
data:
task_name: tages_briefing
instructions: >
Erstelle aus den Kalender-Einträgen ein priorisiertes
Tages-Briefing für einen Schweizer Berufstätigen.
input:
calendar: "{{ state_attr('calendar.privat', 'events') }}"
weather: "{{ states('sensor.weather_station_outdoor_module_temperatur') }}"
structure:
top_termin:
description: Wichtigster Termin des Tages
required: true
selector:
text:
risiko:
description: Konflikt oder Stress-Risiko
required: false
selector:
text:
kleidung:
description: Kleidungsempfehlung anhand Wetter
required: true
selector:
text:
response_variable: briefing
- service: tts.cloud_say
data:
entity_id: media_player.homepod
message: >
Guten Morgen. Top-Termin heute: {{ briefing.data.top_termin }}.
Empfehlung: {{ briefing.data.kleidung }}.
Wichtig ist die structure-Definition: Sie zwingt das Modell, die Antwort in genau diese Felder zu pressen. Wer einen Wert nicht braucht, lässt ihn weg. Wer ihn braucht, kann sich auf das Format verlassen.
Bild-Eingabe mit Roborock-Karten
ai_task unterstützt auch Bild-Eingaben. Eine elegante Anwendung: Die Roborock-Karte nach jeder Reinigung an das Modell schicken und prüfen lassen, ob ein Bereich nicht abgedeckt wurde. Mehr zu Saugroboter-Karten und Zonen-Reinigung steht im Beitrag Saugroboter-Karten und Zonen-Reinigung mit Roborock S6 MaxV.
action:
- service: ai_task.generate_data
target:
entity_id: ai_task.openai_ai_task_2
data:
task_name: roborock_karte_pruefen
instructions: >
Prüfe diese Reinigungskarte. Gibt es ungereinigte Bereiche
oder verdächtige Hindernisse? Antworte knapp.
attachments:
- media_content_id: "{{ states('image.roborock_s6_maxv_erdgeschoss') }}"
media_content_type: image/png
structure:
status:
description: ok oder warnung
selector:
select:
options: [ok, warnung]
bemerkung:
description: Erläuterung wenn warnung
selector:
text:
response_variable: roborock_check
Kostenkontrolle und Privatsphäre
Jeder ai_task-Aufruf kostet API-Tokens. Wer OpenAI nutzt, sollte das günstigere gpt-4o-mini-Modell für Standard-Aufgaben in der Integration konfigurieren – das senkt die Kosten pro Anfrage auf wenige Rappen monatlich. Wer aus Datenschutzgründen keine Daten an OpenAI senden möchte, kann Ollama lokal auf einem Mini-PC betreiben und mit Llama 3.2 oder Qwen 2.5 vergleichbare Resultate für einfache Strukturierungsaufgaben erzielen. Die Anbindung erfolgt über die Ollama-Integration, der Aufruf ist identisch.
Fazit – der nächste Schritt
ai_task macht aus dem LLM in Home Assistant zum ersten Mal ein zuverlässiges Werkzeug für Automationen. Wer bisher mit Templates und brüchigen Parsing-Pipelines kämpft, sollte den Wechsel ernsthaft prüfen. Erster konkreter Schritt: Integration einrichten, eine einfache Aufgabe wie das morgendliche Briefing implementieren und das Resultat eine Woche beobachten. Wer schon die Voice-Pipeline mit Dual-Wake-Word eingerichtet hat, findet im Beitrag Dual Wake-Word und Dual Assistant mit HA Voice die ergänzende Frontend-Schicht zu den neuen Backend-Aufgaben.