mirror of
https://github.com/home-assistant/core.git
synced 2025-07-27 23:27:37 +00:00
Set Google AI model as device model (#147582)
* Set Google AI model as device model * fix
This commit is contained in:
parent
69af74a593
commit
35478e3162
@ -301,7 +301,12 @@ async def _transform_stream(
|
|||||||
class GoogleGenerativeAILLMBaseEntity(Entity):
|
class GoogleGenerativeAILLMBaseEntity(Entity):
|
||||||
"""Google Generative AI base entity."""
|
"""Google Generative AI base entity."""
|
||||||
|
|
||||||
def __init__(self, entry: ConfigEntry, subentry: ConfigSubentry) -> None:
|
def __init__(
|
||||||
|
self,
|
||||||
|
entry: ConfigEntry,
|
||||||
|
subentry: ConfigSubentry,
|
||||||
|
default_model: str = RECOMMENDED_CHAT_MODEL,
|
||||||
|
) -> None:
|
||||||
"""Initialize the agent."""
|
"""Initialize the agent."""
|
||||||
self.entry = entry
|
self.entry = entry
|
||||||
self.subentry = subentry
|
self.subentry = subentry
|
||||||
@ -312,7 +317,7 @@ class GoogleGenerativeAILLMBaseEntity(Entity):
|
|||||||
identifiers={(DOMAIN, subentry.subentry_id)},
|
identifiers={(DOMAIN, subentry.subentry_id)},
|
||||||
name=subentry.title,
|
name=subentry.title,
|
||||||
manufacturer="Google",
|
manufacturer="Google",
|
||||||
model="Generative AI",
|
model=subentry.data.get(CONF_CHAT_MODEL, default_model).split("/")[-1],
|
||||||
entry_type=dr.DeviceEntryType.SERVICE,
|
entry_type=dr.DeviceEntryType.SERVICE,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ from homeassistant.components.tts import (
|
|||||||
TtsAudioType,
|
TtsAudioType,
|
||||||
Voice,
|
Voice,
|
||||||
)
|
)
|
||||||
from homeassistant.config_entries import ConfigEntry
|
from homeassistant.config_entries import ConfigEntry, ConfigSubentry
|
||||||
from homeassistant.core import HomeAssistant, callback
|
from homeassistant.core import HomeAssistant, callback
|
||||||
from homeassistant.exceptions import HomeAssistantError
|
from homeassistant.exceptions import HomeAssistantError
|
||||||
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback
|
||||||
@ -114,6 +114,10 @@ class GoogleGenerativeAITextToSpeechEntity(
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
|
def __init__(self, config_entry: ConfigEntry, subentry: ConfigSubentry) -> None:
|
||||||
|
"""Initialize the TTS entity."""
|
||||||
|
super().__init__(config_entry, subentry, RECOMMENDED_TTS_MODEL)
|
||||||
|
|
||||||
@callback
|
@callback
|
||||||
def async_get_supported_voices(self, language: str) -> list[Voice]:
|
def async_get_supported_voices(self, language: str) -> list[Voice]:
|
||||||
"""Return a list of supported voices for a language."""
|
"""Return a list of supported voices for a language."""
|
||||||
|
@ -1,4 +1,70 @@
|
|||||||
# serializer version: 1
|
# serializer version: 1
|
||||||
|
# name: test_devices
|
||||||
|
list([
|
||||||
|
DeviceRegistryEntrySnapshot({
|
||||||
|
'area_id': None,
|
||||||
|
'config_entries': <ANY>,
|
||||||
|
'config_entries_subentries': <ANY>,
|
||||||
|
'configuration_url': None,
|
||||||
|
'connections': set({
|
||||||
|
}),
|
||||||
|
'disabled_by': None,
|
||||||
|
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||||
|
'hw_version': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'identifiers': set({
|
||||||
|
tuple(
|
||||||
|
'google_generative_ai_conversation',
|
||||||
|
'ulid-conversation',
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
'is_new': False,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'manufacturer': 'Google',
|
||||||
|
'model': 'gemini-2.5-flash',
|
||||||
|
'model_id': None,
|
||||||
|
'name': 'Google AI Conversation',
|
||||||
|
'name_by_user': None,
|
||||||
|
'primary_config_entry': <ANY>,
|
||||||
|
'serial_number': None,
|
||||||
|
'suggested_area': None,
|
||||||
|
'sw_version': None,
|
||||||
|
'via_device_id': None,
|
||||||
|
}),
|
||||||
|
DeviceRegistryEntrySnapshot({
|
||||||
|
'area_id': None,
|
||||||
|
'config_entries': <ANY>,
|
||||||
|
'config_entries_subentries': <ANY>,
|
||||||
|
'configuration_url': None,
|
||||||
|
'connections': set({
|
||||||
|
}),
|
||||||
|
'disabled_by': None,
|
||||||
|
'entry_type': <DeviceEntryType.SERVICE: 'service'>,
|
||||||
|
'hw_version': None,
|
||||||
|
'id': <ANY>,
|
||||||
|
'identifiers': set({
|
||||||
|
tuple(
|
||||||
|
'google_generative_ai_conversation',
|
||||||
|
'ulid-tts',
|
||||||
|
),
|
||||||
|
}),
|
||||||
|
'is_new': False,
|
||||||
|
'labels': set({
|
||||||
|
}),
|
||||||
|
'manufacturer': 'Google',
|
||||||
|
'model': 'gemini-2.5-flash-preview-tts',
|
||||||
|
'model_id': None,
|
||||||
|
'name': 'Google AI TTS',
|
||||||
|
'name_by_user': None,
|
||||||
|
'primary_config_entry': <ANY>,
|
||||||
|
'serial_number': None,
|
||||||
|
'suggested_area': None,
|
||||||
|
'sw_version': None,
|
||||||
|
'via_device_id': None,
|
||||||
|
}),
|
||||||
|
])
|
||||||
|
# ---
|
||||||
# name: test_generate_content_file_processing_succeeds
|
# name: test_generate_content_file_processing_succeeds
|
||||||
list([
|
list([
|
||||||
tuple(
|
tuple(
|
||||||
|
@ -762,3 +762,17 @@ async def test_migration_from_v1_to_v2_with_same_keys(
|
|||||||
)
|
)
|
||||||
assert device.identifiers == {(DOMAIN, subentry.subentry_id)}
|
assert device.identifiers == {(DOMAIN, subentry.subentry_id)}
|
||||||
assert device.id == device_2.id
|
assert device.id == device_2.id
|
||||||
|
|
||||||
|
|
||||||
|
async def test_devices(
|
||||||
|
hass: HomeAssistant,
|
||||||
|
mock_config_entry: MockConfigEntry,
|
||||||
|
mock_init_component,
|
||||||
|
device_registry: dr.DeviceRegistry,
|
||||||
|
snapshot: SnapshotAssertion,
|
||||||
|
) -> None:
|
||||||
|
"""Assert that devices are created correctly."""
|
||||||
|
devices = dr.async_entries_for_config_entry(
|
||||||
|
device_registry, mock_config_entry.entry_id
|
||||||
|
)
|
||||||
|
assert devices == snapshot
|
||||||
|
Loading…
x
Reference in New Issue
Block a user