gllm-inference-binary 0.5.65__cp313-cp313-macosx_13_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. gllm_inference/__init__.pyi +0 -0
  2. gllm_inference/builder/__init__.pyi +6 -0
  3. gllm_inference/builder/_build_invoker.pyi +28 -0
  4. gllm_inference/builder/build_em_invoker.pyi +130 -0
  5. gllm_inference/builder/build_lm_invoker.pyi +222 -0
  6. gllm_inference/builder/build_lm_request_processor.pyi +88 -0
  7. gllm_inference/builder/build_output_parser.pyi +29 -0
  8. gllm_inference/catalog/__init__.pyi +4 -0
  9. gllm_inference/catalog/catalog.pyi +121 -0
  10. gllm_inference/catalog/lm_request_processor_catalog.pyi +112 -0
  11. gllm_inference/catalog/prompt_builder_catalog.pyi +82 -0
  12. gllm_inference/constants.pyi +12 -0
  13. gllm_inference/em_invoker/__init__.pyi +12 -0
  14. gllm_inference/em_invoker/azure_openai_em_invoker.pyi +88 -0
  15. gllm_inference/em_invoker/bedrock_em_invoker.pyi +118 -0
  16. gllm_inference/em_invoker/cohere_em_invoker.pyi +127 -0
  17. gllm_inference/em_invoker/em_invoker.pyi +90 -0
  18. gllm_inference/em_invoker/google_em_invoker.pyi +129 -0
  19. gllm_inference/em_invoker/jina_em_invoker.pyi +103 -0
  20. gllm_inference/em_invoker/langchain/__init__.pyi +3 -0
  21. gllm_inference/em_invoker/langchain/em_invoker_embeddings.pyi +84 -0
  22. gllm_inference/em_invoker/langchain_em_invoker.pyi +46 -0
  23. gllm_inference/em_invoker/openai_compatible_em_invoker.pyi +41 -0
  24. gllm_inference/em_invoker/openai_em_invoker.pyi +118 -0
  25. gllm_inference/em_invoker/schema/__init__.pyi +0 -0
  26. gllm_inference/em_invoker/schema/bedrock.pyi +29 -0
  27. gllm_inference/em_invoker/schema/cohere.pyi +20 -0
  28. gllm_inference/em_invoker/schema/google.pyi +9 -0
  29. gllm_inference/em_invoker/schema/jina.pyi +29 -0
  30. gllm_inference/em_invoker/schema/langchain.pyi +5 -0
  31. gllm_inference/em_invoker/schema/openai.pyi +7 -0
  32. gllm_inference/em_invoker/schema/openai_compatible.pyi +7 -0
  33. gllm_inference/em_invoker/schema/twelvelabs.pyi +17 -0
  34. gllm_inference/em_invoker/schema/voyage.pyi +15 -0
  35. gllm_inference/em_invoker/twelevelabs_em_invoker.pyi +101 -0
  36. gllm_inference/em_invoker/voyage_em_invoker.pyi +104 -0
  37. gllm_inference/exceptions/__init__.pyi +4 -0
  38. gllm_inference/exceptions/error_parser.pyi +41 -0
  39. gllm_inference/exceptions/exceptions.pyi +132 -0
  40. gllm_inference/exceptions/provider_error_map.pyi +24 -0
  41. gllm_inference/lm_invoker/__init__.pyi +15 -0
  42. gllm_inference/lm_invoker/anthropic_lm_invoker.pyi +320 -0
  43. gllm_inference/lm_invoker/azure_openai_lm_invoker.pyi +237 -0
  44. gllm_inference/lm_invoker/batch/__init__.pyi +3 -0
  45. gllm_inference/lm_invoker/batch/batch_operations.pyi +128 -0
  46. gllm_inference/lm_invoker/bedrock_lm_invoker.pyi +212 -0
  47. gllm_inference/lm_invoker/datasaur_lm_invoker.pyi +157 -0
  48. gllm_inference/lm_invoker/google_lm_invoker.pyi +421 -0
  49. gllm_inference/lm_invoker/langchain_lm_invoker.pyi +239 -0
  50. gllm_inference/lm_invoker/litellm_lm_invoker.pyi +224 -0
  51. gllm_inference/lm_invoker/lm_invoker.pyi +183 -0
  52. gllm_inference/lm_invoker/openai_chat_completions_lm_invoker.pyi +252 -0
  53. gllm_inference/lm_invoker/openai_compatible_lm_invoker.pyi +52 -0
  54. gllm_inference/lm_invoker/openai_lm_invoker.pyi +437 -0
  55. gllm_inference/lm_invoker/portkey_lm_invoker.pyi +296 -0
  56. gllm_inference/lm_invoker/schema/__init__.pyi +0 -0
  57. gllm_inference/lm_invoker/schema/anthropic.pyi +56 -0
  58. gllm_inference/lm_invoker/schema/bedrock.pyi +53 -0
  59. gllm_inference/lm_invoker/schema/datasaur.pyi +14 -0
  60. gllm_inference/lm_invoker/schema/google.pyi +36 -0
  61. gllm_inference/lm_invoker/schema/langchain.pyi +23 -0
  62. gllm_inference/lm_invoker/schema/openai.pyi +109 -0
  63. gllm_inference/lm_invoker/schema/openai_chat_completions.pyi +62 -0
  64. gllm_inference/lm_invoker/schema/portkey.pyi +31 -0
  65. gllm_inference/lm_invoker/schema/xai.pyi +31 -0
  66. gllm_inference/lm_invoker/sea_lion_lm_invoker.pyi +48 -0
  67. gllm_inference/lm_invoker/xai_lm_invoker.pyi +252 -0
  68. gllm_inference/model/__init__.pyi +13 -0
  69. gllm_inference/model/em/__init__.pyi +0 -0
  70. gllm_inference/model/em/cohere_em.pyi +17 -0
  71. gllm_inference/model/em/google_em.pyi +16 -0
  72. gllm_inference/model/em/jina_em.pyi +22 -0
  73. gllm_inference/model/em/openai_em.pyi +15 -0
  74. gllm_inference/model/em/twelvelabs_em.pyi +13 -0
  75. gllm_inference/model/em/voyage_em.pyi +20 -0
  76. gllm_inference/model/lm/__init__.pyi +0 -0
  77. gllm_inference/model/lm/anthropic_lm.pyi +22 -0
  78. gllm_inference/model/lm/google_lm.pyi +18 -0
  79. gllm_inference/model/lm/openai_lm.pyi +27 -0
  80. gllm_inference/model/lm/sea_lion_lm.pyi +16 -0
  81. gllm_inference/model/lm/xai_lm.pyi +19 -0
  82. gllm_inference/output_parser/__init__.pyi +3 -0
  83. gllm_inference/output_parser/json_output_parser.pyi +60 -0
  84. gllm_inference/output_parser/output_parser.pyi +27 -0
  85. gllm_inference/prompt_builder/__init__.pyi +3 -0
  86. gllm_inference/prompt_builder/format_strategy/__init__.pyi +4 -0
  87. gllm_inference/prompt_builder/format_strategy/format_strategy.pyi +55 -0
  88. gllm_inference/prompt_builder/format_strategy/jinja_format_strategy.pyi +45 -0
  89. gllm_inference/prompt_builder/format_strategy/string_format_strategy.pyi +20 -0
  90. gllm_inference/prompt_builder/prompt_builder.pyi +73 -0
  91. gllm_inference/prompt_formatter/__init__.pyi +7 -0
  92. gllm_inference/prompt_formatter/agnostic_prompt_formatter.pyi +49 -0
  93. gllm_inference/prompt_formatter/huggingface_prompt_formatter.pyi +55 -0
  94. gllm_inference/prompt_formatter/llama_prompt_formatter.pyi +59 -0
  95. gllm_inference/prompt_formatter/mistral_prompt_formatter.pyi +53 -0
  96. gllm_inference/prompt_formatter/openai_prompt_formatter.pyi +35 -0
  97. gllm_inference/prompt_formatter/prompt_formatter.pyi +30 -0
  98. gllm_inference/realtime_chat/__init__.pyi +3 -0
  99. gllm_inference/realtime_chat/google_realtime_chat.pyi +205 -0
  100. gllm_inference/realtime_chat/input_streamer/__init__.pyi +4 -0
  101. gllm_inference/realtime_chat/input_streamer/input_streamer.pyi +36 -0
  102. gllm_inference/realtime_chat/input_streamer/keyboard_input_streamer.pyi +27 -0
  103. gllm_inference/realtime_chat/input_streamer/linux_mic_input_streamer.pyi +36 -0
  104. gllm_inference/realtime_chat/output_streamer/__init__.pyi +4 -0
  105. gllm_inference/realtime_chat/output_streamer/console_output_streamer.pyi +21 -0
  106. gllm_inference/realtime_chat/output_streamer/linux_speaker_output_streamer.pyi +42 -0
  107. gllm_inference/realtime_chat/output_streamer/output_streamer.pyi +33 -0
  108. gllm_inference/realtime_chat/realtime_chat.pyi +28 -0
  109. gllm_inference/request_processor/__init__.pyi +4 -0
  110. gllm_inference/request_processor/lm_request_processor.pyi +101 -0
  111. gllm_inference/request_processor/uses_lm_mixin.pyi +130 -0
  112. gllm_inference/schema/__init__.pyi +19 -0
  113. gllm_inference/schema/activity.pyi +64 -0
  114. gllm_inference/schema/attachment.pyi +102 -0
  115. gllm_inference/schema/code_exec_result.pyi +14 -0
  116. gllm_inference/schema/config.pyi +15 -0
  117. gllm_inference/schema/enums.pyi +82 -0
  118. gllm_inference/schema/events.pyi +105 -0
  119. gllm_inference/schema/formatter.pyi +31 -0
  120. gllm_inference/schema/lm_input.pyi +4 -0
  121. gllm_inference/schema/lm_output.pyi +266 -0
  122. gllm_inference/schema/mcp.pyi +31 -0
  123. gllm_inference/schema/message.pyi +52 -0
  124. gllm_inference/schema/model_id.pyi +176 -0
  125. gllm_inference/schema/reasoning.pyi +15 -0
  126. gllm_inference/schema/token_usage.pyi +75 -0
  127. gllm_inference/schema/tool_call.pyi +14 -0
  128. gllm_inference/schema/tool_result.pyi +11 -0
  129. gllm_inference/schema/type_alias.pyi +11 -0
  130. gllm_inference/utils/__init__.pyi +5 -0
  131. gllm_inference/utils/io_utils.pyi +26 -0
  132. gllm_inference/utils/langchain.pyi +30 -0
  133. gllm_inference/utils/validation.pyi +15 -0
  134. gllm_inference.build/.gitignore +1 -0
  135. gllm_inference.cpython-313-darwin.so +0 -0
  136. gllm_inference.pyi +156 -0
  137. gllm_inference_binary-0.5.65.dist-info/METADATA +138 -0
  138. gllm_inference_binary-0.5.65.dist-info/RECORD +140 -0
  139. gllm_inference_binary-0.5.65.dist-info/WHEEL +5 -0
  140. gllm_inference_binary-0.5.65.dist-info/top_level.txt +1 -0
