Gemini Live API SessionResumptionUpdate Возвращает None для new_handle — возобновление сеанса не работаетPython

Программы на Python
Ответить
Anonymous
 Gemini Live API SessionResumptionUpdate Возвращает None для new_handle — возобновление сеанса не работает

Сообщение Anonymous »

Я создаю личного помощника с искусственным интеллектом, используя Google Gemini Live API (через google-genai Python SDK). Приложению требуется возобновление сеанса для поддержания непрерывности разговора при повторном подключении после отключения.
Однако сообщения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»