diff --git a/README.md b/README.md index ca425f2..16814fb 100644 --- a/README.md +++ b/README.md @@ -106,12 +106,13 @@ Transform your smart home experience with powerful AI assistance powered by mult ## 📋 Prerequisites -- Home Assistant 2024.11 or later +- Home Assistant 2024.2.2 or later - Active API key from: - OpenAI ([Get key](https://platform.openai.com/account/api-keys)) - Anthropic ([Get key](https://console.anthropic.com/)) - - DeepSeek 🆕 ([Get key](https://platform.deepseek.com/api_keys)) + - DeepSeek ([Get key](https://platform.deepseek.com/api_keys)) - OpenRouter ([Get key](https://openrouter.ai/keys)) + - Google Gemini 🆕 ([Get key](https://ai.google.dev/gemini-api/docs/api-key)) thanks to ([@Azzedde](https://github.com/Azzedde)) - Any OpenAI-compatible API provider - Python 3.9 or newer - Stable internet connection @@ -159,6 +160,9 @@ To be compatible, a provider should support: ## ⚡ Installation ### HACS Installation (Recommended) +>[!TIP] +>HA Text AI is available in the default HACS repository. You can install it directly through HACS or click the button below to open it there. + 1. Open HACS in Home Assistant 2. Click on "Integrations" @@ -169,8 +173,6 @@ To be compatible, a provider should support: 7. Click "Download" 8. Restart Home Assistant -Note: Also Integration has been submitted to HACS store and is currently pending review in [pull request #2896](https://github.com/hacs/default/pull/2896). - ### Manual Installation 1. Download the latest release 2. Extract and copy `custom_components/ha_text_ai` to your `custom_components` directory diff --git a/custom_components/ha_text_ai/config_flow.py b/custom_components/ha_text_ai/config_flow.py index 945a0e7..55b4310 100644 --- a/custom_components/ha_text_ai/config_flow.py +++ b/custom_components/ha_text_ai/config_flow.py @@ -94,7 +94,7 @@ class HATextAIConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): self._errors = {} if user_input is None: - # Выбор endpoint по провайдеру + # Selecting an endpoint by provider default_endpoint = { API_PROVIDER_OPENAI: DEFAULT_OPENAI_ENDPOINT, API_PROVIDER_ANTHROPIC: DEFAULT_ANTHROPIC_ENDPOINT, @@ -102,7 +102,7 @@ class HATextAIConfigFlow(config_entries.ConfigFlow, domain=DOMAIN): API_PROVIDER_GEMINI: DEFAULT_GEMINI_ENDPOINT, }.get(self._provider, DEFAULT_OPENAI_ENDPOINT) - # Выбор модели по умолчанию по провайдеру + # Selecting the default model by provider default_model = ( DEFAULT_DEEPSEEK_MODEL if self._provider == API_PROVIDER_DEEPSEEK else DEFAULT_GEMINI_MODEL if self._provider == API_PROVIDER_GEMINI else diff --git a/custom_components/ha_text_ai/manifest.json b/custom_components/ha_text_ai/manifest.json index 1c2c884..28120b2 100644 --- a/custom_components/ha_text_ai/manifest.json +++ b/custom_components/ha_text_ai/manifest.json @@ -24,6 +24,6 @@ "single_config_entry": false, "ssdp": [], "usb": [], - "version": "2.1.1", + "version": "2.1.3", "zeroconf": [] } diff --git a/custom_components/ha_text_ai/translations/de.json b/custom_components/ha_text_ai/translations/de.json index 904bb5e..0680bb2 100644 --- a/custom_components/ha_text_ai/translations/de.json +++ b/custom_components/ha_text_ai/translations/de.json @@ -88,12 +88,13 @@ "selector": { "api_provider": { "options": { - "openai": "OpenAI (kompatibel)", - "anthropic": "Anthropic (kompatibel)", - "deepseek": "DeepSeek" - } + "openai": "OpenAI (compatible)", + "anthropic": "Anthropic (compatible)", + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } - }, + } +}, "services": { "ask_question": { "name": "Frage stellen (HA Text AI)", diff --git a/custom_components/ha_text_ai/translations/en.json b/custom_components/ha_text_ai/translations/en.json index 4ec4230..5e6e478 100644 --- a/custom_components/ha_text_ai/translations/en.json +++ b/custom_components/ha_text_ai/translations/en.json @@ -86,12 +86,12 @@ } }, "selector": { - "api_provider": { - "options": { - "openai": "OpenAI (compatible)", - "anthropic": "Anthropic (compatible)", - "deepseek": "DeepSeek", - "gemini": "Google Gemini" + "api_provider": { + "options": { + "openai": "OpenAI (compatible)", + "anthropic": "Anthropic (compatible)", + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/custom_components/ha_text_ai/translations/es.json b/custom_components/ha_text_ai/translations/es.json index 9eea8da..c3562e8 100644 --- a/custom_components/ha_text_ai/translations/es.json +++ b/custom_components/ha_text_ai/translations/es.json @@ -90,10 +90,11 @@ "options": { "openai": "OpenAI (compatible)", "anthropic": "Anthropic (compatible)", - "deepseek": "DeepSeek" - } + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } - }, + } +}, "services": { "ask_question": { "name": "Hacer Pregunta (HA Text AI)", diff --git a/custom_components/ha_text_ai/translations/hi.json b/custom_components/ha_text_ai/translations/hi.json index 04e1ecd..949ed7e 100644 --- a/custom_components/ha_text_ai/translations/hi.json +++ b/custom_components/ha_text_ai/translations/hi.json @@ -90,7 +90,8 @@ "options": { "openai": "OpenAI (अनुकूलित)", "anthropic": "Anthropic (अनुकूलित)", - "deepseek": "DeepSeek" + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/custom_components/ha_text_ai/translations/it.json b/custom_components/ha_text_ai/translations/it.json index 06981c0..7bb09f8 100644 --- a/custom_components/ha_text_ai/translations/it.json +++ b/custom_components/ha_text_ai/translations/it.json @@ -90,7 +90,8 @@ "options": { "openai": "OpenAI (compatibile)", "anthropic": "Anthropic (compatibile)", - "deepseek": "DeepSeek" + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/custom_components/ha_text_ai/translations/ru.json b/custom_components/ha_text_ai/translations/ru.json index 06081d3..46a4d7e 100644 --- a/custom_components/ha_text_ai/translations/ru.json +++ b/custom_components/ha_text_ai/translations/ru.json @@ -90,7 +90,8 @@ "options": { "openai": "OpenAI (совместимый)", "anthropic": "Anthropic (совместимый)", - "deepseek": "DeepSeek" + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/custom_components/ha_text_ai/translations/sr.json b/custom_components/ha_text_ai/translations/sr.json index f300711..d057c3d 100644 --- a/custom_components/ha_text_ai/translations/sr.json +++ b/custom_components/ha_text_ai/translations/sr.json @@ -90,7 +90,8 @@ "options": { "openai": "OpenAI (компатибилан)", "anthropic": "Anthropic (компатибилан)", - "deepseek": "DeepSeek" + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/custom_components/ha_text_ai/translations/zh.json b/custom_components/ha_text_ai/translations/zh.json index 4f0d10f..29bc6b5 100644 --- a/custom_components/ha_text_ai/translations/zh.json +++ b/custom_components/ha_text_ai/translations/zh.json @@ -90,7 +90,8 @@ "options": { "openai": "OpenAI(兼容)", "anthropic": "Anthropic(兼容)", - "deepseek": "DeepSeek " + "deepseek": "DeepSeek", + "gemini": "Google Gemini" } } }, diff --git a/hacs.json b/hacs.json index c76a089..2138136 100644 --- a/hacs.json +++ b/hacs.json @@ -1,5 +1,5 @@ { - "name": "HA text AI", + "name": "HA Text AI", "render_readme": true, "homeassistant": "2024.11.0" }