mirror of
https://github.com/acon96/home-llm.git
synced 2026-01-08 05:14:02 -05:00
53 lines
3.0 KiB
Markdown
53 lines
3.0 KiB
Markdown
# Using AI Tasks
|
|
The AI Tasks feature allows you to define structured tasks that your local LLM can perform. These tasks can be integrated into Home Assistant automations and scripts, enabling you to generate dynamic content based on specific prompts and instructions.
|
|
|
|
## Setting up an AI Task Handler
|
|
Setting up a task handler is similar to setting up a conversation agent. You can choose to run the model directly within Home Assistant using `llama-cpp-python`, or you can use an external backend like Ollama. See the [Setup Guide](./docs/Setup.md) for detailed instructions on configuring your AI Task handler.
|
|
|
|
The specific configuration options for AI Tasks are:
|
|
| Option Name | Description |
|
|
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|
|
|
| Structured Data Extraction Method | Choose how the AI Task should extract structured data from the model's output. Options include `structured_output` and `tool`. |
|
|
| Data Extraction Retry Count | The number of times to retry data extraction if the initial attempt fails. Useful when models can produce incorrect tool responses. |
|
|
|
|
If no structured data extraction method is specified, then the task entity will always return raw text.
|
|
|
|
## Using an AI Task in a Script or Automation
|
|
To use an AI Task in a Home Assistant script or automation, you can utilize the `ai_task.generate_data` action. This action allows you to specify the task name, instructions, and the structure of the expected output. Below is an example of a script that generates a joke about a smart device in your home.
|
|
|
|
**Device Joke Script:**
|
|
```yaml
|
|
sequence:
|
|
- action: ai_task.generate_data
|
|
data:
|
|
task_name: Device Joke Generation
|
|
instructions: |
|
|
Write a funny joke about one of the smart devices in my home.
|
|
Here are all of the smart devices I have:
|
|
{% for device in states | rejectattr('domain', 'in', ['update', 'event']) -%}
|
|
- {{ device.name }} ({{device.domain}})
|
|
{% endfor %}
|
|
# You MUST set this to your own LLM entity ID if you do not set a default one in HA Settings
|
|
# entity_id: ai_task.unsloth_qwen3_0_6b_gguf_unsloth_qwen3_0_6b_gguf
|
|
structure:
|
|
joke_setup:
|
|
description: The beginning of a joke about a smart device in the home
|
|
required: true
|
|
selector:
|
|
text: null
|
|
joke_punchline:
|
|
description: The punchline of the same joke about the smart device
|
|
required: true
|
|
selector:
|
|
text: null
|
|
response_variable: joke_output
|
|
- action: notify.persistent_notification
|
|
data:
|
|
message: |-
|
|
{{ joke_output.data.joke_setup }}
|
|
...
|
|
{{ joke_output.data.joke_punchline }}
|
|
alias: Device Joke
|
|
description: "Generates a funny joke about one of the smart devices in the home."
|
|
```
|