@@ -0,0 +1,205 @@
1
+ import asyncio
2
+ import logging
3
+ from _typeshed import Incomplete
4
+ from gllm_inference.constants import GOOGLE_SCOPES as GOOGLE_SCOPES
5
+ from gllm_inference.realtime_chat.input_streamer import KeyboardInputStreamer as KeyboardInputStreamer
6
+ from gllm_inference.realtime_chat.input_streamer.input_streamer import BaseInputStreamer as BaseInputStreamer
7
+ from gllm_inference.realtime_chat.output_streamer import ConsoleOutputStreamer as ConsoleOutputStreamer
8
+ from gllm_inference.realtime_chat.output_streamer.output_streamer import BaseOutputStreamer as BaseOutputStreamer
9
+ from gllm_inference.realtime_chat.realtime_chat import BaseRealtimeChat as BaseRealtimeChat
10
+ from pydantic import BaseModel
11
+ from typing import Literal
12
+
13
+ DEFAULT_POST_OUTPUT_AUDIO_DELAY: float
14
+ LIVE_CONNECT_CONFIG: Incomplete
15
+
16
+ class GoogleIOStreamerState(BaseModel):
17
+ '''[BETA] Defines the state of the GoogleIOStreamer with thread-safe properties.
18
+
19
+ Attributes:
20
+ is_streaming_output (bool): Whether the output is streaming.
21
+ console_mode (Literal["input", "user", "assistant"]): The current console mode.
22
+ terminated (bool): Whether the conversation is terminated.
23
+ '''
24
+ is_streaming_output: bool
25
+ console_mode: Literal['input', 'user', 'assistant']
26
+ terminated: bool
27
+ async def set_streaming_output(self, value: bool) -> None:
28
+ """Thread-safe setter for is_streaming_output.
29
+
30
+ Args:
31
+ value (bool): The value to set for is_streaming_output.
32
+ """
33
+ async def get_streaming_output(self) -> bool:
34
+ """Thread-safe getter for is_streaming_output.
35
+
36
+ Returns:
37
+ bool: The value of is_streaming_output.
38
+ """
39
+ async def set_console_mode(self, value: Literal['input', 'user', 'assistant']) -> None:
40
+ '''Thread-safe setter for console_mode.
41
+
42
+ Args:
43
+ value (Literal["input", "user", "assistant"]): The value to set for console_mode.
44
+ '''
45
+ async def get_console_mode(self) -> Literal['input', 'user', 'assistant']:
46
+ '''Thread-safe getter for console_mode.
47
+
48
+ Returns:
49
+ Literal["input", "user", "assistant"]: The value of console_mode.
50
+ '''
51
+ async def set_terminated(self, value: bool) -> None:
52
+ """Thread-safe setter for terminated.
53
+
54
+ Args:
55
+ value (bool): The value to set for terminated.
56
+ """
57
+ async def get_terminated(self) -> bool:
58
+ """Thread-safe getter for terminated.
59
+
60
+ Returns:
61
+ bool: The value of terminated.
62
+ """
63
+
64
+ class GoogleIOStreamer:
65
+ """[BETA] Defines the GoogleIOStreamer.
66
+
67
+ This class manages the realtime conversation lifecycle.
68
+ It handles the IO operations between the model and the input/output streamers.
69
+
70
+ Attributes:
71
+ session (AsyncSession): The session of the GoogleIOStreamer.
72
+ task_group (asyncio.TaskGroup): The task group of the GoogleIOStreamer.
73
+ input_queue (asyncio.Queue): The input queue of the GoogleIOStreamer.
74
+ output_queue (asyncio.Queue): The output queue of the GoogleIOStreamer.
75
+ input_streamers (list[BaseInputStreamer]): The input streamers of the GoogleIOStreamer.
76
+ output_streamers (list[BaseOutputStreamer]): The output streamers of the GoogleIOStreamer.
77
+ post_output_audio_delay (float): The delay in seconds to post the output audio.
78
+ """
79
+ session: AsyncSession
80
+ task_group: Incomplete
81
+ input_queue: Incomplete
82
+ output_queue: Incomplete
83
+ state: Incomplete
84
+ input_streamers: Incomplete
85
+ output_streamers: Incomplete
86
+ post_output_audio_delay: Incomplete
87
+ def __init__(self, session: AsyncSession, task_group: asyncio.TaskGroup, input_queue: asyncio.Queue, output_queue: asyncio.Queue, input_streamers: list[BaseInputStreamer], output_streamers: list[BaseOutputStreamer], post_output_audio_delay: float, logger: logging.Logger) -> None:
88
+ """Initializes a new instance of the GoogleIOStreamer class.
89
+
90
+ Args:
91
+ session (AsyncSession): The session of the GoogleIOStreamer.
92
+ task_group (asyncio.TaskGroup): The task group of the GoogleIOStreamer.
93
+ input_queue (asyncio.Queue): The input queue of the GoogleIOStreamer.
94
+ output_queue (asyncio.Queue): The output queue of the GoogleIOStreamer.
95
+ input_streamers (list[BaseInputStreamer]): The input streamers of the GoogleIOStreamer.
96
+ output_streamers (list[BaseOutputStreamer]): The output streamers of the GoogleIOStreamer.
97
+ post_output_audio_delay (float): The delay in seconds to post the output audio.
98
+ logger (logging.Logger): The logger of the GoogleIOStreamer.
99
+ """
100
+ async def start(self) -> None:
101
+ """Processes the realtime conversation.
102
+
103
+ This method is used to start the realtime conversation.
104
+ It initializes the input and output streamers, creates the necessary tasks, and starts the conversation.
105
+ When the conversation is terminated, it cleans up the input and output streamers.
106
+ """
107
+
108
+ class GoogleRealtimeChat(BaseRealtimeChat):
109
+ '''[BETA] A realtime chat module to interact with Gemini Live models.
110
+
111
+ Warning:
112
+ The \'GoogleRealtimeChat\' class is currently in beta and may be subject to changes in the future.
113
+ It is intended only for quick prototyping in local environments.
114
+ Please avoid using it in production environments.
115
+
116
+ Attributes:
117
+ model_name (str): The name of the language model.
118
+ client_params (dict[str, Any]): The Google client instance init parameters.
119
+
120
+ Basic usage:
121
+ The `GoogleRealtimeChat` can be used as started as follows:
122
+ ```python
123
+ realtime_chat = GoogleRealtimeChat(model_name="gemini-live-2.5-flash-preview")
124
+ await realtime_chat.invoke()
125
+ ```
126
+
127
+ Custom IO streamers:
128
+ The `GoogleRealtimeChat` can be used with custom IO streamers.
129
+ ```python
130
+ input_streamers = [KeyboardInputStreamer(), LinuxMicInputStreamer()]
131
+ output_streamers = [ConsoleOutputStreamer(), LinuxSpeakerOutputStreamer()]
132
+ realtime_chat = GoogleRealtimeChat(model_name="gemini-live-2.5-flash-preview")
133
+ await realtime_chat.start(input_streamers=input_streamers, output_streamers=output_streamers)
134
+ ```
135
+
136
+ In the above example, we added a capability to use a Linux system microphone and speaker,
137
+ allowing realtime audio input and output to the model.
138
+
139
+ Authentication:
140
+ The `GoogleRealtimeChat` can use either Google Gen AI or Google Vertex AI.
141
+
142
+ Google Gen AI is recommended for quick prototyping and development.
143
+ It requires a Gemini API key for authentication.
144
+
145
+ Usage example:
146
+ ```python
147
+ realtime_chat = GoogleRealtimeChat(
148
+ model_name="gemini-live-2.5-flash-preview",
149
+ api_key="your_api_key"
150
+ )
151
+ ```
152
+
153
+ Google Vertex AI is recommended to build production-ready applications.
154
+ It requires a service account JSON file for authentication.
155
+
156
+ Usage example:
157
+ ```python
158
+ realtime_chat = GoogleRealtimeChat(
159
+ model_name="gemini-live-2.5-flash-preview",
160
+ credentials_path="path/to/service_account.json"
161
+ )
162
+ ```
163
+
164
+ If neither `api_key` nor `credentials_path` is provided, Google Gen AI will be used by default.
165
+ The `GOOGLE_API_KEY` environment variable will be used for authentication.
166
+ '''
167
+ model_name: Incomplete
168
+ client_params: Incomplete
169
+ def __init__(self, model_name: str, api_key: str | None = None, credentials_path: str | None = None, project_id: str | None = None, location: str = 'us-central1') -> None:
170
+ '''Initializes a new instance of the GoogleRealtimeChat class.
171
+
172
+ Args:
173
+ model_name (str): The name of the model to use.
174
+ api_key (str | None, optional): Required for Google Gen AI authentication. Cannot be used together
175
+ with `credentials_path`. Defaults to None.
176
+ credentials_path (str | None, optional): Required for Google Vertex AI authentication. Path to the service
177
+ account credentials JSON file. Cannot be used together with `api_key`. Defaults to None.
178
+ project_id (str | None, optional): The Google Cloud project ID for Vertex AI. Only used when authenticating
179
+ with `credentials_path`. Defaults to None, in which case it will be loaded from the credentials file.
180
+ location (str, optional): The location of the Google Cloud project for Vertex AI. Only used when
181
+ authenticating with `credentials_path`. Defaults to "us-central1".
182
+
183
+ Note:
184
+ If neither `api_key` nor `credentials_path` is provided, Google Gen AI will be used by default.
185
+ The `GOOGLE_API_KEY` environment variable will be used for authentication.
186
+ '''
187
+ async def start(self, input_streamers: list[BaseInputStreamer] | None = None, output_streamers: list[BaseOutputStreamer] | None = None, post_output_audio_delay: float = ...) -> None:
188
+ """Starts the realtime conversation using the provided input and output streamers.
189
+
190
+ This method is used to start the realtime conversation using a `GoogleIOStreamer`.
191
+ The streamers are responsible for handling the input and output of the conversation.
192
+
193
+ Args:
194
+ input_streamers (list[BaseInputStreamer] | None, optional): The input streamers to use.
195
+ Defaults to None, in which case a `KeyboardInputStreamer` will be used.
196
+ output_streamers (list[BaseOutputStreamer] | None, optional): The output streamers to use.
197
+ Defaults to None, in which case a `ConsoleOutputStreamer` will be used.
198
+ post_output_audio_delay (float, optional): The delay in seconds to post the output audio.
199
+ Defaults to 0.5 seconds.
200
+
201
+ Raises:
202
+ ValueError: If the `input_streamers` or `output_streamers` is an empty list.
203
+ ValueError: If the `post_output_audio_delay` is not greater than 0.
204
+ Exception: If the conversation fails to process.
205
+ """
@@ -0,0 +1,4 @@
1
+ from gllm_inference.realtime_chat.input_streamer.keyboard_input_streamer import KeyboardInputStreamer as KeyboardInputStreamer
2
+ from gllm_inference.realtime_chat.input_streamer.linux_mic_input_streamer import LinuxMicInputStreamer as LinuxMicInputStreamer
3
+
4
+ __all__ = ['KeyboardInputStreamer', 'LinuxMicInputStreamer']
@@ -0,0 +1,36 @@
1
+ import abc
2
+ import asyncio
3
+ from abc import ABC, abstractmethod
4
+ from pydantic import BaseModel as BaseModel
5
+
6
+ class BaseInputStreamer(ABC, metaclass=abc.ABCMeta):
7
+ """[BETA] A base class for input streamers.
8
+
9
+ Attributes:
10
+ state (BaseModel | None): The state of the input streamer.
11
+ input_queue (asyncio.Queue | None): The queue to put the input events.
12
+ """
13
+ state: BaseModel | None
14
+ input_queue: asyncio.Queue | None
15
+ async def initialize(self, state: BaseModel, input_queue: asyncio.Queue) -> None:
16
+ """Initializes the input streamer.
17
+
18
+ Args:
19
+ input_queue (asyncio.Queue): The queue to put the input events.
20
+ state (BaseModel): The state of the input streamer.
21
+ """
22
+ @abstractmethod
23
+ async def stream_input(self) -> None:
24
+ """Streams the input from a certain source.
25
+
26
+ This method must be implemented by subclasses to define the logic for streaming the input.
27
+
28
+ Raises:
29
+ NotImplementedError: If the method is not implemented in a subclass.
30
+ """
31
+ async def close(self) -> None:
32
+ """Closes the input streamer.
33
+
34
+ This method is used to close the input streamer.
35
+ It is used to clean up the input streamer.
36
+ """
@@ -0,0 +1,27 @@
1
+ import asyncio
2
+ from _typeshed import Incomplete
3
+ from gllm_inference.realtime_chat.input_streamer.input_streamer import BaseInputStreamer as BaseInputStreamer
4
+
5
+ DEFAULT_QUIT_CMD: str
6
+
7
+ class KeyboardInputStreamer(BaseInputStreamer):
8
+ """[BETA] A keyboard input streamer that reads the input text from the keyboard.
9
+
10
+ Attributes:
11
+ state (BaseModel): The state of the input streamer.
12
+ input_queue (asyncio.Queue): The queue to put the input events.
13
+ quit_cmd (str): The command to quit the conversation.
14
+ """
15
+ record_process: asyncio.subprocess.Process | None
16
+ quit_cmd: Incomplete
17
+ def __init__(self, quit_cmd: str = ...) -> None:
18
+ """Initializes the KeyboardInputStreamer.
19
+
20
+ Args:
21
+ quit_cmd (str, optional): The command to quit the conversation. Defaults to DEFAULT_QUIT_CMD.
22
+ """
23
+ async def stream_input(self) -> None:
24
+ """Streams the input from the keyboard.
25
+
26
+ This method is used to stream the input text from the keyboard to the input queue.
27
+ """
@@ -0,0 +1,36 @@
1
+ import asyncio
2
+ from _typeshed import Incomplete
3
+ from gllm_inference.realtime_chat.input_streamer.input_streamer import BaseInputStreamer as BaseInputStreamer
4
+
5
+ SEND_SAMPLE_RATE: int
6
+ CHANNELS: int
7
+ RECORD_CMD: Incomplete
8
+ CHUNK_DURATION: float
9
+ CHUNK_SIZE: Incomplete
10
+
11
+ class LinuxMicInputStreamer(BaseInputStreamer):
12
+ """[BETA] A Linux microphone input streamer that reads the input audio from the microphone.
13
+
14
+ Attributes:
15
+ state (BaseModel): The state of the input streamer.
16
+ input_queue (asyncio.Queue): The queue to put the input events.
17
+ record_process (asyncio.subprocess.Process | None): The process to record the input audio.
18
+ """
19
+ record_process: asyncio.subprocess.Process | None
20
+ def __init__(self) -> None:
21
+ """Initializes the LinuxMicInputStreamer.
22
+
23
+ Raises:
24
+ OSError: If the current system is not Linux.
25
+ """
26
+ async def stream_input(self) -> None:
27
+ """Streams the input audio from the Linux system microphone.
28
+
29
+ This method is used to stream the recorded input audio from the Linux system microphone to the input queue.
30
+ """
31
+ async def close(self) -> None:
32
+ """Closes the LinuxMicInputStreamer.
33
+
34
+ This method is used to close the LinuxMicInputStreamer.
35
+ It is used to clean up the recording process.
36
+ """
@@ -0,0 +1,4 @@
1
+ from gllm_inference.realtime_chat.output_streamer.console_output_streamer import ConsoleOutputStreamer as ConsoleOutputStreamer
2
+ from gllm_inference.realtime_chat.output_streamer.linux_speaker_output_streamer import LinuxSpeakerOutputStreamer as LinuxSpeakerOutputStreamer
3
+
4
+ __all__ = ['ConsoleOutputStreamer', 'LinuxSpeakerOutputStreamer']
@@ -0,0 +1,21 @@
1
+ from gllm_inference.realtime_chat.output_streamer.output_streamer import BaseOutputStreamer as BaseOutputStreamer
2
+ from typing import Any
3
+
4
+ USER_HEADER: str
5
+ ASSISTANT_HEADER: str
6
+ FOOTER: str
7
+
8
+ class ConsoleOutputStreamer(BaseOutputStreamer):
9
+ """[BETA] A console output streamer that prints the output to the console.
10
+
11
+ Attributes:
12
+ state (BaseModel): The state of the output streamer.
13
+ """
14
+ async def handle(self, data: dict[str, Any]) -> None:
15
+ """Handles the output events.
16
+
17
+ This method is used to handle the text output events and print them to the console.
18
+
19
+ Args:
20
+ data (dict[str, Any]): The output events.
21
+ """
@@ -0,0 +1,42 @@
1
+ import asyncio
2
+ from _typeshed import Incomplete
3
+ from gllm_inference.realtime_chat.output_streamer.output_streamer import BaseOutputStreamer as BaseOutputStreamer
4
+ from pydantic import BaseModel as BaseModel
5
+ from typing import Any
6
+
7
+ PLAY_AUDIO_SAMPLE_RATE: int
8
+ CHANNELS: int
9
+ PLAY_CMD: Incomplete
10
+ OUTPUT_AUDIO_DELAY: float
11
+
12
+ class LinuxSpeakerOutputStreamer(BaseOutputStreamer):
13
+ """[BETA] A Linux speaker output streamer that plays the output audio through the speakers.
14
+
15
+ Attributes:
16
+ state (BaseModel): The state of the output streamer.
17
+ play_process (asyncio.subprocess.Process | None): The process to play the output audio.
18
+ """
19
+ play_process: asyncio.subprocess.Process | None
20
+ async def initialize(self, state: BaseModel) -> None:
21
+ """Initializes the LinuxSpeakerOutputStreamer.
22
+
23
+ Args:
24
+ state (BaseModel): The state of the output streamer.
25
+
26
+ Raises:
27
+ OSError: If the current system is not Linux.
28
+ """
29
+ async def handle(self, data: dict[str, Any]) -> None:
30
+ """Handles the output events.
31
+
32
+ This method is used to handle the audio output events and play them through the Linux system speakers.
33
+
34
+ Args:
35
+ data (dict[str, Any]): The output events.
36
+ """
37
+ async def close(self) -> None:
38
+ """Closes the LinuxSpeakerOutputStreamer.
39
+
40
+ This method is used to close the LinuxSpeakerOutputStreamer.
41
+ It is used to clean up playing process.
42
+ """
@@ -0,0 +1,33 @@
1
+ import abc
2
+ from abc import ABC, abstractmethod
3
+ from pydantic import BaseModel as BaseModel
4
+ from typing import Any
5
+
6
+ class BaseOutputStreamer(ABC, metaclass=abc.ABCMeta):
7
+ """[BETA] A base class for output streamers.
8
+
9
+ Attributes:
10
+ state (BaseModel | None): The state of the output streamer.
11
+ """
12
+ state: BaseModel | None
13
+ async def initialize(self, state: BaseModel) -> None:
14
+ """Initializes the output streamer.
15
+
16
+ Args:
17
+ state (BaseModel): The state of the output streamer.
18
+ """
19
+ @abstractmethod
20
+ async def handle(self, data: dict[str, Any]) -> None:
21
+ """Handles output events streamed from the model.
22
+
23
+ This method must be implemented by subclasses to define the logic for handling the output events.
24
+
25
+ Raises:
26
+ NotImplementedError: If the method is not implemented in a subclass.
27
+ """
28
+ async def close(self) -> None:
29
+ """Closes the output streamer.
30
+
31
+ This method is used to close the output streamer.
32
+ It is used to clean up the output streamer.
33
+ """
@@ -0,0 +1,28 @@
1
+ import abc
2
+ from abc import ABC, abstractmethod
3
+ from gllm_inference.realtime_chat.input_streamer.input_streamer import BaseInputStreamer as BaseInputStreamer
4
+ from gllm_inference.realtime_chat.output_streamer.output_streamer import BaseOutputStreamer as BaseOutputStreamer
5
+
6
+ class BaseRealtimeChat(ABC, metaclass=abc.ABCMeta):
7
+ """[BETA] A base class for realtime chat modules.
8
+
9
+ The `BaseRealtimeChat` class provides a framework for processing real-time conversations.
10
+ """
11
+ def __init__(self) -> None:
12
+ """Initializes a new instance of the BaseRealtimeChat class."""
13
+ @abstractmethod
14
+ async def start(self, input_streamers: list[BaseInputStreamer] | None = None, output_streamers: list[BaseOutputStreamer] | None = None) -> None:
15
+ """Starts the real-time conversation using the provided input and output streamers.
16
+
17
+ This abstract method must be implemented by subclasses to define the logic
18
+ for starting the real-time conversation.
19
+
20
+ Args:
21
+ input_streamers (list[BaseInputStreamer] | None, optional): The input streamers to use.
22
+ Defaults to None.
23
+ output_streamers (list[BaseOutputStreamer] | None, optional): The output streamers to use.
24
+ Defaults to None.
25
+
26
+ Raises:
27
+ NotImplementedError: If the method is not implemented in a subclass.
28
+ """
@@ -0,0 +1,4 @@
1
+ from gllm_inference.request_processor.lm_request_processor import LMRequestProcessor as LMRequestProcessor
2
+ from gllm_inference.request_processor.uses_lm_mixin import UsesLM as UsesLM
3
+
4
+ __all__ = ['LMRequestProcessor', 'UsesLM']
@@ -0,0 +1,101 @@
1
+ from _typeshed import Incomplete
2
+ from gllm_core.event import EventEmitter as EventEmitter
3
+ from gllm_inference.lm_invoker.lm_invoker import BaseLMInvoker as BaseLMInvoker
4
+ from gllm_inference.output_parser.output_parser import BaseOutputParser as BaseOutputParser
5
+ from gllm_inference.prompt_builder.prompt_builder import PromptBuilder as PromptBuilder
6
+ from gllm_inference.schema import LMOutput as LMOutput, Message as Message, MessageContent as MessageContent, ResponseSchema as ResponseSchema, ToolCall as ToolCall, ToolResult as ToolResult
7
+ from langchain_core.tools import Tool as Tool
8
+ from typing import Any
9
+
10
+ class LMRequestProcessor:
11
+ """A request processor to perform language models inference.
12
+
13
+ The `LMRequestProcessor` class handles the process of building a prompt, invoking a language model, and optionally
14
+ parsing the output. It combines a prompt builder, language model invoker, and an optional output parser to manage
15
+ the inference process in Gen AI applications.
16
+
17
+ Attributes:
18
+ prompt_builder (PromptBuilder): The prompt builder used to format the prompt.
19
+ lm_invoker (BaseLMInvoker): The language model invoker that handles the model inference.
20
+ output_parser (BaseOutputParser | None): The optional parser to process the model's output, if any.
21
+ tool_dict (dict[str, Tool]): A dictionary of tools provided to the language model to enable tool calling,
22
+ if any. The dictionary maps the tool name to the tools themselves.
23
+ """
24
+ prompt_builder: Incomplete
25
+ lm_invoker: Incomplete
26
+ output_parser: Incomplete
27
+ tool_dict: Incomplete
28
+ def __init__(self, prompt_builder: PromptBuilder, lm_invoker: BaseLMInvoker, output_parser: BaseOutputParser | None = None) -> None:
29
+ """Initializes a new instance of the LMRequestProcessor class.
30
+
31
+ Args:
32
+ prompt_builder (PromptBuilder): The prompt builder used to format the prompt.
33
+ lm_invoker (BaseLMInvoker): The language model invoker that handles the model inference.
34
+ output_parser (BaseOutputParser, optional): An optional parser to process the model's output.
35
+ Defaults to None.
36
+ """
37
+ def set_tools(self, tools: list[Tool]) -> None:
38
+ """Sets the tools for the LM invoker.
39
+
40
+ This method sets the tools for the LM invoker. Any existing tools will be replaced.
41
+
42
+ Args:
43
+ tools (list[Tool]): The list of tools to be used.
44
+ """
45
+ def clear_tools(self) -> None:
46
+ """Clears the tools for the LM invoker.
47
+
48
+ This method clears the tools for the LM invoker.
49
+ """
50
+ def set_response_schema(self, response_schema: ResponseSchema | None) -> None:
51
+ """Sets the response schema for the LM invoker.
52
+
53
+ This method sets the response schema for the LM invoker. Any existing response schema will be replaced.
54
+
55
+ Args:
56
+ response_schema (ResponseSchema | None): The response schema to be used.
57
+ """
58
+ def clear_response_schema(self) -> None:
59
+ """Clears the response schema for the LM invoker.
60
+
61
+ This method clears the response schema for the LM invoker.
62
+ """
63
+ async def process(self, prompt_kwargs: dict[str, Any] | None = None, history: list[Message] | None = None, extra_contents: list[MessageContent] | None = None, hyperparameters: dict[str, Any] | None = None, event_emitter: EventEmitter | None = None, auto_execute_tools: bool = True, max_lm_calls: int = 5, **kwargs: Any) -> Any:
64
+ """Processes a language model inference request.
65
+
66
+ This method processes the language model inference request as follows:
67
+ 1. Assembling the prompt using the provided keyword arguments.
68
+ 2. Invoking the language model with the assembled prompt and optional hyperparameters.
69
+ 3. If `auto_execute_tools` is True, the method will automatically execute tools if the LM output includes
70
+ tool calls.
71
+ 4. Optionally parsing the model's output using the output parser if provided. If the model output is an
72
+ LMOutput object, the output parser will process the `response` attribute of the LMOutput object.
73
+
74
+ Args:
75
+ prompt_kwargs (dict[str, Any], optional): Deprecated parameter for passing prompt kwargs.
76
+ Replaced by **kwargs. Defaults to None
77
+ history (list[Message] | None, optional): A list of conversation history to be included in the prompt.
78
+ Defaults to None.
79
+ extra_contents (list[MessageContent] | None, optional): A list of extra contents to be included in the
80
+ user message. Defaults to None.
81
+ hyperparameters (dict[str, Any] | None, optional): A dictionary of hyperparameters for the model invocation.
82
+ Defaults to None.
83
+ event_emitter (EventEmitter | None, optional): An event emitter for streaming model outputs.
84
+ Defaults to None.
85
+ auto_execute_tools (bool, optional): Whether to automatically execute tools if the LM invokes output
86
+ tool calls. Defaults to True.
87
+ max_lm_calls (int, optional): The maximum number of times the language model can be invoked
88
+ when `auto_execute_tools` is True. Defaults to 5.
89
+ **kwargs (Any): Keyword arguments that will be passed to format the prompt builder.
90
+ Values must be either a string or an object that can be serialized to a string.
91
+ Reserved keyword arguments that cannot be passed to the prompt builder include:
92
+ 1. `history`
93
+ 2. `extra_contents`
94
+ 3. `hyperparameters`
95
+ 4. `event_emitter`
96
+ 5. `auto_execute_tools`
97
+ 6. `max_lm_calls`
98
+
99
+ Returns:
100
+ Any: The result of the language model invocation, optionally parsed by the output parser.
101
+ """