Spaces:
Sleeping
Sleeping
File size: 1,263 Bytes
09ed935 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
from typing import Any, Callable
import mesop.labs as mel
_HOST = "generativelanguage.googleapis.com"
_GEMINI_BIDI_WEBSOCKET_URI = "wss://{host}/ws/google.ai.generativelanguage.v1alpha.GenerativeService.BidiGenerateContent?key={api_key}"
@mel.web_component(path="./gemini_live_connection.js")
def gemini_live_connection(
*,
enabled: bool = False,
api_key: str = "",
api_config: str = "",
on_start: Callable[[mel.WebEvent], Any] | None = None,
on_stop: Callable[[mel.WebEvent], Any] | None = None,
on_tool_call: Callable[[mel.WebEvent], Any] | None = None,
tool_call_responses: str = "",
text_input: str = "",
):
return mel.insert_web_component(
name="gemini-live-connection",
events=_filter_events(
{
"startEvent": on_start,
"stopEvent": on_stop,
"toolCallEvent": on_tool_call,
}
),
properties={
"api_config": api_config,
"enabled": enabled,
"endpoint": _GEMINI_BIDI_WEBSOCKET_URI.format(host=_HOST, api_key=api_key),
"tool_call_responses": tool_call_responses,
"text_input": text_input,
},
)
def _filter_events(events: dict[str, Callable[[mel.WebEvent], Any] | None]):
return {event: callback for event, callback in events.items() if callback}
|