Однако сообщения SessionResumptionUpdate от Gemini Live API постоянно возвращают None для поля new_handle, препятствуя правильному возобновлению сеанса и вызывая холодный перезапуск после каждого хода ИИ.
Текущее поведение
- Версия API: google-genai Python SDK (последняя версия на январь 2026 г.)
- Модель: Gemini-live-2.5-flash-preview-native-audio-09-2025
- Соединение Тип: использование google.genai.aio.live.connect() с асинхронным контекстным менеджером
- Конфигурация: возобновление сеанса явно включено через SessionResumptionConfig
- Что я вижу:
"resumable": None,
"new_handle": None, # ← ALWAYS None!
"last_consumed_client_message_index": None
Ожидаемое поведение:
new_handle должен содержать действительную строку токена возобновления - resumable должно иметь значение True, когда сеанс может быть возобновлен
- Этот токен должен обеспечивать плавное повторное подключение без потери контекста
Конфигурация вызова API и возобновления сеанса
- Инициализация клиента Gemini `
self._genai_client = genai.Client(
vertexai=True,
project=settings.GOOGLE_CLOUD_PROJECT,
location=settings.GOOGLE_CLOUD_LOCATION
)
2. Название модели: self.gemini_model = "gemini-live-2.5-flash-preview-native-audio-09-2025"
3.LiveConnectConfig с SessionResumption
# Build SDK configuration using types
live_config_kwargs = {
"response_modalities": ["AUDIO"],
"speech_config": genai_types.SpeechConfig(
voice_config=genai_types.VoiceConfig(
prebuilt_voice_config=genai_types.PrebuiltVoiceConfig(voice_name="Kore")
)
),
"realtime_input_config": genai_types.RealtimeInputConfig(
automatic_activity_detection=genai_types.AutomaticActivityDetection(
disabled=False, # VAD ENABLED
end_of_speech_sensitivity="END_SENSITIVITY_LOW", # Less aggressive for thinking pauses
silence_duration_ms=VAD_SILENCE_MS # 2000ms
)
),
"output_audio_transcription": genai_types.AudioTranscriptionConfig(),
"input_audio_transcription": genai_types.AudioTranscriptionConfig(),
"session_resumption": genai_types.SessionResumptionConfig(
handle=resumption_token if resumption_token else None,
transparent=True # Enable transparent mode for explicit message tracking
),
"context_window_compression": genai_types.ContextWindowCompressionConfig(
sliding_window=genai_types.SlidingWindow(),
trigger_tokens=25000,
),
}
live_config = genai_types.LiveConnectConfig(**live_config_kwargs)
4.Подключение к Gemini Live API
self._session_context = self._genai_client.aio.live.connect(
model=self.gemini_model,
config=live_config
)
self.live_session = await self._session_context.__aenter__()
Подробнее здесь: https://stackoverflow.com/questions/798 ... le-session
Мобильная версия