@@ -122,19 +122,15 @@ async def send_content(self, content: types.Content):
122122 is_gemini_api = self ._api_backend == GoogleLLMVariant .GEMINI_API
123123
124124 # Route via send_realtime_input if audio is active OR if targeting 3.1 API
125- if self ._audio_active or (is_gemini_31 and is_gemini_api ):
125+ if (self ._audio_active or (is_gemini_31 and is_gemini_api )) and all (
126+ isinstance (part .text , str ) for part in content .parts
127+ ):
126128 logger .debug (
127129 'Routing text via send_realtime_input %s' ,
128130 content ,
129131 )
130- has_text = False
131132 for part in content .parts :
132- if isinstance (part .text , str ):
133- await self ._gemini_session .send_realtime_input (text = part .text )
134- has_text = True
135-
136- if not has_text :
137- logger .warning ('Encountered unsupported content in send_content' )
133+ await self ._gemini_session .send_realtime_input (text = part .text )
138134 else :
139135 logger .debug ('Sending LLM new content %s' , content )
140136 await self ._gemini_session .send (
@@ -161,9 +157,13 @@ async def send_realtime(self, input: RealtimeInput):
161157 # As of now, Gemini 3.1 Flash Live is only available in Gemini API, not
162158 # Vertex AI.
163159 if is_gemini_31 and is_gemini_api :
164- if isinstance (input .mime_type , str ) and input .mime_type .startswith ('audio/' ):
160+ if isinstance (input .mime_type , str ) and input .mime_type .startswith (
161+ 'audio/'
162+ ):
165163 await self ._gemini_session .send_realtime_input (audio = input )
166- elif isinstance (input .mime_type , str ) and input .mime_type .startswith ('image/' ):
164+ elif isinstance (input .mime_type , str ) and input .mime_type .startswith (
165+ 'image/'
166+ ):
167167 await self ._gemini_session .send_realtime_input (video = input )
168168 else :
169169 logger .warning (
@@ -172,9 +172,13 @@ async def send_realtime(self, input: RealtimeInput):
172172 input .mime_type ,
173173 )
174174 else :
175- if isinstance (input .mime_type , str ) and input .mime_type .startswith ('video/' ):
175+ if isinstance (input .mime_type , str ) and input .mime_type .startswith (
176+ 'video/'
177+ ):
176178 await self ._gemini_session .send_realtime_input (video = input )
177- elif isinstance (input .mime_type , str ) and input .mime_type .startswith ('audio/' ):
179+ elif isinstance (input .mime_type , str ) and input .mime_type .startswith (
180+ 'audio/'
181+ ):
178182 await self ._gemini_session .send_realtime_input (audio = input )
179183 else :
180184 await self ._gemini_session .send_realtime_input (media = input )
0 commit comments