mirascope 1.20.1__py3-none-any.whl → 1.21.1__py3-none-any.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.
@@ -0,0 +1,3639 @@
1
+ """Overrides the provider-specific call with the specified provider."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from collections.abc import AsyncIterable, Awaitable, Callable, Iterable
6
+ from enum import Enum
7
+ from functools import wraps
8
+ from typing import TYPE_CHECKING, Any, Literal, ParamSpec, TypeVar, overload
9
+
10
+ from pydantic import BaseModel
11
+
12
+ from ..core.base import BaseTool, BaseType, CommonCallParams
13
+ from ..core.base._utils import fn_is_async
14
+ from ..core.base.stream_config import StreamConfig
15
+ from ..core.base.types import LocalProvider, Provider
16
+ from ._context import _context
17
+ from .call_response import CallResponse
18
+ from .stream import Stream
19
+
20
+ if TYPE_CHECKING:
21
+ from ..core.anthropic import AnthropicCallParams
22
+ from ..core.azure import AzureCallParams
23
+ from ..core.bedrock import BedrockCallParams
24
+ from ..core.cohere import CohereCallParams
25
+ from ..core.gemini import GeminiCallParams
26
+ from ..core.google import GoogleCallParams
27
+ from ..core.groq import GroqCallParams
28
+ from ..core.litellm import LiteLLMCallParams
29
+ from ..core.mistral import MistralCallParams
30
+ from ..core.openai import OpenAICallParams
31
+ from ..core.vertex import VertexCallParams
32
+ from ..core.xai import XAICallParams
33
+ else:
34
+ AnthropicCallParams = AzureCallParams = BedrockCallParams = CohereCallParams = (
35
+ GeminiCallParams
36
+ ) = GoogleCallParams = GroqCallParams = LiteLLMCallParams = MistralCallParams = (
37
+ OpenAICallParams
38
+ ) = VertexCallParams = XAICallParams = None
39
+
40
+
41
+ _P = ParamSpec("_P")
42
+ _R = TypeVar("_R")
43
+ _ResponseModelT = TypeVar("_ResponseModelT", bound=BaseModel | BaseType | Enum)
44
+ _ParsedOutputT = TypeVar("_ParsedOutputT")
45
+
46
+
47
+ ### PASSTHROUGH ###
48
+ # Anthropic passthrough
49
+ @overload
50
+ def override(
51
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
52
+ *,
53
+ provider: Literal["anthropic"],
54
+ model: str,
55
+ stream: None = None,
56
+ tools: None = None,
57
+ response_model: None = None,
58
+ output_parser: None = None,
59
+ json_mode: bool | None = None,
60
+ client: Any = None, # noqa: ANN401
61
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
62
+ ) -> Callable[_P, Awaitable[_R]]: ...
63
+
64
+
65
+ @overload
66
+ def override(
67
+ provider_agnostic_call: Callable[_P, _R],
68
+ *,
69
+ provider: Literal["anthropic"],
70
+ model: str,
71
+ stream: None = None,
72
+ tools: None = None,
73
+ response_model: None = None,
74
+ output_parser: None = None,
75
+ json_mode: bool | None = None,
76
+ client: Any = None, # noqa: ANN401
77
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
78
+ ) -> Callable[_P, _R]: ...
79
+
80
+
81
+ # Azure passthrough
82
+ @overload
83
+ def override(
84
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
85
+ *,
86
+ provider: Literal["azure"],
87
+ model: str,
88
+ stream: None = None,
89
+ tools: None = None,
90
+ response_model: None = None,
91
+ output_parser: None = None,
92
+ json_mode: bool | None = None,
93
+ client: Any = None, # noqa: ANN401
94
+ call_params: CommonCallParams | AzureCallParams | None = None,
95
+ ) -> Callable[_P, Awaitable[_R]]: ...
96
+
97
+
98
+ @overload
99
+ def override(
100
+ provider_agnostic_call: Callable[_P, _R],
101
+ *,
102
+ provider: Literal["azure"],
103
+ model: str,
104
+ stream: None = None,
105
+ tools: None = None,
106
+ response_model: None = None,
107
+ output_parser: None = None,
108
+ json_mode: bool | None = None,
109
+ client: Any = None, # noqa: ANN401
110
+ call_params: CommonCallParams | AzureCallParams | None = None,
111
+ ) -> Callable[_P, _R]: ...
112
+
113
+
114
+ # Bedrock passthrough
115
+ @overload
116
+ def override(
117
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
118
+ *,
119
+ provider: Literal["bedrock"],
120
+ model: str,
121
+ stream: None = None,
122
+ tools: None = None,
123
+ response_model: None = None,
124
+ output_parser: None = None,
125
+ json_mode: bool | None = None,
126
+ client: Any = None, # noqa: ANN401
127
+ call_params: CommonCallParams | BedrockCallParams | None = None,
128
+ ) -> Callable[_P, Awaitable[_R]]: ...
129
+
130
+
131
+ @overload
132
+ def override(
133
+ provider_agnostic_call: Callable[_P, _R],
134
+ *,
135
+ provider: Literal["bedrock"],
136
+ model: str,
137
+ stream: None = None,
138
+ tools: None = None,
139
+ response_model: None = None,
140
+ output_parser: None = None,
141
+ json_mode: bool | None = None,
142
+ client: Any = None, # noqa: ANN401
143
+ call_params: CommonCallParams | BedrockCallParams | None = None,
144
+ ) -> Callable[_P, _R]: ...
145
+
146
+
147
+ # Cohere passthrough
148
+ @overload
149
+ def override(
150
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
151
+ *,
152
+ provider: Literal["cohere"],
153
+ model: str,
154
+ stream: None = None,
155
+ tools: None = None,
156
+ response_model: None = None,
157
+ output_parser: None = None,
158
+ json_mode: bool | None = None,
159
+ client: Any = None, # noqa: ANN401
160
+ call_params: CommonCallParams | CohereCallParams | None = None,
161
+ ) -> Callable[_P, Awaitable[_R]]: ...
162
+
163
+
164
+ @overload
165
+ def override(
166
+ provider_agnostic_call: Callable[_P, _R],
167
+ *,
168
+ provider: Literal["cohere"],
169
+ model: str,
170
+ stream: None = None,
171
+ tools: None = None,
172
+ response_model: None = None,
173
+ output_parser: None = None,
174
+ json_mode: bool | None = None,
175
+ client: Any = None, # noqa: ANN401
176
+ call_params: CommonCallParams | CohereCallParams | None = None,
177
+ ) -> Callable[_P, _R]: ...
178
+
179
+
180
+ # Gemini passthrough
181
+ @overload
182
+ def override(
183
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
184
+ *,
185
+ provider: Literal["gemini"],
186
+ model: str,
187
+ stream: None = None,
188
+ tools: None = None,
189
+ response_model: None = None,
190
+ output_parser: None = None,
191
+ json_mode: bool | None = None,
192
+ client: Any = None, # noqa: ANN401
193
+ call_params: CommonCallParams | GeminiCallParams | None = None,
194
+ ) -> Callable[_P, Awaitable[_R]]: ...
195
+
196
+
197
+ @overload
198
+ def override(
199
+ provider_agnostic_call: Callable[_P, _R],
200
+ *,
201
+ provider: Literal["gemini"],
202
+ model: str,
203
+ stream: None = None,
204
+ tools: None = None,
205
+ response_model: None = None,
206
+ output_parser: None = None,
207
+ json_mode: bool | None = None,
208
+ client: Any = None, # noqa: ANN401
209
+ call_params: CommonCallParams | GeminiCallParams | None = None,
210
+ ) -> Callable[_P, _R]: ...
211
+
212
+
213
+ # Google passthrough
214
+ @overload
215
+ def override(
216
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
217
+ *,
218
+ provider: Literal["google"],
219
+ model: str,
220
+ stream: None = None,
221
+ tools: None = None,
222
+ response_model: None = None,
223
+ output_parser: None = None,
224
+ json_mode: bool | None = None,
225
+ client: Any = None, # noqa: ANN401
226
+ call_params: CommonCallParams | GoogleCallParams | None = None,
227
+ ) -> Callable[_P, Awaitable[_R]]: ...
228
+
229
+
230
+ @overload
231
+ def override(
232
+ provider_agnostic_call: Callable[_P, _R],
233
+ *,
234
+ provider: Literal["google"],
235
+ model: str,
236
+ stream: None = None,
237
+ tools: None = None,
238
+ response_model: None = None,
239
+ output_parser: None = None,
240
+ json_mode: bool | None = None,
241
+ client: Any = None, # noqa: ANN401
242
+ call_params: CommonCallParams | GoogleCallParams | None = None,
243
+ ) -> Callable[_P, _R]: ...
244
+
245
+
246
+ # Groq passthrough
247
+ @overload
248
+ def override(
249
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
250
+ *,
251
+ provider: Literal["groq"],
252
+ model: str,
253
+ stream: None = None,
254
+ tools: None = None,
255
+ response_model: None = None,
256
+ output_parser: None = None,
257
+ json_mode: bool | None = None,
258
+ client: Any = None, # noqa: ANN401
259
+ call_params: CommonCallParams | GroqCallParams | None = None,
260
+ ) -> Callable[_P, Awaitable[_R]]: ...
261
+
262
+
263
+ @overload
264
+ def override(
265
+ provider_agnostic_call: Callable[_P, _R],
266
+ *,
267
+ provider: Literal["groq"],
268
+ model: str,
269
+ stream: None = None,
270
+ tools: None = None,
271
+ response_model: None = None,
272
+ output_parser: None = None,
273
+ json_mode: bool | None = None,
274
+ client: Any = None, # noqa: ANN401
275
+ call_params: CommonCallParams | GroqCallParams | None = None,
276
+ ) -> Callable[_P, _R]: ...
277
+
278
+
279
+ # LiteLLM passthrough
280
+ @overload
281
+ def override(
282
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
283
+ *,
284
+ provider: Literal["litellm"],
285
+ model: str,
286
+ stream: None = None,
287
+ tools: None = None,
288
+ response_model: None = None,
289
+ output_parser: None = None,
290
+ json_mode: bool | None = None,
291
+ client: Any = None, # noqa: ANN401
292
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
293
+ ) -> Callable[_P, Awaitable[_R]]: ...
294
+
295
+
296
+ @overload
297
+ def override(
298
+ provider_agnostic_call: Callable[_P, _R],
299
+ *,
300
+ provider: Literal["litellm"],
301
+ model: str,
302
+ stream: None = None,
303
+ tools: None = None,
304
+ response_model: None = None,
305
+ output_parser: None = None,
306
+ json_mode: bool | None = None,
307
+ client: Any = None, # noqa: ANN401
308
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
309
+ ) -> Callable[_P, _R]: ...
310
+
311
+
312
+ # Mistral passthrough
313
+ @overload
314
+ def override(
315
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
316
+ *,
317
+ provider: Literal["mistral"],
318
+ model: str,
319
+ stream: None = None,
320
+ tools: None = None,
321
+ response_model: None = None,
322
+ output_parser: None = None,
323
+ json_mode: bool | None = None,
324
+ client: Any = None, # noqa: ANN401
325
+ call_params: CommonCallParams | MistralCallParams | None = None,
326
+ ) -> Callable[_P, Awaitable[_R]]: ...
327
+
328
+
329
+ @overload
330
+ def override(
331
+ provider_agnostic_call: Callable[_P, _R],
332
+ *,
333
+ provider: Literal["mistral"],
334
+ model: str,
335
+ stream: None = None,
336
+ tools: None = None,
337
+ response_model: None = None,
338
+ output_parser: None = None,
339
+ json_mode: bool | None = None,
340
+ client: Any = None, # noqa: ANN401
341
+ call_params: CommonCallParams | MistralCallParams | None = None,
342
+ ) -> Callable[_P, _R]: ...
343
+
344
+
345
+ # OpenAI passthrough
346
+ @overload
347
+ def override(
348
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
349
+ *,
350
+ provider: Literal["openai"] | LocalProvider,
351
+ model: str,
352
+ stream: None = None,
353
+ tools: None = None,
354
+ response_model: None = None,
355
+ output_parser: None = None,
356
+ json_mode: bool | None = None,
357
+ client: Any = None, # noqa: ANN401
358
+ call_params: CommonCallParams | OpenAICallParams | None = None,
359
+ ) -> Callable[_P, Awaitable[_R]]: ...
360
+
361
+
362
+ @overload
363
+ def override(
364
+ provider_agnostic_call: Callable[_P, _R],
365
+ *,
366
+ provider: Literal["openai"] | LocalProvider,
367
+ model: str,
368
+ stream: None = None,
369
+ tools: None = None,
370
+ response_model: None = None,
371
+ output_parser: None = None,
372
+ json_mode: bool | None = None,
373
+ client: Any = None, # noqa: ANN401
374
+ call_params: CommonCallParams | OpenAICallParams | None = None,
375
+ ) -> Callable[_P, _R]: ...
376
+
377
+
378
+ # Vertex passthrough
379
+ @overload
380
+ def override(
381
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
382
+ *,
383
+ provider: Literal["vertex"],
384
+ model: str,
385
+ stream: None = None,
386
+ tools: None = None,
387
+ response_model: None = None,
388
+ output_parser: None = None,
389
+ json_mode: bool | None = None,
390
+ client: Any = None, # noqa: ANN401
391
+ call_params: CommonCallParams | VertexCallParams | None = None,
392
+ ) -> Callable[_P, Awaitable[_R]]: ...
393
+
394
+
395
+ @overload
396
+ def override(
397
+ provider_agnostic_call: Callable[_P, _R],
398
+ *,
399
+ provider: Literal["vertex"],
400
+ model: str,
401
+ stream: None = None,
402
+ tools: None = None,
403
+ response_model: None = None,
404
+ output_parser: None = None,
405
+ json_mode: bool | None = None,
406
+ client: Any = None, # noqa: ANN401
407
+ call_params: CommonCallParams | VertexCallParams | None = None,
408
+ ) -> Callable[_P, _R]: ...
409
+
410
+
411
+ # xAI passthrough
412
+ @overload
413
+ def override(
414
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
415
+ *,
416
+ provider: Literal["xai"],
417
+ model: str,
418
+ stream: None = None,
419
+ tools: None = None,
420
+ response_model: None = None,
421
+ output_parser: None = None,
422
+ json_mode: bool | None = None,
423
+ client: Any = None, # noqa: ANN401
424
+ call_params: CommonCallParams | XAICallParams | None = None,
425
+ ) -> Callable[_P, Awaitable[_R]]: ...
426
+
427
+
428
+ @overload
429
+ def override(
430
+ provider_agnostic_call: Callable[_P, _R],
431
+ *,
432
+ provider: Literal["xai"],
433
+ model: str,
434
+ stream: None = None,
435
+ tools: None = None,
436
+ response_model: None = None,
437
+ output_parser: None = None,
438
+ json_mode: bool | None = None,
439
+ client: Any = None, # noqa: ANN401
440
+ call_params: CommonCallParams | XAICallParams | None = None,
441
+ ) -> Callable[_P, _R]: ...
442
+
443
+
444
+ # Generic passthrough
445
+ @overload
446
+ def override(
447
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
448
+ *,
449
+ provider: None = None,
450
+ model: None = None,
451
+ stream: None = None,
452
+ tools: None = None,
453
+ response_model: None = None,
454
+ output_parser: None = None,
455
+ json_mode: bool | None = None,
456
+ client: Any = None, # noqa: ANN401
457
+ call_params: CommonCallParams | None = None,
458
+ ) -> Callable[_P, Awaitable[_R]]: ...
459
+
460
+
461
+ @overload
462
+ def override(
463
+ provider_agnostic_call: Callable[_P, _R],
464
+ *,
465
+ provider: None = None,
466
+ model: None = None,
467
+ stream: None = None,
468
+ tools: None = None,
469
+ response_model: None = None,
470
+ output_parser: None = None,
471
+ json_mode: bool | None = None,
472
+ client: Any = None, # noqa: ANN401
473
+ call_params: CommonCallParams | None = None,
474
+ ) -> Callable[_P, _R]: ...
475
+
476
+
477
+ ### CallResponse ###
478
+ # Anthropic CallResponse
479
+ @overload
480
+ def override( # pyright: ignore [reportOverlappingOverload]
481
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
482
+ *,
483
+ provider: Literal["anthropic"],
484
+ model: str,
485
+ stream: Literal[False],
486
+ tools: list[type[BaseTool] | Callable] | None = None,
487
+ response_model: None = None,
488
+ output_parser: None = None,
489
+ json_mode: bool | None = None,
490
+ client: Any = None, # noqa: ANN401
491
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
492
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
493
+
494
+
495
+ @overload
496
+ def override(
497
+ provider_agnostic_call: Callable[_P, _R],
498
+ *,
499
+ provider: Literal["anthropic"],
500
+ model: str,
501
+ stream: Literal[False],
502
+ tools: list[type[BaseTool] | Callable] | None = None,
503
+ response_model: None = None,
504
+ output_parser: None = None,
505
+ json_mode: bool | None = None,
506
+ client: Any = None, # noqa: ANN401
507
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
508
+ ) -> Callable[_P, CallResponse]: ...
509
+
510
+
511
+ # Azure CallResponse
512
+ @overload
513
+ def override( # pyright: ignore [reportOverlappingOverload]
514
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
515
+ *,
516
+ provider: Literal["azure"],
517
+ model: str,
518
+ stream: Literal[False],
519
+ tools: list[type[BaseTool] | Callable] | None = None,
520
+ response_model: None = None,
521
+ output_parser: None = None,
522
+ json_mode: bool | None = None,
523
+ client: Any = None, # noqa: ANN401
524
+ call_params: CommonCallParams | AzureCallParams | None = None,
525
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
526
+
527
+
528
+ @overload
529
+ def override(
530
+ provider_agnostic_call: Callable[_P, _R],
531
+ *,
532
+ provider: Literal["azure"],
533
+ model: str,
534
+ stream: Literal[False],
535
+ tools: list[type[BaseTool] | Callable] | None = None,
536
+ response_model: None = None,
537
+ output_parser: None = None,
538
+ json_mode: bool | None = None,
539
+ client: Any = None, # noqa: ANN401
540
+ call_params: CommonCallParams | AzureCallParams | None = None,
541
+ ) -> Callable[_P, CallResponse]: ...
542
+
543
+
544
+ # Bedrock CallResponse
545
+ @overload
546
+ def override( # pyright: ignore [reportOverlappingOverload]
547
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
548
+ *,
549
+ provider: Literal["bedrock"],
550
+ model: str,
551
+ stream: Literal[False],
552
+ tools: list[type[BaseTool] | Callable] | None = None,
553
+ response_model: None = None,
554
+ output_parser: None = None,
555
+ json_mode: bool | None = None,
556
+ client: Any = None, # noqa: ANN401
557
+ call_params: CommonCallParams | BedrockCallParams | None = None,
558
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
559
+
560
+
561
+ @overload
562
+ def override(
563
+ provider_agnostic_call: Callable[_P, _R],
564
+ *,
565
+ provider: Literal["bedrock"],
566
+ model: str,
567
+ stream: Literal[False],
568
+ tools: list[type[BaseTool] | Callable] | None = None,
569
+ response_model: None = None,
570
+ output_parser: None = None,
571
+ json_mode: bool | None = None,
572
+ client: Any = None, # noqa: ANN401
573
+ call_params: CommonCallParams | BedrockCallParams | None = None,
574
+ ) -> Callable[_P, CallResponse]: ...
575
+
576
+
577
+ # Cohere CallResponse
578
+ @overload
579
+ def override( # pyright: ignore [reportOverlappingOverload]
580
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
581
+ *,
582
+ provider: Literal["cohere"],
583
+ model: str,
584
+ stream: Literal[False],
585
+ tools: list[type[BaseTool] | Callable] | None = None,
586
+ response_model: None = None,
587
+ output_parser: None = None,
588
+ json_mode: bool | None = None,
589
+ client: Any = None, # noqa: ANN401
590
+ call_params: CommonCallParams | CohereCallParams | None = None,
591
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
592
+
593
+
594
+ @overload
595
+ def override(
596
+ provider_agnostic_call: Callable[_P, _R],
597
+ *,
598
+ provider: Literal["cohere"],
599
+ model: str,
600
+ stream: Literal[False],
601
+ tools: list[type[BaseTool] | Callable] | None = None,
602
+ response_model: None = None,
603
+ output_parser: None = None,
604
+ json_mode: bool | None = None,
605
+ client: Any = None, # noqa: ANN401
606
+ call_params: CommonCallParams | CohereCallParams | None = None,
607
+ ) -> Callable[_P, CallResponse]: ...
608
+
609
+
610
+ # Gemini CallResponse
611
+ @overload
612
+ def override( # pyright: ignore [reportOverlappingOverload]
613
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
614
+ *,
615
+ provider: Literal["gemini"],
616
+ model: str,
617
+ stream: Literal[False],
618
+ tools: list[type[BaseTool] | Callable] | None = None,
619
+ response_model: None = None,
620
+ output_parser: None = None,
621
+ json_mode: bool | None = None,
622
+ client: Any = None, # noqa: ANN401
623
+ call_params: CommonCallParams | GeminiCallParams | None = None,
624
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
625
+
626
+
627
+ @overload
628
+ def override(
629
+ provider_agnostic_call: Callable[_P, _R],
630
+ *,
631
+ provider: Literal["gemini"],
632
+ model: str,
633
+ stream: Literal[False],
634
+ tools: list[type[BaseTool] | Callable] | None = None,
635
+ response_model: None = None,
636
+ output_parser: None = None,
637
+ json_mode: bool | None = None,
638
+ client: Any = None, # noqa: ANN401
639
+ call_params: CommonCallParams | GeminiCallParams | None = None,
640
+ ) -> Callable[_P, CallResponse]: ...
641
+
642
+
643
+ # Google CallResponse
644
+ @overload
645
+ def override( # pyright: ignore [reportOverlappingOverload]
646
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
647
+ *,
648
+ provider: Literal["google"],
649
+ model: str,
650
+ stream: Literal[False],
651
+ tools: list[type[BaseTool] | Callable] | None = None,
652
+ response_model: None = None,
653
+ output_parser: None = None,
654
+ json_mode: bool | None = None,
655
+ client: Any = None, # noqa: ANN401
656
+ call_params: CommonCallParams | GoogleCallParams | None = None,
657
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
658
+
659
+
660
+ @overload
661
+ def override(
662
+ provider_agnostic_call: Callable[_P, _R],
663
+ *,
664
+ provider: Literal["google"],
665
+ model: str,
666
+ stream: Literal[False],
667
+ tools: list[type[BaseTool] | Callable] | None = None,
668
+ response_model: None = None,
669
+ output_parser: None = None,
670
+ json_mode: bool | None = None,
671
+ client: Any = None, # noqa: ANN401
672
+ call_params: CommonCallParams | GoogleCallParams | None = None,
673
+ ) -> Callable[_P, CallResponse]: ...
674
+
675
+
676
+ # Groq CallResponse
677
+ @overload
678
+ def override( # pyright: ignore [reportOverlappingOverload]
679
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
680
+ *,
681
+ provider: Literal["groq"],
682
+ model: str,
683
+ stream: Literal[False],
684
+ tools: list[type[BaseTool] | Callable] | None = None,
685
+ response_model: None = None,
686
+ output_parser: None = None,
687
+ json_mode: bool | None = None,
688
+ client: Any = None, # noqa: ANN401
689
+ call_params: CommonCallParams | GroqCallParams | None = None,
690
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
691
+
692
+
693
+ @overload
694
+ def override(
695
+ provider_agnostic_call: Callable[_P, _R],
696
+ *,
697
+ provider: Literal["groq"],
698
+ model: str,
699
+ stream: Literal[False],
700
+ tools: list[type[BaseTool] | Callable] | None = None,
701
+ response_model: None = None,
702
+ output_parser: None = None,
703
+ json_mode: bool | None = None,
704
+ client: Any = None, # noqa: ANN401
705
+ call_params: CommonCallParams | GroqCallParams | None = None,
706
+ ) -> Callable[_P, CallResponse]: ...
707
+
708
+
709
+ # LiteLLM CallResponse
710
+ @overload
711
+ def override( # pyright: ignore [reportOverlappingOverload]
712
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
713
+ *,
714
+ provider: Literal["litellm"],
715
+ model: str,
716
+ stream: Literal[False],
717
+ tools: list[type[BaseTool] | Callable] | None = None,
718
+ response_model: None = None,
719
+ output_parser: None = None,
720
+ json_mode: bool | None = None,
721
+ client: Any = None, # noqa: ANN401
722
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
723
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
724
+
725
+
726
+ @overload
727
+ def override(
728
+ provider_agnostic_call: Callable[_P, _R],
729
+ *,
730
+ provider: Literal["litellm"],
731
+ model: str,
732
+ stream: Literal[False],
733
+ tools: list[type[BaseTool] | Callable] | None = None,
734
+ response_model: None = None,
735
+ output_parser: None = None,
736
+ json_mode: bool | None = None,
737
+ client: Any = None, # noqa: ANN401
738
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
739
+ ) -> Callable[_P, CallResponse]: ...
740
+
741
+
742
+ # Mistral CallResponse
743
+ @overload
744
+ def override( # pyright: ignore [reportOverlappingOverload]
745
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
746
+ *,
747
+ provider: Literal["mistral"],
748
+ model: str,
749
+ stream: Literal[False],
750
+ tools: list[type[BaseTool] | Callable] | None = None,
751
+ response_model: None = None,
752
+ output_parser: None = None,
753
+ json_mode: bool | None = None,
754
+ client: Any = None, # noqa: ANN401
755
+ call_params: CommonCallParams | MistralCallParams | None = None,
756
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
757
+
758
+
759
+ @overload
760
+ def override(
761
+ provider_agnostic_call: Callable[_P, _R],
762
+ *,
763
+ provider: Literal["mistral"],
764
+ model: str,
765
+ stream: Literal[False],
766
+ tools: list[type[BaseTool] | Callable] | None = None,
767
+ response_model: None = None,
768
+ output_parser: None = None,
769
+ json_mode: bool | None = None,
770
+ client: Any = None, # noqa: ANN401
771
+ call_params: CommonCallParams | MistralCallParams | None = None,
772
+ ) -> Callable[_P, CallResponse]: ...
773
+
774
+
775
+ # OpenAI CallResponse
776
+ @overload
777
+ def override( # pyright: ignore [reportOverlappingOverload]
778
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
779
+ *,
780
+ provider: Literal["openai"] | LocalProvider,
781
+ model: str,
782
+ stream: Literal[False],
783
+ tools: list[type[BaseTool] | Callable] | None = None,
784
+ response_model: None = None,
785
+ output_parser: None = None,
786
+ json_mode: bool | None = None,
787
+ client: Any = None, # noqa: ANN401
788
+ call_params: CommonCallParams | OpenAICallParams | None = None,
789
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
790
+
791
+
792
+ @overload
793
+ def override(
794
+ provider_agnostic_call: Callable[_P, _R],
795
+ *,
796
+ provider: Literal["openai"] | LocalProvider,
797
+ model: str,
798
+ stream: Literal[False],
799
+ tools: list[type[BaseTool] | Callable] | None = None,
800
+ response_model: None = None,
801
+ output_parser: None = None,
802
+ json_mode: bool | None = None,
803
+ client: Any = None, # noqa: ANN401
804
+ call_params: CommonCallParams | OpenAICallParams | None = None,
805
+ ) -> Callable[_P, CallResponse]: ...
806
+
807
+
808
+ # Vertex CallResponse
809
+ @overload
810
+ def override( # pyright: ignore [reportOverlappingOverload]
811
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
812
+ *,
813
+ provider: Literal["vertex"],
814
+ model: str,
815
+ stream: Literal[False],
816
+ tools: list[type[BaseTool] | Callable] | None = None,
817
+ response_model: None = None,
818
+ output_parser: None = None,
819
+ json_mode: bool | None = None,
820
+ client: Any = None, # noqa: ANN401
821
+ call_params: CommonCallParams | VertexCallParams | None = None,
822
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
823
+
824
+
825
+ @overload
826
+ def override(
827
+ provider_agnostic_call: Callable[_P, _R],
828
+ *,
829
+ provider: Literal["vertex"],
830
+ model: str,
831
+ stream: Literal[False],
832
+ tools: list[type[BaseTool] | Callable] | None = None,
833
+ response_model: None = None,
834
+ output_parser: None = None,
835
+ json_mode: bool | None = None,
836
+ client: Any = None, # noqa: ANN401
837
+ call_params: CommonCallParams | VertexCallParams | None = None,
838
+ ) -> Callable[_P, CallResponse]: ...
839
+
840
+
841
+ # XAI CallResponse
842
+ @overload
843
+ def override( # pyright: ignore [reportOverlappingOverload]
844
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
845
+ *,
846
+ provider: Literal["xai"],
847
+ model: str,
848
+ stream: Literal[False],
849
+ tools: list[type[BaseTool] | Callable] | None = None,
850
+ response_model: None = None,
851
+ output_parser: None = None,
852
+ json_mode: bool | None = None,
853
+ client: Any = None, # noqa: ANN401
854
+ call_params: CommonCallParams | XAICallParams | None = None,
855
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
856
+
857
+
858
+ @overload
859
+ def override(
860
+ provider_agnostic_call: Callable[_P, _R],
861
+ *,
862
+ provider: Literal["xai"],
863
+ model: str,
864
+ stream: Literal[False],
865
+ tools: list[type[BaseTool] | Callable] | None = None,
866
+ response_model: None = None,
867
+ output_parser: None = None,
868
+ json_mode: bool | None = None,
869
+ client: Any = None, # noqa: ANN401
870
+ call_params: CommonCallParams | XAICallParams | None = None,
871
+ ) -> Callable[_P, CallResponse]: ...
872
+
873
+
874
+ # Generic CallResponse
875
+ @overload
876
+ def override( # pyright: ignore [reportOverlappingOverload]
877
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
878
+ *,
879
+ provider: None = None,
880
+ model: str | None = None,
881
+ stream: Literal[False],
882
+ tools: list[type[BaseTool] | Callable] | None = None,
883
+ response_model: None = None,
884
+ output_parser: None = None,
885
+ json_mode: bool | None = None,
886
+ client: Any = None, # noqa: ANN401
887
+ call_params: CommonCallParams | None = None,
888
+ ) -> Callable[_P, Awaitable[CallResponse]]: ...
889
+
890
+
891
+ @overload
892
+ def override(
893
+ provider_agnostic_call: Callable[_P, _R],
894
+ *,
895
+ provider: None = None,
896
+ model: str | None = None,
897
+ stream: Literal[False],
898
+ tools: list[type[BaseTool] | Callable] | None = None,
899
+ response_model: None = None,
900
+ output_parser: None = None,
901
+ json_mode: bool | None = None,
902
+ client: Any = None, # noqa: ANN401
903
+ call_params: CommonCallParams | None = None,
904
+ ) -> Callable[_P, CallResponse]: ...
905
+
906
+
907
+ ### Stream ###
908
+ # Anthropic Stream
909
+ @overload
910
+ def override( # pyright: ignore [reportOverlappingOverload]
911
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
912
+ *,
913
+ provider: Literal["anthropic"],
914
+ model: str,
915
+ stream: Literal[True],
916
+ tools: list[type[BaseTool] | Callable] | None = None,
917
+ response_model: None = None,
918
+ output_parser: None = None,
919
+ json_mode: bool | None = None,
920
+ client: Any = None, # noqa: ANN401
921
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
922
+ ) -> Callable[_P, Awaitable[Stream]]: ...
923
+
924
+
925
+ @overload
926
+ def override(
927
+ provider_agnostic_call: Callable[_P, _R],
928
+ *,
929
+ provider: Literal["anthropic"],
930
+ model: str,
931
+ stream: Literal[True],
932
+ tools: list[type[BaseTool] | Callable] | None = None,
933
+ response_model: None = None,
934
+ output_parser: None = None,
935
+ json_mode: bool | None = None,
936
+ client: Any = None, # noqa: ANN401
937
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
938
+ ) -> Callable[_P, Stream]: ...
939
+
940
+
941
+ # Azure Stream
942
+ @overload
943
+ def override( # pyright: ignore [reportOverlappingOverload]
944
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
945
+ *,
946
+ provider: Literal["azure"],
947
+ model: str,
948
+ stream: Literal[True],
949
+ tools: list[type[BaseTool] | Callable] | None = None,
950
+ response_model: None = None,
951
+ output_parser: None = None,
952
+ json_mode: bool | None = None,
953
+ client: Any = None, # noqa: ANN401
954
+ call_params: CommonCallParams | AzureCallParams | None = None,
955
+ ) -> Callable[_P, Awaitable[Stream]]: ...
956
+
957
+
958
+ @overload
959
+ def override(
960
+ provider_agnostic_call: Callable[_P, _R],
961
+ *,
962
+ provider: Literal["azure"],
963
+ model: str,
964
+ stream: Literal[True],
965
+ tools: list[type[BaseTool] | Callable] | None = None,
966
+ response_model: None = None,
967
+ output_parser: None = None,
968
+ json_mode: bool | None = None,
969
+ client: Any = None, # noqa: ANN401
970
+ call_params: CommonCallParams | AzureCallParams | None = None,
971
+ ) -> Callable[_P, Stream]: ...
972
+
973
+
974
+ # Bedrock Stream
975
+ @overload
976
+ def override( # pyright: ignore [reportOverlappingOverload]
977
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
978
+ *,
979
+ provider: Literal["bedrock"],
980
+ model: str,
981
+ stream: Literal[True],
982
+ tools: list[type[BaseTool] | Callable] | None = None,
983
+ response_model: None = None,
984
+ output_parser: None = None,
985
+ json_mode: bool | None = None,
986
+ client: Any = None, # noqa: ANN401
987
+ call_params: CommonCallParams | BedrockCallParams | None = None,
988
+ ) -> Callable[_P, Awaitable[Stream]]: ...
989
+
990
+
991
+ @overload
992
+ def override(
993
+ provider_agnostic_call: Callable[_P, _R],
994
+ *,
995
+ provider: Literal["bedrock"],
996
+ model: str,
997
+ stream: Literal[True],
998
+ tools: list[type[BaseTool] | Callable] | None = None,
999
+ response_model: None = None,
1000
+ output_parser: None = None,
1001
+ json_mode: bool | None = None,
1002
+ client: Any = None, # noqa: ANN401
1003
+ call_params: CommonCallParams | BedrockCallParams | None = None,
1004
+ ) -> Callable[_P, Stream]: ...
1005
+
1006
+
1007
+ # Cohere Stream
1008
+ @overload
1009
+ def override( # pyright: ignore [reportOverlappingOverload]
1010
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1011
+ *,
1012
+ provider: Literal["cohere"],
1013
+ model: str,
1014
+ stream: Literal[True],
1015
+ tools: list[type[BaseTool] | Callable] | None = None,
1016
+ response_model: None = None,
1017
+ output_parser: None = None,
1018
+ json_mode: bool | None = None,
1019
+ client: Any = None, # noqa: ANN401
1020
+ call_params: CommonCallParams | CohereCallParams | None = None,
1021
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1022
+
1023
+
1024
+ @overload
1025
+ def override(
1026
+ provider_agnostic_call: Callable[_P, _R],
1027
+ *,
1028
+ provider: Literal["cohere"],
1029
+ model: str,
1030
+ stream: Literal[True],
1031
+ tools: list[type[BaseTool] | Callable] | None = None,
1032
+ response_model: None = None,
1033
+ output_parser: None = None,
1034
+ json_mode: bool | None = None,
1035
+ client: Any = None, # noqa: ANN401
1036
+ call_params: CommonCallParams | CohereCallParams | None = None,
1037
+ ) -> Callable[_P, Stream]: ...
1038
+
1039
+
1040
+ # Gemini Stream
1041
+ @overload
1042
+ def override( # pyright: ignore [reportOverlappingOverload]
1043
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1044
+ *,
1045
+ provider: Literal["gemini"],
1046
+ model: str,
1047
+ stream: Literal[True],
1048
+ tools: list[type[BaseTool] | Callable] | None = None,
1049
+ response_model: None = None,
1050
+ output_parser: None = None,
1051
+ json_mode: bool | None = None,
1052
+ client: Any = None, # noqa: ANN401
1053
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1054
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1055
+
1056
+
1057
+ @overload
1058
+ def override(
1059
+ provider_agnostic_call: Callable[_P, _R],
1060
+ *,
1061
+ provider: Literal["gemini"],
1062
+ model: str,
1063
+ stream: Literal[True],
1064
+ tools: list[type[BaseTool] | Callable] | None = None,
1065
+ response_model: None = None,
1066
+ output_parser: None = None,
1067
+ json_mode: bool | None = None,
1068
+ client: Any = None, # noqa: ANN401
1069
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1070
+ ) -> Callable[_P, Stream]: ...
1071
+
1072
+
1073
+ # Google Stream
1074
+ @overload
1075
+ def override( # pyright: ignore [reportOverlappingOverload]
1076
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1077
+ *,
1078
+ provider: Literal["google"],
1079
+ model: str,
1080
+ stream: Literal[True],
1081
+ tools: list[type[BaseTool] | Callable] | None = None,
1082
+ response_model: None = None,
1083
+ output_parser: None = None,
1084
+ json_mode: bool | None = None,
1085
+ client: Any = None, # noqa: ANN401
1086
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1087
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1088
+
1089
+
1090
+ @overload
1091
+ def override(
1092
+ provider_agnostic_call: Callable[_P, _R],
1093
+ *,
1094
+ provider: Literal["google"],
1095
+ model: str,
1096
+ stream: Literal[True],
1097
+ tools: list[type[BaseTool] | Callable] | None = None,
1098
+ response_model: None = None,
1099
+ output_parser: None = None,
1100
+ json_mode: bool | None = None,
1101
+ client: Any = None, # noqa: ANN401
1102
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1103
+ ) -> Callable[_P, Stream]: ...
1104
+
1105
+
1106
+ # Groq Stream
1107
+ @overload
1108
+ def override( # pyright: ignore [reportOverlappingOverload]
1109
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1110
+ *,
1111
+ provider: Literal["groq"],
1112
+ model: str,
1113
+ stream: Literal[True],
1114
+ tools: list[type[BaseTool] | Callable] | None = None,
1115
+ response_model: None = None,
1116
+ output_parser: None = None,
1117
+ json_mode: bool | None = None,
1118
+ client: Any = None, # noqa: ANN401
1119
+ call_params: CommonCallParams | GroqCallParams | None = None,
1120
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1121
+
1122
+
1123
+ @overload
1124
+ def override(
1125
+ provider_agnostic_call: Callable[_P, _R],
1126
+ *,
1127
+ provider: Literal["groq"],
1128
+ model: str,
1129
+ stream: Literal[True],
1130
+ tools: list[type[BaseTool] | Callable] | None = None,
1131
+ response_model: None = None,
1132
+ output_parser: None = None,
1133
+ json_mode: bool | None = None,
1134
+ client: Any = None, # noqa: ANN401
1135
+ call_params: CommonCallParams | GroqCallParams | None = None,
1136
+ ) -> Callable[_P, Stream]: ...
1137
+
1138
+
1139
+ # LiteLLM Stream
1140
+ @overload
1141
+ def override( # pyright: ignore [reportOverlappingOverload]
1142
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1143
+ *,
1144
+ provider: Literal["litellm"],
1145
+ model: str,
1146
+ stream: Literal[True],
1147
+ tools: list[type[BaseTool] | Callable] | None = None,
1148
+ response_model: None = None,
1149
+ output_parser: None = None,
1150
+ json_mode: bool | None = None,
1151
+ client: Any = None, # noqa: ANN401
1152
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
1153
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1154
+
1155
+
1156
+ @overload
1157
+ def override(
1158
+ provider_agnostic_call: Callable[_P, _R],
1159
+ *,
1160
+ provider: Literal["litellm"],
1161
+ model: str,
1162
+ stream: Literal[True],
1163
+ tools: list[type[BaseTool] | Callable] | None = None,
1164
+ response_model: None = None,
1165
+ output_parser: None = None,
1166
+ json_mode: bool | None = None,
1167
+ client: Any = None, # noqa: ANN401
1168
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
1169
+ ) -> Callable[_P, Stream]: ...
1170
+
1171
+
1172
+ # Mistral Stream
1173
+ @overload
1174
+ def override( # pyright: ignore [reportOverlappingOverload]
1175
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1176
+ *,
1177
+ provider: Literal["mistral"],
1178
+ model: str,
1179
+ stream: Literal[True],
1180
+ tools: list[type[BaseTool] | Callable] | None = None,
1181
+ response_model: None = None,
1182
+ output_parser: None = None,
1183
+ json_mode: bool | None = None,
1184
+ client: Any = None, # noqa: ANN401
1185
+ call_params: CommonCallParams | MistralCallParams | None = None,
1186
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1187
+
1188
+
1189
+ @overload
1190
+ def override(
1191
+ provider_agnostic_call: Callable[_P, _R],
1192
+ *,
1193
+ provider: Literal["mistral"],
1194
+ model: str,
1195
+ stream: Literal[True],
1196
+ tools: list[type[BaseTool] | Callable] | None = None,
1197
+ response_model: None = None,
1198
+ output_parser: None = None,
1199
+ json_mode: bool | None = None,
1200
+ client: Any = None, # noqa: ANN401
1201
+ call_params: CommonCallParams | MistralCallParams | None = None,
1202
+ ) -> Callable[_P, Stream]: ...
1203
+
1204
+
1205
+ # OpenAI Stream
1206
+ @overload
1207
+ def override( # pyright: ignore [reportOverlappingOverload]
1208
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1209
+ *,
1210
+ provider: Literal["openai"],
1211
+ model: str,
1212
+ stream: Literal[True],
1213
+ tools: list[type[BaseTool] | Callable] | None = None,
1214
+ response_model: None = None,
1215
+ output_parser: None = None,
1216
+ json_mode: bool | None = None,
1217
+ client: Any = None, # noqa: ANN401
1218
+ call_params: CommonCallParams | OpenAICallParams | None = None,
1219
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1220
+
1221
+
1222
+ @overload
1223
+ def override(
1224
+ provider_agnostic_call: Callable[_P, _R],
1225
+ *,
1226
+ provider: Literal["openai"],
1227
+ model: str,
1228
+ stream: Literal[True],
1229
+ tools: list[type[BaseTool] | Callable] | None = None,
1230
+ response_model: None = None,
1231
+ output_parser: None = None,
1232
+ json_mode: bool | None = None,
1233
+ client: Any = None, # noqa: ANN401
1234
+ call_params: CommonCallParams | OpenAICallParams | None = None,
1235
+ ) -> Callable[_P, Stream]: ...
1236
+
1237
+
1238
+ # Vertex Stream
1239
+ @overload
1240
+ def override( # pyright: ignore [reportOverlappingOverload]
1241
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1242
+ *,
1243
+ provider: Literal["vertex"],
1244
+ model: str,
1245
+ stream: Literal[True],
1246
+ tools: list[type[BaseTool] | Callable] | None = None,
1247
+ response_model: None = None,
1248
+ output_parser: None = None,
1249
+ json_mode: bool | None = None,
1250
+ client: Any = None, # noqa: ANN401
1251
+ call_params: CommonCallParams | VertexCallParams | None = None,
1252
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1253
+
1254
+
1255
+ @overload
1256
+ def override(
1257
+ provider_agnostic_call: Callable[_P, _R],
1258
+ *,
1259
+ provider: Literal["vertex"],
1260
+ model: str,
1261
+ stream: Literal[True],
1262
+ tools: list[type[BaseTool] | Callable] | None = None,
1263
+ response_model: None = None,
1264
+ output_parser: None = None,
1265
+ json_mode: bool | None = None,
1266
+ client: Any = None, # noqa: ANN401
1267
+ call_params: CommonCallParams | VertexCallParams | None = None,
1268
+ ) -> Callable[_P, Stream]: ...
1269
+
1270
+
1271
+ # XAI Stream
1272
+ @overload
1273
+ def override( # pyright: ignore [reportOverlappingOverload]
1274
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1275
+ *,
1276
+ provider: Literal["xai"],
1277
+ model: str,
1278
+ stream: Literal[True],
1279
+ tools: list[type[BaseTool] | Callable] | None = None,
1280
+ response_model: None = None,
1281
+ output_parser: None = None,
1282
+ json_mode: bool | None = None,
1283
+ client: Any = None, # noqa: ANN401
1284
+ call_params: CommonCallParams | XAICallParams | None = None,
1285
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1286
+
1287
+
1288
+ @overload
1289
+ def override(
1290
+ provider_agnostic_call: Callable[_P, _R],
1291
+ *,
1292
+ provider: Literal["xai"],
1293
+ model: str,
1294
+ stream: Literal[True],
1295
+ tools: list[type[BaseTool] | Callable] | None = None,
1296
+ response_model: None = None,
1297
+ output_parser: None = None,
1298
+ json_mode: bool | None = None,
1299
+ client: Any = None, # noqa: ANN401
1300
+ call_params: CommonCallParams | XAICallParams | None = None,
1301
+ ) -> Callable[_P, Stream]: ...
1302
+
1303
+
1304
+ # Generic Stream (for when provider is None or a LocalProvider)
1305
+ @overload
1306
+ def override( # pyright: ignore [reportOverlappingOverload]
1307
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1308
+ *,
1309
+ provider: LocalProvider | None = None,
1310
+ model: str | None = None,
1311
+ stream: Literal[True],
1312
+ tools: list[type[BaseTool] | Callable] | None = None,
1313
+ response_model: None = None,
1314
+ output_parser: None = None,
1315
+ json_mode: bool | None = None,
1316
+ client: Any = None, # noqa: ANN401
1317
+ call_params: CommonCallParams | None = None,
1318
+ ) -> Callable[_P, Awaitable[Stream]]: ...
1319
+
1320
+
1321
+ @overload
1322
+ def override(
1323
+ provider_agnostic_call: Callable[_P, _R],
1324
+ *,
1325
+ provider: LocalProvider | None = None,
1326
+ model: str | None = None,
1327
+ stream: Literal[True],
1328
+ tools: list[type[BaseTool] | Callable] | None = None,
1329
+ response_model: None = None,
1330
+ output_parser: None = None,
1331
+ json_mode: bool | None = None,
1332
+ client: Any = None, # noqa: ANN401
1333
+ call_params: CommonCallParams | None = None,
1334
+ ) -> Callable[_P, Stream]: ...
1335
+
1336
+
1337
+ ### _ResponseModelT ###
1338
+ # Anthropic _ResponseModelT
1339
+ @overload
1340
+ def override( # pyright: ignore [reportOverlappingOverload]
1341
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1342
+ *,
1343
+ provider: Literal["anthropic"],
1344
+ model: str,
1345
+ stream: Literal[None, False] = None,
1346
+ tools: Literal[None] = None,
1347
+ response_model: type[_ResponseModelT],
1348
+ output_parser: Literal[None] = None,
1349
+ json_mode: bool | None = None,
1350
+ client: Any = None, # noqa: ANN401
1351
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
1352
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1353
+
1354
+
1355
+ @overload
1356
+ def override(
1357
+ provider_agnostic_call: Callable[_P, _R],
1358
+ *,
1359
+ provider: Literal["anthropic"],
1360
+ model: str,
1361
+ stream: Literal[None, False] = None,
1362
+ tools: Literal[None] = None,
1363
+ response_model: type[_ResponseModelT],
1364
+ output_parser: Literal[None] = None,
1365
+ json_mode: bool | None = None,
1366
+ client: Any = None, # noqa: ANN401
1367
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
1368
+ ) -> Callable[_P, _ResponseModelT]: ...
1369
+
1370
+
1371
+ # Azure _ResponseModelT
1372
+ @overload
1373
+ def override( # pyright: ignore [reportOverlappingOverload]
1374
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1375
+ *,
1376
+ provider: Literal["azure"],
1377
+ model: str,
1378
+ stream: Literal[None, False] = None,
1379
+ tools: Literal[None] = None,
1380
+ response_model: type[_ResponseModelT],
1381
+ output_parser: Literal[None] = None,
1382
+ json_mode: bool | None = None,
1383
+ client: Any = None, # noqa: ANN401
1384
+ call_params: CommonCallParams | AzureCallParams | None = None,
1385
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1386
+
1387
+
1388
+ @overload
1389
+ def override(
1390
+ provider_agnostic_call: Callable[_P, _R],
1391
+ *,
1392
+ provider: Literal["azure"],
1393
+ model: str,
1394
+ stream: Literal[None, False] = None,
1395
+ tools: Literal[None] = None,
1396
+ response_model: type[_ResponseModelT],
1397
+ output_parser: Literal[None] = None,
1398
+ json_mode: bool | None = None,
1399
+ client: Any = None, # noqa: ANN401
1400
+ call_params: CommonCallParams | AzureCallParams | None = None,
1401
+ ) -> Callable[_P, _ResponseModelT]: ...
1402
+
1403
+
1404
+ # Bedrock _ResponseModelT
1405
+ @overload
1406
+ def override( # pyright: ignore [reportOverlappingOverload]
1407
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1408
+ *,
1409
+ provider: Literal["bedrock"],
1410
+ model: str,
1411
+ stream: Literal[None, False] = None,
1412
+ tools: Literal[None] = None,
1413
+ response_model: type[_ResponseModelT],
1414
+ output_parser: Literal[None] = None,
1415
+ json_mode: bool | None = None,
1416
+ client: Any = None, # noqa: ANN401
1417
+ call_params: CommonCallParams | BedrockCallParams | None = None,
1418
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1419
+
1420
+
1421
+ @overload
1422
+ def override(
1423
+ provider_agnostic_call: Callable[_P, _R],
1424
+ *,
1425
+ provider: Literal["bedrock"],
1426
+ model: str,
1427
+ stream: Literal[None, False] = None,
1428
+ tools: Literal[None] = None,
1429
+ response_model: type[_ResponseModelT],
1430
+ output_parser: Literal[None] = None,
1431
+ json_mode: bool | None = None,
1432
+ client: Any = None, # noqa: ANN401
1433
+ call_params: CommonCallParams | BedrockCallParams | None = None,
1434
+ ) -> Callable[_P, _ResponseModelT]: ...
1435
+
1436
+
1437
+ # Cohere _ResponseModelT
1438
+ @overload
1439
+ def override( # pyright: ignore [reportOverlappingOverload]
1440
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1441
+ *,
1442
+ provider: Literal["cohere"],
1443
+ model: str,
1444
+ stream: Literal[None, False] = None,
1445
+ tools: Literal[None] = None,
1446
+ response_model: type[_ResponseModelT],
1447
+ output_parser: Literal[None] = None,
1448
+ json_mode: bool | None = None,
1449
+ client: Any = None, # noqa: ANN401
1450
+ call_params: CommonCallParams | CohereCallParams | None = None,
1451
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1452
+
1453
+
1454
+ @overload
1455
+ def override(
1456
+ provider_agnostic_call: Callable[_P, _R],
1457
+ *,
1458
+ provider: Literal["cohere"],
1459
+ model: str,
1460
+ stream: Literal[None, False] = None,
1461
+ tools: Literal[None] = None,
1462
+ response_model: type[_ResponseModelT],
1463
+ output_parser: Literal[None] = None,
1464
+ json_mode: bool | None = None,
1465
+ client: Any = None, # noqa: ANN401
1466
+ call_params: CommonCallParams | CohereCallParams | None = None,
1467
+ ) -> Callable[_P, _ResponseModelT]: ...
1468
+
1469
+
1470
+ # Gemini _ResponseModelT
1471
+ @overload
1472
+ def override( # pyright: ignore [reportOverlappingOverload]
1473
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1474
+ *,
1475
+ provider: Literal["gemini"],
1476
+ model: str,
1477
+ stream: Literal[None, False] = None,
1478
+ tools: Literal[None] = None,
1479
+ response_model: type[_ResponseModelT],
1480
+ output_parser: Literal[None] = None,
1481
+ json_mode: bool | None = None,
1482
+ client: Any = None, # noqa: ANN401
1483
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1484
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1485
+
1486
+
1487
+ @overload
1488
+ def override(
1489
+ provider_agnostic_call: Callable[_P, _R],
1490
+ *,
1491
+ provider: Literal["gemini"],
1492
+ model: str,
1493
+ stream: Literal[None, False] = None,
1494
+ tools: Literal[None] = None,
1495
+ response_model: type[_ResponseModelT],
1496
+ output_parser: Literal[None] = None,
1497
+ json_mode: bool | None = None,
1498
+ client: Any = None, # noqa: ANN401
1499
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1500
+ ) -> Callable[_P, _ResponseModelT]: ...
1501
+
1502
+
1503
+ # Google _ResponseModelT
1504
+ @overload
1505
+ def override( # pyright: ignore [reportOverlappingOverload]
1506
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1507
+ *,
1508
+ provider: Literal["google"],
1509
+ model: str,
1510
+ stream: Literal[None, False] = None,
1511
+ tools: Literal[None] = None,
1512
+ response_model: type[_ResponseModelT],
1513
+ output_parser: Literal[None] = None,
1514
+ json_mode: bool | None = None,
1515
+ client: Any = None, # noqa: ANN401
1516
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1517
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1518
+
1519
+
1520
+ @overload
1521
+ def override(
1522
+ provider_agnostic_call: Callable[_P, _R],
1523
+ *,
1524
+ provider: Literal["google"],
1525
+ model: str,
1526
+ stream: Literal[None, False] = None,
1527
+ tools: Literal[None] = None,
1528
+ response_model: type[_ResponseModelT],
1529
+ output_parser: Literal[None] = None,
1530
+ json_mode: bool | None = None,
1531
+ client: Any = None, # noqa: ANN401
1532
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1533
+ ) -> Callable[_P, _ResponseModelT]: ...
1534
+
1535
+
1536
+ # Groq _ResponseModelT
1537
+ @overload
1538
+ def override( # pyright: ignore [reportOverlappingOverload]
1539
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1540
+ *,
1541
+ provider: Literal["groq"],
1542
+ model: str,
1543
+ stream: Literal[None, False] = None,
1544
+ tools: Literal[None] = None,
1545
+ response_model: type[_ResponseModelT],
1546
+ output_parser: Literal[None] = None,
1547
+ json_mode: bool | None = None,
1548
+ client: Any = None, # noqa: ANN401
1549
+ call_params: CommonCallParams | GroqCallParams | None = None,
1550
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1551
+
1552
+
1553
+ @overload
1554
+ def override(
1555
+ provider_agnostic_call: Callable[_P, _R],
1556
+ *,
1557
+ provider: Literal["groq"],
1558
+ model: str,
1559
+ stream: Literal[None, False] = None,
1560
+ tools: Literal[None] = None,
1561
+ response_model: type[_ResponseModelT],
1562
+ output_parser: Literal[None] = None,
1563
+ json_mode: bool | None = None,
1564
+ client: Any = None, # noqa: ANN401
1565
+ call_params: CommonCallParams | GroqCallParams | None = None,
1566
+ ) -> Callable[_P, _ResponseModelT]: ...
1567
+
1568
+
1569
+ # LiteLLM _ResponseModelT
1570
+ @overload
1571
+ def override( # pyright: ignore [reportOverlappingOverload]
1572
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1573
+ *,
1574
+ provider: Literal["litellm"],
1575
+ model: str,
1576
+ stream: Literal[None, False] = None,
1577
+ tools: Literal[None] = None,
1578
+ response_model: type[_ResponseModelT],
1579
+ output_parser: Literal[None] = None,
1580
+ json_mode: bool | None = None,
1581
+ client: Any = None, # noqa: ANN401
1582
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
1583
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1584
+
1585
+
1586
+ @overload
1587
+ def override(
1588
+ provider_agnostic_call: Callable[_P, _R],
1589
+ *,
1590
+ provider: Literal["litellm"],
1591
+ model: str,
1592
+ stream: Literal[None, False] = None,
1593
+ tools: Literal[None] = None,
1594
+ response_model: type[_ResponseModelT],
1595
+ output_parser: Literal[None] = None,
1596
+ json_mode: bool | None = None,
1597
+ client: Any = None, # noqa: ANN401
1598
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
1599
+ ) -> Callable[_P, _ResponseModelT]: ...
1600
+
1601
+
1602
+ # Mistral _ResponseModelT
1603
+ @overload
1604
+ def override( # pyright: ignore [reportOverlappingOverload]
1605
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1606
+ *,
1607
+ provider: Literal["mistral"],
1608
+ model: str,
1609
+ stream: Literal[None, False] = None,
1610
+ tools: Literal[None] = None,
1611
+ response_model: type[_ResponseModelT],
1612
+ output_parser: Literal[None] = None,
1613
+ json_mode: bool | None = None,
1614
+ client: Any = None, # noqa: ANN401
1615
+ call_params: CommonCallParams | MistralCallParams | None = None,
1616
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1617
+
1618
+
1619
+ @overload
1620
+ def override(
1621
+ provider_agnostic_call: Callable[_P, _R],
1622
+ *,
1623
+ provider: Literal["mistral"],
1624
+ model: str,
1625
+ stream: Literal[None, False] = None,
1626
+ tools: Literal[None] = None,
1627
+ response_model: type[_ResponseModelT],
1628
+ output_parser: Literal[None] = None,
1629
+ json_mode: bool | None = None,
1630
+ client: Any = None, # noqa: ANN401
1631
+ call_params: CommonCallParams | MistralCallParams | None = None,
1632
+ ) -> Callable[_P, _ResponseModelT]: ...
1633
+
1634
+
1635
+ # OpenAI _ResponseModelT
1636
+ @overload
1637
+ def override( # pyright: ignore [reportOverlappingOverload]
1638
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1639
+ *,
1640
+ provider: Literal["openai"],
1641
+ model: str,
1642
+ stream: Literal[None, False] = None,
1643
+ tools: Literal[None] = None,
1644
+ response_model: type[_ResponseModelT],
1645
+ output_parser: Literal[None] = None,
1646
+ json_mode: bool | None = None,
1647
+ client: Any = None, # noqa: ANN401
1648
+ call_params: CommonCallParams | OpenAICallParams | None = None,
1649
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1650
+
1651
+
1652
+ @overload
1653
+ def override(
1654
+ provider_agnostic_call: Callable[_P, _R],
1655
+ *,
1656
+ provider: Literal["openai"],
1657
+ model: str,
1658
+ stream: Literal[None, False] = None,
1659
+ tools: Literal[None] = None,
1660
+ response_model: type[_ResponseModelT],
1661
+ output_parser: Literal[None] = None,
1662
+ json_mode: bool | None = None,
1663
+ client: Any = None, # noqa: ANN401
1664
+ call_params: CommonCallParams | OpenAICallParams | None = None,
1665
+ ) -> Callable[_P, _ResponseModelT]: ...
1666
+
1667
+
1668
+ # Vertex _ResponseModelT
1669
+ @overload
1670
+ def override(
1671
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1672
+ *,
1673
+ provider: Literal["vertex"],
1674
+ model: str,
1675
+ stream: Literal[None, False] = None,
1676
+ tools: Literal[None] = None,
1677
+ response_model: type[_ResponseModelT],
1678
+ output_parser: Literal[None] = None,
1679
+ json_mode: bool | None = None,
1680
+ client: Any = None, # noqa: ANN401
1681
+ call_params: CommonCallParams | VertexCallParams | None = None,
1682
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1683
+
1684
+
1685
+ @overload
1686
+ def override(
1687
+ provider_agnostic_call: Callable[_P, _R],
1688
+ *,
1689
+ provider: Literal["vertex"],
1690
+ model: str,
1691
+ stream: Literal[None, False] = None,
1692
+ tools: Literal[None] = None,
1693
+ response_model: type[_ResponseModelT],
1694
+ output_parser: Literal[None] = None,
1695
+ json_mode: bool | None = None,
1696
+ client: Any = None, # noqa: ANN401
1697
+ call_params: CommonCallParams | VertexCallParams | None = None,
1698
+ ) -> Callable[_P, _ResponseModelT]: ...
1699
+
1700
+
1701
+ # XAI _ResponseModelT
1702
+ @overload
1703
+ def override(
1704
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1705
+ *,
1706
+ provider: Literal["xai"],
1707
+ model: str,
1708
+ stream: Literal[None, False] = None,
1709
+ tools: Literal[None] = None,
1710
+ response_model: type[_ResponseModelT],
1711
+ output_parser: Literal[None] = None,
1712
+ json_mode: bool | None = None,
1713
+ client: Any = None, # noqa: ANN401
1714
+ call_params: CommonCallParams | XAICallParams | None = None,
1715
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1716
+
1717
+
1718
+ @overload
1719
+ def override(
1720
+ provider_agnostic_call: Callable[_P, _R],
1721
+ *,
1722
+ provider: Literal["xai"],
1723
+ model: str,
1724
+ stream: Literal[None, False] = None,
1725
+ tools: Literal[None] = None,
1726
+ response_model: type[_ResponseModelT],
1727
+ output_parser: Literal[None] = None,
1728
+ json_mode: bool | None = None,
1729
+ client: Any = None, # noqa: ANN401
1730
+ call_params: CommonCallParams | XAICallParams | None = None,
1731
+ ) -> Callable[_P, _ResponseModelT]: ...
1732
+
1733
+
1734
+ # Generic _ResponseModelT (for when provider is None or a LocalProvider)
1735
+ @overload
1736
+ def override(
1737
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1738
+ *,
1739
+ provider: LocalProvider | None = None,
1740
+ model: str | None = None,
1741
+ stream: Literal[None, False] = None,
1742
+ tools: Literal[None] = None,
1743
+ response_model: type[_ResponseModelT],
1744
+ output_parser: Literal[None] = None,
1745
+ json_mode: bool | None = None,
1746
+ client: Any = None, # noqa: ANN401
1747
+ call_params: CommonCallParams | None = None,
1748
+ ) -> Callable[_P, Awaitable[_ResponseModelT]]: ...
1749
+
1750
+
1751
+ @overload
1752
+ def override(
1753
+ provider_agnostic_call: Callable[_P, _R],
1754
+ *,
1755
+ provider: LocalProvider | None = None,
1756
+ model: str | None = None,
1757
+ stream: Literal[None, False] = None,
1758
+ tools: Literal[None] = None,
1759
+ response_model: type[_ResponseModelT],
1760
+ output_parser: Literal[None] = None,
1761
+ json_mode: bool | None = None,
1762
+ client: Any = None, # noqa: ANN401
1763
+ call_params: CommonCallParams | None = None,
1764
+ ) -> Callable[_P, _ResponseModelT]: ...
1765
+
1766
+
1767
+ ### _ParsedOutputT ###
1768
+ # Anthropic _ParsedOutputT
1769
+ @overload
1770
+ def override(
1771
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1772
+ *,
1773
+ provider: Literal["anthropic"],
1774
+ model: str,
1775
+ stream: Literal[None, False] = None,
1776
+ tools: Literal[None] = None,
1777
+ response_model: type[_ResponseModelT] | None = None,
1778
+ output_parser: Callable[[Any], _ParsedOutputT],
1779
+ json_mode: bool | None = None,
1780
+ client: Any = None, # noqa: ANN401
1781
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
1782
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1783
+
1784
+
1785
+ @overload
1786
+ def override(
1787
+ provider_agnostic_call: Callable[_P, _R],
1788
+ *,
1789
+ provider: Literal["anthropic"],
1790
+ model: str,
1791
+ stream: Literal[None, False] = None,
1792
+ tools: Literal[None] = None,
1793
+ response_model: type[_ResponseModelT] | None = None,
1794
+ output_parser: Callable[[Any], _ParsedOutputT],
1795
+ json_mode: bool | None = None,
1796
+ client: Any = None, # noqa: ANN401
1797
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
1798
+ ) -> Callable[_P, _ParsedOutputT]: ...
1799
+
1800
+
1801
+ # Azure _ParsedOutputT
1802
+ @overload
1803
+ def override(
1804
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1805
+ *,
1806
+ provider: Literal["azure"],
1807
+ model: str,
1808
+ stream: Literal[None, False] = None,
1809
+ tools: Literal[None] = None,
1810
+ response_model: type[_ResponseModelT] | None = None,
1811
+ output_parser: Callable[[Any], _ParsedOutputT],
1812
+ json_mode: bool | None = None,
1813
+ client: Any = None, # noqa: ANN401
1814
+ call_params: CommonCallParams | AzureCallParams | None = None,
1815
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1816
+
1817
+
1818
+ @overload
1819
+ def override(
1820
+ provider_agnostic_call: Callable[_P, _R],
1821
+ *,
1822
+ provider: Literal["azure"],
1823
+ model: str,
1824
+ stream: Literal[None, False] = None,
1825
+ tools: Literal[None] = None,
1826
+ response_model: type[_ResponseModelT] | None = None,
1827
+ output_parser: Callable[[Any], _ParsedOutputT],
1828
+ json_mode: bool | None = None,
1829
+ client: Any = None, # noqa: ANN401
1830
+ call_params: CommonCallParams | AzureCallParams | None = None,
1831
+ ) -> Callable[_P, _ParsedOutputT]: ...
1832
+
1833
+
1834
+ # Bedrock _ParsedOutputT
1835
+ @overload
1836
+ def override(
1837
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1838
+ *,
1839
+ provider: Literal["bedrock"],
1840
+ model: str,
1841
+ stream: Literal[None, False] = None,
1842
+ tools: Literal[None] = None,
1843
+ response_model: type[_ResponseModelT] | None = None,
1844
+ output_parser: Callable[[Any], _ParsedOutputT],
1845
+ json_mode: bool | None = None,
1846
+ client: Any = None, # noqa: ANN401
1847
+ call_params: CommonCallParams | BedrockCallParams | None = None,
1848
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1849
+
1850
+
1851
+ @overload
1852
+ def override(
1853
+ provider_agnostic_call: Callable[_P, _R],
1854
+ *,
1855
+ provider: Literal["bedrock"],
1856
+ model: str,
1857
+ stream: Literal[None, False] = None,
1858
+ tools: Literal[None] = None,
1859
+ response_model: type[_ResponseModelT] | None = None,
1860
+ output_parser: Callable[[Any], _ParsedOutputT],
1861
+ json_mode: bool | None = None,
1862
+ client: Any = None, # noqa: ANN401
1863
+ call_params: CommonCallParams | BedrockCallParams | None = None,
1864
+ ) -> Callable[_P, _ParsedOutputT]: ...
1865
+
1866
+
1867
+ # Cohere _ParsedOutputT
1868
+ @overload
1869
+ def override(
1870
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1871
+ *,
1872
+ provider: Literal["cohere"],
1873
+ model: str,
1874
+ stream: Literal[None, False] = None,
1875
+ tools: Literal[None] = None,
1876
+ response_model: type[_ResponseModelT] | None = None,
1877
+ output_parser: Callable[[Any], _ParsedOutputT],
1878
+ json_mode: bool | None = None,
1879
+ client: Any = None, # noqa: ANN401
1880
+ call_params: CommonCallParams | CohereCallParams | None = None,
1881
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1882
+
1883
+
1884
+ @overload
1885
+ def override(
1886
+ provider_agnostic_call: Callable[_P, _R],
1887
+ *,
1888
+ provider: Literal["cohere"],
1889
+ model: str,
1890
+ stream: Literal[None, False] = None,
1891
+ tools: Literal[None] = None,
1892
+ response_model: type[_ResponseModelT] | None = None,
1893
+ output_parser: Callable[[Any], _ParsedOutputT],
1894
+ json_mode: bool | None = None,
1895
+ client: Any = None, # noqa: ANN401
1896
+ call_params: CommonCallParams | CohereCallParams | None = None,
1897
+ ) -> Callable[_P, _ParsedOutputT]: ...
1898
+
1899
+
1900
+ # Gemini _ParsedOutputT
1901
+ @overload
1902
+ def override(
1903
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1904
+ *,
1905
+ provider: Literal["gemini"],
1906
+ model: str,
1907
+ stream: Literal[None, False] = None,
1908
+ tools: Literal[None] = None,
1909
+ response_model: type[_ResponseModelT] | None = None,
1910
+ output_parser: Callable[[Any], _ParsedOutputT],
1911
+ json_mode: bool | None = None,
1912
+ client: Any = None, # noqa: ANN401
1913
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1914
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1915
+
1916
+
1917
+ @overload
1918
+ def override(
1919
+ provider_agnostic_call: Callable[_P, _R],
1920
+ *,
1921
+ provider: Literal["gemini"],
1922
+ model: str,
1923
+ stream: Literal[None, False] = None,
1924
+ tools: Literal[None] = None,
1925
+ response_model: type[_ResponseModelT] | None = None,
1926
+ output_parser: Callable[[Any], _ParsedOutputT],
1927
+ json_mode: bool | None = None,
1928
+ client: Any = None, # noqa: ANN401
1929
+ call_params: CommonCallParams | GeminiCallParams | None = None,
1930
+ ) -> Callable[_P, _ParsedOutputT]: ...
1931
+
1932
+
1933
+ # Google _ParsedOutputT
1934
+ @overload
1935
+ def override(
1936
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1937
+ *,
1938
+ provider: Literal["google"],
1939
+ model: str,
1940
+ stream: Literal[None, False] = None,
1941
+ tools: Literal[None] = None,
1942
+ response_model: type[_ResponseModelT] | None = None,
1943
+ output_parser: Callable[[Any], _ParsedOutputT],
1944
+ json_mode: bool | None = None,
1945
+ client: Any = None, # noqa: ANN401
1946
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1947
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1948
+
1949
+
1950
+ @overload
1951
+ def override(
1952
+ provider_agnostic_call: Callable[_P, _R],
1953
+ *,
1954
+ provider: Literal["google"],
1955
+ model: str,
1956
+ stream: Literal[None, False] = None,
1957
+ tools: Literal[None] = None,
1958
+ response_model: type[_ResponseModelT] | None = None,
1959
+ output_parser: Callable[[Any], _ParsedOutputT],
1960
+ json_mode: bool | None = None,
1961
+ client: Any = None, # noqa: ANN401
1962
+ call_params: CommonCallParams | GoogleCallParams | None = None,
1963
+ ) -> Callable[_P, _ParsedOutputT]: ...
1964
+
1965
+
1966
+ # Groq _ParsedOutputT
1967
+ @overload
1968
+ def override(
1969
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
1970
+ *,
1971
+ provider: Literal["groq"],
1972
+ model: str,
1973
+ stream: Literal[None, False] = None,
1974
+ tools: Literal[None] = None,
1975
+ response_model: type[_ResponseModelT] | None = None,
1976
+ output_parser: Callable[[Any], _ParsedOutputT],
1977
+ json_mode: bool | None = None,
1978
+ client: Any = None, # noqa: ANN401
1979
+ call_params: CommonCallParams | GroqCallParams | None = None,
1980
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
1981
+
1982
+
1983
+ @overload
1984
+ def override(
1985
+ provider_agnostic_call: Callable[_P, _R],
1986
+ *,
1987
+ provider: Literal["groq"],
1988
+ model: str,
1989
+ stream: Literal[None, False] = None,
1990
+ tools: Literal[None] = None,
1991
+ response_model: type[_ResponseModelT] | None = None,
1992
+ output_parser: Callable[[Any], _ParsedOutputT],
1993
+ json_mode: bool | None = None,
1994
+ client: Any = None, # noqa: ANN401
1995
+ call_params: CommonCallParams | GroqCallParams | None = None,
1996
+ ) -> Callable[_P, _ParsedOutputT]: ...
1997
+
1998
+
1999
+ # LiteLLM _ParsedOutputT
2000
+ @overload
2001
+ def override(
2002
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2003
+ *,
2004
+ provider: Literal["litellm"],
2005
+ model: str,
2006
+ stream: Literal[None, False] = None,
2007
+ tools: Literal[None] = None,
2008
+ response_model: type[_ResponseModelT] | None = None,
2009
+ output_parser: Callable[[Any], _ParsedOutputT],
2010
+ json_mode: bool | None = None,
2011
+ client: Any = None, # noqa: ANN401
2012
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2013
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2014
+
2015
+
2016
+ @overload
2017
+ def override(
2018
+ provider_agnostic_call: Callable[_P, _R],
2019
+ *,
2020
+ provider: Literal["litellm"],
2021
+ model: str,
2022
+ stream: Literal[None, False] = None,
2023
+ tools: Literal[None] = None,
2024
+ response_model: type[_ResponseModelT] | None = None,
2025
+ output_parser: Callable[[Any], _ParsedOutputT],
2026
+ json_mode: bool | None = None,
2027
+ client: Any = None, # noqa: ANN401
2028
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2029
+ ) -> Callable[_P, _ParsedOutputT]: ...
2030
+
2031
+
2032
+ # Mistral _ParsedOutputT
2033
+ @overload
2034
+ def override(
2035
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2036
+ *,
2037
+ provider: Literal["mistral"],
2038
+ model: str,
2039
+ stream: Literal[None, False] = None,
2040
+ tools: Literal[None] = None,
2041
+ response_model: type[_ResponseModelT] | None = None,
2042
+ output_parser: Callable[[Any], _ParsedOutputT],
2043
+ json_mode: bool | None = None,
2044
+ client: Any = None, # noqa: ANN401
2045
+ call_params: CommonCallParams | MistralCallParams | None = None,
2046
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2047
+
2048
+
2049
+ @overload
2050
+ def override(
2051
+ provider_agnostic_call: Callable[_P, _R],
2052
+ *,
2053
+ provider: Literal["mistral"],
2054
+ model: str,
2055
+ stream: Literal[None, False] = None,
2056
+ tools: Literal[None] = None,
2057
+ response_model: type[_ResponseModelT] | None = None,
2058
+ output_parser: Callable[[Any], _ParsedOutputT],
2059
+ json_mode: bool | None = None,
2060
+ client: Any = None, # noqa: ANN401
2061
+ call_params: CommonCallParams | MistralCallParams | None = None,
2062
+ ) -> Callable[_P, _ParsedOutputT]: ...
2063
+
2064
+
2065
+ # OpenAI _ParsedOutputT
2066
+ @overload
2067
+ def override(
2068
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2069
+ *,
2070
+ provider: Literal["openai"],
2071
+ model: str,
2072
+ stream: Literal[None, False] = None,
2073
+ tools: Literal[None] = None,
2074
+ response_model: type[_ResponseModelT] | None = None,
2075
+ output_parser: Callable[[Any], _ParsedOutputT],
2076
+ json_mode: bool | None = None,
2077
+ client: Any = None, # noqa: ANN401
2078
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2079
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2080
+
2081
+
2082
+ @overload
2083
+ def override(
2084
+ provider_agnostic_call: Callable[_P, _R],
2085
+ *,
2086
+ provider: Literal["openai"],
2087
+ model: str,
2088
+ stream: Literal[None, False] = None,
2089
+ tools: Literal[None] = None,
2090
+ response_model: type[_ResponseModelT] | None = None,
2091
+ output_parser: Callable[[Any], _ParsedOutputT],
2092
+ json_mode: bool | None = None,
2093
+ client: Any = None, # noqa: ANN401
2094
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2095
+ ) -> Callable[_P, _ParsedOutputT]: ...
2096
+
2097
+
2098
+ # Vertex _ParsedOutputT
2099
+ @overload
2100
+ def override(
2101
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2102
+ *,
2103
+ provider: Literal["vertex"],
2104
+ model: str,
2105
+ stream: Literal[None, False] = None,
2106
+ tools: Literal[None] = None,
2107
+ response_model: type[_ResponseModelT] | None = None,
2108
+ output_parser: Callable[[Any], _ParsedOutputT],
2109
+ json_mode: bool | None = None,
2110
+ client: Any = None, # noqa: ANN401
2111
+ call_params: CommonCallParams | VertexCallParams | None = None,
2112
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2113
+
2114
+
2115
+ @overload
2116
+ def override(
2117
+ provider_agnostic_call: Callable[_P, _R],
2118
+ *,
2119
+ provider: Literal["vertex"],
2120
+ model: str,
2121
+ stream: Literal[None, False] = None,
2122
+ tools: Literal[None] = None,
2123
+ response_model: type[_ResponseModelT] | None = None,
2124
+ output_parser: Callable[[Any], _ParsedOutputT],
2125
+ json_mode: bool | None = None,
2126
+ client: Any = None, # noqa: ANN401
2127
+ call_params: CommonCallParams | VertexCallParams | None = None,
2128
+ ) -> Callable[_P, _ParsedOutputT]: ...
2129
+
2130
+
2131
+ # XAI _ParsedOutputT
2132
+ @overload
2133
+ def override(
2134
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2135
+ *,
2136
+ provider: Literal["xai"],
2137
+ model: str,
2138
+ stream: Literal[None, False] = None,
2139
+ tools: Literal[None] = None,
2140
+ response_model: type[_ResponseModelT] | None = None,
2141
+ output_parser: Callable[[Any], _ParsedOutputT],
2142
+ json_mode: bool | None = None,
2143
+ client: Any = None, # noqa: ANN401
2144
+ call_params: CommonCallParams | XAICallParams | None = None,
2145
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2146
+
2147
+
2148
+ @overload
2149
+ def override(
2150
+ provider_agnostic_call: Callable[_P, _R],
2151
+ *,
2152
+ provider: Literal["xai"],
2153
+ model: str,
2154
+ stream: Literal[None, False] = None,
2155
+ tools: Literal[None] = None,
2156
+ response_model: type[_ResponseModelT] | None = None,
2157
+ output_parser: Callable[[Any], _ParsedOutputT],
2158
+ json_mode: bool | None = None,
2159
+ client: Any = None, # noqa: ANN401
2160
+ call_params: CommonCallParams | XAICallParams | None = None,
2161
+ ) -> Callable[_P, _ParsedOutputT]: ...
2162
+
2163
+
2164
+ # Generic _ParsedOutputT (for when provider is None or a LocalProvider)
2165
+ @overload
2166
+ def override(
2167
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2168
+ *,
2169
+ provider: LocalProvider | None = None,
2170
+ model: str | None = None,
2171
+ stream: Literal[None, False] = None,
2172
+ tools: Literal[None] = None,
2173
+ response_model: type[_ResponseModelT] | None = None,
2174
+ output_parser: Callable[[Any], _ParsedOutputT],
2175
+ json_mode: bool | None = None,
2176
+ client: Any = None, # noqa: ANN401
2177
+ call_params: CommonCallParams | None = None,
2178
+ ) -> Callable[_P, Awaitable[_ParsedOutputT]]: ...
2179
+
2180
+
2181
+ @overload
2182
+ def override(
2183
+ provider_agnostic_call: Callable[_P, _R],
2184
+ *,
2185
+ provider: LocalProvider | None = None,
2186
+ model: str | None = None,
2187
+ stream: Literal[None, False] = None,
2188
+ tools: Literal[None] = None,
2189
+ response_model: type[_ResponseModelT] | None = None,
2190
+ output_parser: Callable[[Any], _ParsedOutputT],
2191
+ json_mode: bool | None = None,
2192
+ client: Any = None, # noqa: ANN401
2193
+ call_params: CommonCallParams | None = None,
2194
+ ) -> Callable[_P, _ParsedOutputT]: ...
2195
+
2196
+
2197
+ ### Async/Iterable[_ResponseModelT] ###
2198
+ # Anthropic Async/Iterable[_ResponseModelT]
2199
+ @overload
2200
+ def override(
2201
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2202
+ *,
2203
+ provider: Literal["anthropic"],
2204
+ model: str,
2205
+ stream: Literal[True],
2206
+ tools: Literal[None] = None,
2207
+ response_model: type[_ResponseModelT],
2208
+ output_parser: Literal[None] = None,
2209
+ json_mode: bool | None = None,
2210
+ client: Any = None, # noqa: ANN401
2211
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
2212
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2213
+
2214
+
2215
+ @overload
2216
+ def override(
2217
+ provider_agnostic_call: Callable[_P, _R],
2218
+ *,
2219
+ provider: Literal["anthropic"],
2220
+ model: str,
2221
+ stream: Literal[True],
2222
+ tools: Literal[None] = None,
2223
+ response_model: type[_ResponseModelT],
2224
+ output_parser: Literal[None] = None,
2225
+ json_mode: bool | None = None,
2226
+ client: Any = None, # noqa: ANN401
2227
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
2228
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2229
+
2230
+
2231
+ # Azure Async/Iterable[_ResponseModelT]
2232
+ @overload
2233
+ def override(
2234
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2235
+ *,
2236
+ provider: Literal["azure"],
2237
+ model: str,
2238
+ stream: Literal[True],
2239
+ tools: Literal[None] = None,
2240
+ response_model: type[_ResponseModelT],
2241
+ output_parser: Literal[None] = None,
2242
+ json_mode: bool | None = None,
2243
+ client: Any = None, # noqa: ANN401
2244
+ call_params: CommonCallParams | AzureCallParams | None = None,
2245
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2246
+
2247
+
2248
+ @overload
2249
+ def override(
2250
+ provider_agnostic_call: Callable[_P, _R],
2251
+ *,
2252
+ provider: Literal["azure"],
2253
+ model: str,
2254
+ stream: Literal[True],
2255
+ tools: Literal[None] = None,
2256
+ response_model: type[_ResponseModelT],
2257
+ output_parser: Literal[None] = None,
2258
+ json_mode: bool | None = None,
2259
+ client: Any = None, # noqa: ANN401
2260
+ call_params: CommonCallParams | AzureCallParams | None = None,
2261
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2262
+
2263
+
2264
+ # Bedrock Async/Iterable[_ResponseModelT]
2265
+ @overload
2266
+ def override(
2267
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2268
+ *,
2269
+ provider: Literal["bedrock"],
2270
+ model: str,
2271
+ stream: Literal[True],
2272
+ tools: Literal[None] = None,
2273
+ response_model: type[_ResponseModelT],
2274
+ output_parser: Literal[None] = None,
2275
+ json_mode: bool | None = None,
2276
+ client: Any = None, # noqa: ANN401
2277
+ call_params: CommonCallParams | BedrockCallParams | None = None,
2278
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2279
+
2280
+
2281
+ @overload
2282
+ def override(
2283
+ provider_agnostic_call: Callable[_P, _R],
2284
+ *,
2285
+ provider: Literal["bedrock"],
2286
+ model: str,
2287
+ stream: Literal[True],
2288
+ tools: Literal[None] = None,
2289
+ response_model: type[_ResponseModelT],
2290
+ output_parser: Literal[None] = None,
2291
+ json_mode: bool | None = None,
2292
+ client: Any = None, # noqa: ANN401
2293
+ call_params: CommonCallParams | BedrockCallParams | None = None,
2294
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2295
+
2296
+
2297
+ # Cohere Async/Iterable[_ResponseModelT]
2298
+ @overload
2299
+ def override(
2300
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2301
+ *,
2302
+ provider: Literal["cohere"],
2303
+ model: str,
2304
+ stream: Literal[True],
2305
+ tools: Literal[None] = None,
2306
+ response_model: type[_ResponseModelT],
2307
+ output_parser: Literal[None] = None,
2308
+ json_mode: bool | None = None,
2309
+ client: Any = None, # noqa: ANN401
2310
+ call_params: CommonCallParams | CohereCallParams | None = None,
2311
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2312
+
2313
+
2314
+ @overload
2315
+ def override(
2316
+ provider_agnostic_call: Callable[_P, _R],
2317
+ *,
2318
+ provider: Literal["cohere"],
2319
+ model: str,
2320
+ stream: Literal[True],
2321
+ tools: Literal[None] = None,
2322
+ response_model: type[_ResponseModelT],
2323
+ output_parser: Literal[None] = None,
2324
+ json_mode: bool | None = None,
2325
+ client: Any = None, # noqa: ANN401
2326
+ call_params: CommonCallParams | CohereCallParams | None = None,
2327
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2328
+
2329
+
2330
+ # Gemini Async/Iterable[_ResponseModelT]
2331
+ @overload
2332
+ def override(
2333
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2334
+ *,
2335
+ provider: Literal["gemini"],
2336
+ model: str,
2337
+ stream: Literal[True],
2338
+ tools: Literal[None] = None,
2339
+ response_model: type[_ResponseModelT],
2340
+ output_parser: Literal[None] = None,
2341
+ json_mode: bool | None = None,
2342
+ client: Any = None, # noqa: ANN401
2343
+ call_params: CommonCallParams | GeminiCallParams | None = None,
2344
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2345
+
2346
+
2347
+ @overload
2348
+ def override(
2349
+ provider_agnostic_call: Callable[_P, _R],
2350
+ *,
2351
+ provider: Literal["gemini"],
2352
+ model: str,
2353
+ stream: Literal[True],
2354
+ tools: Literal[None] = None,
2355
+ response_model: type[_ResponseModelT],
2356
+ output_parser: Literal[None] = None,
2357
+ json_mode: bool | None = None,
2358
+ client: Any = None, # noqa: ANN401
2359
+ call_params: CommonCallParams | GeminiCallParams | None = None,
2360
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2361
+
2362
+
2363
+ # Google Async/Iterable[_ResponseModelT]
2364
+ @overload
2365
+ def override(
2366
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2367
+ *,
2368
+ provider: Literal["google"],
2369
+ model: str,
2370
+ stream: Literal[True],
2371
+ tools: Literal[None] = None,
2372
+ response_model: type[_ResponseModelT],
2373
+ output_parser: Literal[None] = None,
2374
+ json_mode: bool | None = None,
2375
+ client: Any = None, # noqa: ANN401
2376
+ call_params: CommonCallParams | GoogleCallParams | None = None,
2377
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2378
+
2379
+
2380
+ @overload
2381
+ def override(
2382
+ provider_agnostic_call: Callable[_P, _R],
2383
+ *,
2384
+ provider: Literal["google"],
2385
+ model: str,
2386
+ stream: Literal[True],
2387
+ tools: Literal[None] = None,
2388
+ response_model: type[_ResponseModelT],
2389
+ output_parser: Literal[None] = None,
2390
+ json_mode: bool | None = None,
2391
+ client: Any = None, # noqa: ANN401
2392
+ call_params: CommonCallParams | GoogleCallParams | None = None,
2393
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2394
+
2395
+
2396
+ # Groq Async/Iterable[_ResponseModelT]
2397
+ @overload
2398
+ def override(
2399
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2400
+ *,
2401
+ provider: Literal["groq"],
2402
+ model: str,
2403
+ stream: Literal[True],
2404
+ tools: Literal[None] = None,
2405
+ response_model: type[_ResponseModelT],
2406
+ output_parser: Literal[None] = None,
2407
+ json_mode: bool | None = None,
2408
+ client: Any = None, # noqa: ANN401
2409
+ call_params: CommonCallParams | GroqCallParams | None = None,
2410
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2411
+
2412
+
2413
+ @overload
2414
+ def override(
2415
+ provider_agnostic_call: Callable[_P, _R],
2416
+ *,
2417
+ provider: Literal["groq"],
2418
+ model: str,
2419
+ stream: Literal[True],
2420
+ tools: Literal[None] = None,
2421
+ response_model: type[_ResponseModelT],
2422
+ output_parser: Literal[None] = None,
2423
+ json_mode: bool | None = None,
2424
+ client: Any = None, # noqa: ANN401
2425
+ call_params: CommonCallParams | GroqCallParams | None = None,
2426
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2427
+
2428
+
2429
+ # LiteLLM Async/Iterable[_ResponseModelT]
2430
+ @overload
2431
+ def override(
2432
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2433
+ *,
2434
+ provider: Literal["litellm"],
2435
+ model: str,
2436
+ stream: Literal[True],
2437
+ tools: Literal[None] = None,
2438
+ response_model: type[_ResponseModelT],
2439
+ output_parser: Literal[None] = None,
2440
+ json_mode: bool | None = None,
2441
+ client: Any = None, # noqa: ANN401
2442
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2443
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2444
+
2445
+
2446
+ @overload
2447
+ def override(
2448
+ provider_agnostic_call: Callable[_P, _R],
2449
+ *,
2450
+ provider: Literal["litellm"],
2451
+ model: str,
2452
+ stream: Literal[True],
2453
+ tools: Literal[None] = None,
2454
+ response_model: type[_ResponseModelT],
2455
+ output_parser: Literal[None] = None,
2456
+ json_mode: bool | None = None,
2457
+ client: Any = None, # noqa: ANN401
2458
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2459
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2460
+
2461
+
2462
+ # Mistral Async/Iterable[_ResponseModelT]
2463
+ @overload
2464
+ def override(
2465
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2466
+ *,
2467
+ provider: Literal["mistral"],
2468
+ model: str,
2469
+ stream: Literal[True],
2470
+ tools: Literal[None] = None,
2471
+ response_model: type[_ResponseModelT],
2472
+ output_parser: Literal[None] = None,
2473
+ json_mode: bool | None = None,
2474
+ client: Any = None, # noqa: ANN401
2475
+ call_params: CommonCallParams | MistralCallParams | None = None,
2476
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2477
+
2478
+
2479
+ @overload
2480
+ def override(
2481
+ provider_agnostic_call: Callable[_P, _R],
2482
+ *,
2483
+ provider: Literal["mistral"],
2484
+ model: str,
2485
+ stream: Literal[True],
2486
+ tools: Literal[None] = None,
2487
+ response_model: type[_ResponseModelT],
2488
+ output_parser: Literal[None] = None,
2489
+ json_mode: bool | None = None,
2490
+ client: Any = None, # noqa: ANN401
2491
+ call_params: CommonCallParams | MistralCallParams | None = None,
2492
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2493
+
2494
+
2495
+ # OpenAI Async/Iterable[_ResponseModelT]
2496
+ @overload
2497
+ def override(
2498
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2499
+ *,
2500
+ provider: Literal["openai"],
2501
+ model: str,
2502
+ stream: Literal[True],
2503
+ tools: Literal[None] = None,
2504
+ response_model: type[_ResponseModelT],
2505
+ output_parser: Literal[None] = None,
2506
+ json_mode: bool | None = None,
2507
+ client: Any = None, # noqa: ANN401
2508
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2509
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2510
+
2511
+
2512
+ @overload
2513
+ def override(
2514
+ provider_agnostic_call: Callable[_P, _R],
2515
+ *,
2516
+ provider: Literal["openai"],
2517
+ model: str,
2518
+ stream: Literal[True],
2519
+ tools: Literal[None] = None,
2520
+ response_model: type[_ResponseModelT],
2521
+ output_parser: Literal[None] = None,
2522
+ json_mode: bool | None = None,
2523
+ client: Any = None, # noqa: ANN401
2524
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2525
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2526
+
2527
+
2528
+ # Vertex Async/Iterable[_ResponseModelT]
2529
+ @overload
2530
+ def override(
2531
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2532
+ *,
2533
+ provider: Literal["vertex"],
2534
+ model: str,
2535
+ stream: Literal[True],
2536
+ tools: Literal[None] = None,
2537
+ response_model: type[_ResponseModelT],
2538
+ output_parser: Literal[None] = None,
2539
+ json_mode: bool | None = None,
2540
+ client: Any = None, # noqa: ANN401
2541
+ call_params: CommonCallParams | VertexCallParams | None = None,
2542
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2543
+
2544
+
2545
+ @overload
2546
+ def override(
2547
+ provider_agnostic_call: Callable[_P, _R],
2548
+ *,
2549
+ provider: Literal["vertex"],
2550
+ model: str,
2551
+ stream: Literal[True],
2552
+ tools: Literal[None] = None,
2553
+ response_model: type[_ResponseModelT],
2554
+ output_parser: Literal[None] = None,
2555
+ json_mode: bool | None = None,
2556
+ client: Any = None, # noqa: ANN401
2557
+ call_params: CommonCallParams | VertexCallParams | None = None,
2558
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2559
+
2560
+
2561
+ # XAI Async/Iterable[_ResponseModelT]
2562
+ @overload
2563
+ def override(
2564
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2565
+ *,
2566
+ provider: Literal["xai"],
2567
+ model: str,
2568
+ stream: Literal[True],
2569
+ tools: Literal[None] = None,
2570
+ response_model: type[_ResponseModelT],
2571
+ output_parser: Literal[None] = None,
2572
+ json_mode: bool | None = None,
2573
+ client: Any = None, # noqa: ANN401
2574
+ call_params: CommonCallParams | XAICallParams | None = None,
2575
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2576
+
2577
+
2578
+ @overload
2579
+ def override(
2580
+ provider_agnostic_call: Callable[_P, _R],
2581
+ *,
2582
+ provider: Literal["xai"],
2583
+ model: str,
2584
+ stream: Literal[True],
2585
+ tools: Literal[None] = None,
2586
+ response_model: type[_ResponseModelT],
2587
+ output_parser: Literal[None] = None,
2588
+ json_mode: bool | None = None,
2589
+ client: Any = None, # noqa: ANN401
2590
+ call_params: CommonCallParams | XAICallParams | None = None,
2591
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2592
+
2593
+
2594
+ # Generic Async/Iterable[_ResponseModelT] (for when provider is None or a LocalProvider)
2595
+ @overload
2596
+ def override(
2597
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2598
+ *,
2599
+ provider: LocalProvider | None = None,
2600
+ model: str | None = None,
2601
+ stream: Literal[True],
2602
+ tools: Literal[None] = None,
2603
+ response_model: type[_ResponseModelT],
2604
+ output_parser: Literal[None] = None,
2605
+ json_mode: bool | None = None,
2606
+ client: Any = None, # noqa: ANN401
2607
+ call_params: CommonCallParams | None = None,
2608
+ ) -> Callable[_P, Awaitable[AsyncIterable[_ResponseModelT]]]: ...
2609
+
2610
+
2611
+ @overload
2612
+ def override(
2613
+ provider_agnostic_call: Callable[_P, _R],
2614
+ *,
2615
+ provider: LocalProvider | None = None,
2616
+ model: str | None = None,
2617
+ stream: Literal[True],
2618
+ tools: Literal[None] = None,
2619
+ response_model: type[_ResponseModelT],
2620
+ output_parser: Literal[None] = None,
2621
+ json_mode: bool | None = None,
2622
+ client: Any = None, # noqa: ANN401
2623
+ call_params: CommonCallParams | None = None,
2624
+ ) -> Callable[_P, Iterable[_ResponseModelT]]: ...
2625
+
2626
+
2627
+ ### (_ResponseModelT | CallResponse) ###
2628
+ # Anthropic (_ResponseModelT | CallResponse)
2629
+ @overload
2630
+ def override(
2631
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2632
+ *,
2633
+ provider: Literal["anthropic"],
2634
+ model: str,
2635
+ stream: Literal[None, False] = None,
2636
+ tools: list[type[BaseTool] | Callable],
2637
+ response_model: type[_ResponseModelT],
2638
+ output_parser: Literal[None] = None,
2639
+ json_mode: bool | None = None,
2640
+ client: Any = None, # noqa: ANN401
2641
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
2642
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2643
+
2644
+
2645
+ @overload
2646
+ def override(
2647
+ provider_agnostic_call: Callable[_P, _R],
2648
+ *,
2649
+ provider: Literal["anthropic"],
2650
+ model: str,
2651
+ stream: Literal[None, False] = None,
2652
+ tools: list[type[BaseTool] | Callable],
2653
+ response_model: type[_ResponseModelT],
2654
+ output_parser: Literal[None] = None,
2655
+ json_mode: bool | None = None,
2656
+ client: Any = None, # noqa: ANN401
2657
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
2658
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2659
+
2660
+
2661
+ # Azure (_ResponseModelT | CallResponse)
2662
+ @overload
2663
+ def override(
2664
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2665
+ *,
2666
+ provider: Literal["azure"],
2667
+ model: str,
2668
+ stream: Literal[None, False] = None,
2669
+ tools: list[type[BaseTool] | Callable],
2670
+ response_model: type[_ResponseModelT],
2671
+ output_parser: Literal[None] = None,
2672
+ json_mode: bool | None = None,
2673
+ client: Any = None, # noqa: ANN401
2674
+ call_params: CommonCallParams | AzureCallParams | None = None,
2675
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2676
+
2677
+
2678
+ @overload
2679
+ def override(
2680
+ provider_agnostic_call: Callable[_P, _R],
2681
+ *,
2682
+ provider: Literal["azure"],
2683
+ model: str,
2684
+ stream: Literal[None, False] = None,
2685
+ tools: list[type[BaseTool] | Callable],
2686
+ response_model: type[_ResponseModelT],
2687
+ output_parser: Literal[None] = None,
2688
+ json_mode: bool | None = None,
2689
+ client: Any = None, # noqa: ANN401
2690
+ call_params: CommonCallParams | AzureCallParams | None = None,
2691
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2692
+
2693
+
2694
+ # Bedrock (_ResponseModelT | CallResponse)
2695
+ @overload
2696
+ def override(
2697
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2698
+ *,
2699
+ provider: Literal["bedrock"],
2700
+ model: str,
2701
+ stream: Literal[None, False] = None,
2702
+ tools: list[type[BaseTool] | Callable],
2703
+ response_model: type[_ResponseModelT],
2704
+ output_parser: Literal[None] = None,
2705
+ json_mode: bool | None = None,
2706
+ client: Any = None, # noqa: ANN401
2707
+ call_params: CommonCallParams | BedrockCallParams | None = None,
2708
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2709
+
2710
+
2711
+ @overload
2712
+ def override(
2713
+ provider_agnostic_call: Callable[_P, _R],
2714
+ *,
2715
+ provider: Literal["bedrock"],
2716
+ model: str,
2717
+ stream: Literal[None, False] = None,
2718
+ tools: list[type[BaseTool] | Callable],
2719
+ response_model: type[_ResponseModelT],
2720
+ output_parser: Literal[None] = None,
2721
+ json_mode: bool | None = None,
2722
+ client: Any = None, # noqa: ANN401
2723
+ call_params: CommonCallParams | BedrockCallParams | None = None,
2724
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2725
+
2726
+
2727
+ # Cohere (_ResponseModelT | CallResponse)
2728
+ @overload
2729
+ def override(
2730
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2731
+ *,
2732
+ provider: Literal["cohere"],
2733
+ model: str,
2734
+ stream: Literal[None, False] = None,
2735
+ tools: list[type[BaseTool] | Callable],
2736
+ response_model: type[_ResponseModelT],
2737
+ output_parser: Literal[None] = None,
2738
+ json_mode: bool | None = None,
2739
+ client: Any = None, # noqa: ANN401
2740
+ call_params: CommonCallParams | CohereCallParams | None = None,
2741
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2742
+
2743
+
2744
+ @overload
2745
+ def override(
2746
+ provider_agnostic_call: Callable[_P, _R],
2747
+ *,
2748
+ provider: Literal["cohere"],
2749
+ model: str,
2750
+ stream: Literal[None, False] = None,
2751
+ tools: list[type[BaseTool] | Callable],
2752
+ response_model: type[_ResponseModelT],
2753
+ output_parser: Literal[None] = None,
2754
+ json_mode: bool | None = None,
2755
+ client: Any = None, # noqa: ANN401
2756
+ call_params: CommonCallParams | CohereCallParams | None = None,
2757
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2758
+
2759
+
2760
+ # Gemini (_ResponseModelT | CallResponse)
2761
+ @overload
2762
+ def override(
2763
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2764
+ *,
2765
+ provider: Literal["gemini"],
2766
+ model: str,
2767
+ stream: Literal[None, False] = None,
2768
+ tools: list[type[BaseTool] | Callable],
2769
+ response_model: type[_ResponseModelT],
2770
+ output_parser: Literal[None] = None,
2771
+ json_mode: bool | None = None,
2772
+ client: Any = None, # noqa: ANN401
2773
+ call_params: CommonCallParams | GeminiCallParams | None = None,
2774
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2775
+
2776
+
2777
+ @overload
2778
+ def override(
2779
+ provider_agnostic_call: Callable[_P, _R],
2780
+ *,
2781
+ provider: Literal["gemini"],
2782
+ model: str,
2783
+ stream: Literal[None, False] = None,
2784
+ tools: list[type[BaseTool] | Callable],
2785
+ response_model: type[_ResponseModelT],
2786
+ output_parser: Literal[None] = None,
2787
+ json_mode: bool | None = None,
2788
+ client: Any = None, # noqa: ANN401
2789
+ call_params: CommonCallParams | GeminiCallParams | None = None,
2790
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2791
+
2792
+
2793
+ # Google (_ResponseModelT | CallResponse)
2794
+ @overload
2795
+ def override(
2796
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2797
+ *,
2798
+ provider: Literal["google"],
2799
+ model: str,
2800
+ stream: Literal[None, False] = None,
2801
+ tools: list[type[BaseTool] | Callable],
2802
+ response_model: type[_ResponseModelT],
2803
+ output_parser: Literal[None] = None,
2804
+ json_mode: bool | None = None,
2805
+ client: Any = None, # noqa: ANN401
2806
+ call_params: CommonCallParams | GoogleCallParams | None = None,
2807
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2808
+
2809
+
2810
+ @overload
2811
+ def override(
2812
+ provider_agnostic_call: Callable[_P, _R],
2813
+ *,
2814
+ provider: Literal["google"],
2815
+ model: str,
2816
+ stream: Literal[None, False] = None,
2817
+ tools: list[type[BaseTool] | Callable],
2818
+ response_model: type[_ResponseModelT],
2819
+ output_parser: Literal[None] = None,
2820
+ json_mode: bool | None = None,
2821
+ client: Any = None, # noqa: ANN401
2822
+ call_params: CommonCallParams | GoogleCallParams | None = None,
2823
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2824
+
2825
+
2826
+ # Groq (_ResponseModelT | CallResponse)
2827
+ @overload
2828
+ def override(
2829
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2830
+ *,
2831
+ provider: Literal["groq"],
2832
+ model: str,
2833
+ stream: Literal[None, False] = None,
2834
+ tools: list[type[BaseTool] | Callable],
2835
+ response_model: type[_ResponseModelT],
2836
+ output_parser: Literal[None] = None,
2837
+ json_mode: bool | None = None,
2838
+ client: Any = None, # noqa: ANN401
2839
+ call_params: CommonCallParams | GroqCallParams | None = None,
2840
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2841
+
2842
+
2843
+ @overload
2844
+ def override(
2845
+ provider_agnostic_call: Callable[_P, _R],
2846
+ *,
2847
+ provider: Literal["groq"],
2848
+ model: str,
2849
+ stream: Literal[None, False] = None,
2850
+ tools: list[type[BaseTool] | Callable],
2851
+ response_model: type[_ResponseModelT],
2852
+ output_parser: Literal[None] = None,
2853
+ json_mode: bool | None = None,
2854
+ client: Any = None, # noqa: ANN401
2855
+ call_params: CommonCallParams | GroqCallParams | None = None,
2856
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2857
+
2858
+
2859
+ # LiteLLM (_ResponseModelT | CallResponse)
2860
+ @overload
2861
+ def override(
2862
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2863
+ *,
2864
+ provider: Literal["litellm"],
2865
+ model: str,
2866
+ stream: Literal[None, False] = None,
2867
+ tools: list[type[BaseTool] | Callable],
2868
+ response_model: type[_ResponseModelT],
2869
+ output_parser: Literal[None] = None,
2870
+ json_mode: bool | None = None,
2871
+ client: Any = None, # noqa: ANN401
2872
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2873
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2874
+
2875
+
2876
+ @overload
2877
+ def override(
2878
+ provider_agnostic_call: Callable[_P, _R],
2879
+ *,
2880
+ provider: Literal["litellm"],
2881
+ model: str,
2882
+ stream: Literal[None, False] = None,
2883
+ tools: list[type[BaseTool] | Callable],
2884
+ response_model: type[_ResponseModelT],
2885
+ output_parser: Literal[None] = None,
2886
+ json_mode: bool | None = None,
2887
+ client: Any = None, # noqa: ANN401
2888
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
2889
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2890
+
2891
+
2892
+ # Mistral (_ResponseModelT | CallResponse)
2893
+ @overload
2894
+ def override(
2895
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2896
+ *,
2897
+ provider: Literal["mistral"],
2898
+ model: str,
2899
+ stream: Literal[None, False] = None,
2900
+ tools: list[type[BaseTool] | Callable],
2901
+ response_model: type[_ResponseModelT],
2902
+ output_parser: Literal[None] = None,
2903
+ json_mode: bool | None = None,
2904
+ client: Any = None, # noqa: ANN401
2905
+ call_params: CommonCallParams | MistralCallParams | None = None,
2906
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2907
+
2908
+
2909
+ @overload
2910
+ def override(
2911
+ provider_agnostic_call: Callable[_P, _R],
2912
+ *,
2913
+ provider: Literal["mistral"],
2914
+ model: str,
2915
+ stream: Literal[None, False] = None,
2916
+ tools: list[type[BaseTool] | Callable],
2917
+ response_model: type[_ResponseModelT],
2918
+ output_parser: Literal[None] = None,
2919
+ json_mode: bool | None = None,
2920
+ client: Any = None, # noqa: ANN401
2921
+ call_params: CommonCallParams | MistralCallParams | None = None,
2922
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2923
+
2924
+
2925
+ # OpenAI (_ResponseModelT | CallResponse)
2926
+ @overload
2927
+ def override(
2928
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2929
+ *,
2930
+ provider: Literal["openai"],
2931
+ model: str,
2932
+ stream: Literal[None, False] = None,
2933
+ tools: list[type[BaseTool] | Callable],
2934
+ response_model: type[_ResponseModelT],
2935
+ output_parser: Literal[None] = None,
2936
+ json_mode: bool | None = None,
2937
+ client: Any = None, # noqa: ANN401
2938
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2939
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2940
+
2941
+
2942
+ @overload
2943
+ def override(
2944
+ provider_agnostic_call: Callable[_P, _R],
2945
+ *,
2946
+ provider: Literal["openai"],
2947
+ model: str,
2948
+ stream: Literal[None, False] = None,
2949
+ tools: list[type[BaseTool] | Callable],
2950
+ response_model: type[_ResponseModelT],
2951
+ output_parser: Literal[None] = None,
2952
+ json_mode: bool | None = None,
2953
+ client: Any = None, # noqa: ANN401
2954
+ call_params: CommonCallParams | OpenAICallParams | None = None,
2955
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2956
+
2957
+
2958
+ # Vertex (_ResponseModelT | CallResponse)
2959
+ @overload
2960
+ def override(
2961
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2962
+ *,
2963
+ provider: Literal["vertex"],
2964
+ model: str,
2965
+ stream: Literal[None, False] = None,
2966
+ tools: list[type[BaseTool] | Callable],
2967
+ response_model: type[_ResponseModelT],
2968
+ output_parser: Literal[None] = None,
2969
+ json_mode: bool | None = None,
2970
+ client: Any = None, # noqa: ANN401
2971
+ call_params: CommonCallParams | VertexCallParams | None = None,
2972
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
2973
+
2974
+
2975
+ @overload
2976
+ def override(
2977
+ provider_agnostic_call: Callable[_P, _R],
2978
+ *,
2979
+ provider: Literal["vertex"],
2980
+ model: str,
2981
+ stream: Literal[None, False] = None,
2982
+ tools: list[type[BaseTool] | Callable],
2983
+ response_model: type[_ResponseModelT],
2984
+ output_parser: Literal[None] = None,
2985
+ json_mode: bool | None = None,
2986
+ client: Any = None, # noqa: ANN401
2987
+ call_params: CommonCallParams | VertexCallParams | None = None,
2988
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
2989
+
2990
+
2991
+ # XAI (_ResponseModelT | CallResponse)
2992
+ @overload
2993
+ def override(
2994
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
2995
+ *,
2996
+ provider: Literal["xai"],
2997
+ model: str,
2998
+ stream: Literal[None, False] = None,
2999
+ tools: list[type[BaseTool] | Callable],
3000
+ response_model: type[_ResponseModelT],
3001
+ output_parser: Literal[None] = None,
3002
+ json_mode: bool | None = None,
3003
+ client: Any = None, # noqa: ANN401
3004
+ call_params: CommonCallParams | XAICallParams | None = None,
3005
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
3006
+
3007
+
3008
+ @overload
3009
+ def override(
3010
+ provider_agnostic_call: Callable[_P, _R],
3011
+ *,
3012
+ provider: Literal["xai"],
3013
+ model: str,
3014
+ stream: Literal[None, False] = None,
3015
+ tools: list[type[BaseTool] | Callable],
3016
+ response_model: type[_ResponseModelT],
3017
+ output_parser: Literal[None] = None,
3018
+ json_mode: bool | None = None,
3019
+ client: Any = None, # noqa: ANN401
3020
+ call_params: CommonCallParams | XAICallParams | None = None,
3021
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
3022
+
3023
+
3024
+ # Generic (_ResponseModelT | CallResponse)
3025
+ @overload
3026
+ def override(
3027
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3028
+ *,
3029
+ provider: LocalProvider | None = None,
3030
+ model: str | None = None,
3031
+ stream: Literal[None, False] = None,
3032
+ tools: list[type[BaseTool] | Callable],
3033
+ response_model: type[_ResponseModelT],
3034
+ output_parser: Literal[None] = None,
3035
+ json_mode: bool | None = None,
3036
+ client: Any = None, # noqa: ANN401
3037
+ call_params: CommonCallParams | None = None,
3038
+ ) -> Callable[_P, Awaitable[_ResponseModelT | CallResponse]]: ...
3039
+
3040
+
3041
+ @overload
3042
+ def override(
3043
+ provider_agnostic_call: Callable[_P, _R],
3044
+ *,
3045
+ provider: LocalProvider | None = None,
3046
+ model: str | None = None,
3047
+ stream: Literal[None, False] = None,
3048
+ tools: list[type[BaseTool] | Callable],
3049
+ response_model: type[_ResponseModelT],
3050
+ output_parser: Literal[None] = None,
3051
+ json_mode: bool | None = None,
3052
+ client: Any = None, # noqa: ANN401
3053
+ call_params: CommonCallParams | None = None,
3054
+ ) -> Callable[_P, _ResponseModelT | CallResponse]: ...
3055
+
3056
+
3057
+ ### (_ParsedOutputT | CallResponse) ###
3058
+ # Anthropic (_ParsedOutputT | CallResponse)
3059
+ @overload
3060
+ def override(
3061
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3062
+ *,
3063
+ provider: Literal["anthropic"],
3064
+ model: str,
3065
+ stream: Literal[None, False] = None,
3066
+ tools: list[type[BaseTool] | Callable],
3067
+ response_model: type[_ResponseModelT],
3068
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3069
+ json_mode: bool | None = None,
3070
+ client: Any = None, # noqa: ANN401
3071
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
3072
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3073
+
3074
+
3075
+ @overload
3076
+ def override(
3077
+ provider_agnostic_call: Callable[_P, _R],
3078
+ *,
3079
+ provider: Literal["anthropic"],
3080
+ model: str,
3081
+ stream: Literal[None, False] = None,
3082
+ tools: list[type[BaseTool] | Callable],
3083
+ response_model: type[_ResponseModelT],
3084
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3085
+ json_mode: bool | None = None,
3086
+ client: Any = None, # noqa: ANN401
3087
+ call_params: CommonCallParams | AnthropicCallParams | None = None,
3088
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3089
+
3090
+
3091
+ # Azure (_ParsedOutputT | CallResponse)
3092
+ @overload
3093
+ def override(
3094
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3095
+ *,
3096
+ provider: Literal["azure"],
3097
+ model: str,
3098
+ stream: Literal[None, False] = None,
3099
+ tools: list[type[BaseTool] | Callable],
3100
+ response_model: type[_ResponseModelT],
3101
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3102
+ json_mode: bool | None = None,
3103
+ client: Any = None, # noqa: ANN401
3104
+ call_params: CommonCallParams | AzureCallParams | None = None,
3105
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3106
+
3107
+
3108
+ @overload
3109
+ def override(
3110
+ provider_agnostic_call: Callable[_P, _R],
3111
+ *,
3112
+ provider: Literal["azure"],
3113
+ model: str,
3114
+ stream: Literal[None, False] = None,
3115
+ tools: list[type[BaseTool] | Callable],
3116
+ response_model: type[_ResponseModelT],
3117
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3118
+ json_mode: bool | None = None,
3119
+ client: Any = None, # noqa: ANN401
3120
+ call_params: CommonCallParams | AzureCallParams | None = None,
3121
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3122
+
3123
+
3124
+ # Bedrock (_ParsedOutputT | CallResponse)
3125
+ @overload
3126
+ def override(
3127
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3128
+ *,
3129
+ provider: Literal["bedrock"],
3130
+ model: str,
3131
+ stream: Literal[None, False] = None,
3132
+ tools: list[type[BaseTool] | Callable],
3133
+ response_model: type[_ResponseModelT],
3134
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3135
+ json_mode: bool | None = None,
3136
+ client: Any = None, # noqa: ANN401
3137
+ call_params: CommonCallParams | BedrockCallParams | None = None,
3138
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3139
+
3140
+
3141
+ @overload
3142
+ def override(
3143
+ provider_agnostic_call: Callable[_P, _R],
3144
+ *,
3145
+ provider: Literal["bedrock"],
3146
+ model: str,
3147
+ stream: Literal[None, False] = None,
3148
+ tools: list[type[BaseTool] | Callable],
3149
+ response_model: type[_ResponseModelT],
3150
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3151
+ json_mode: bool | None = None,
3152
+ client: Any = None, # noqa: ANN401
3153
+ call_params: CommonCallParams | BedrockCallParams | None = None,
3154
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3155
+
3156
+
3157
+ # Cohere (_ParsedOutputT | CallResponse)
3158
+ @overload
3159
+ def override(
3160
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3161
+ *,
3162
+ provider: Literal["cohere"],
3163
+ model: str,
3164
+ stream: Literal[None, False] = None,
3165
+ tools: list[type[BaseTool] | Callable],
3166
+ response_model: type[_ResponseModelT],
3167
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3168
+ json_mode: bool | None = None,
3169
+ client: Any = None, # noqa: ANN401
3170
+ call_params: CommonCallParams | CohereCallParams | None = None,
3171
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3172
+
3173
+
3174
+ @overload
3175
+ def override(
3176
+ provider_agnostic_call: Callable[_P, _R],
3177
+ *,
3178
+ provider: Literal["cohere"],
3179
+ model: str,
3180
+ stream: Literal[None, False] = None,
3181
+ tools: list[type[BaseTool] | Callable],
3182
+ response_model: type[_ResponseModelT],
3183
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3184
+ json_mode: bool | None = None,
3185
+ client: Any = None, # noqa: ANN401
3186
+ call_params: CommonCallParams | CohereCallParams | None = None,
3187
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3188
+
3189
+
3190
+ # Gemini (_ParsedOutputT | CallResponse)
3191
+ @overload
3192
+ def override(
3193
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3194
+ *,
3195
+ provider: Literal["gemini"],
3196
+ model: str,
3197
+ stream: Literal[None, False] = None,
3198
+ tools: list[type[BaseTool] | Callable],
3199
+ response_model: type[_ResponseModelT],
3200
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3201
+ json_mode: bool | None = None,
3202
+ client: Any = None, # noqa: ANN401
3203
+ call_params: CommonCallParams | GeminiCallParams | None = None,
3204
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3205
+
3206
+
3207
+ @overload
3208
+ def override(
3209
+ provider_agnostic_call: Callable[_P, _R],
3210
+ *,
3211
+ provider: Literal["gemini"],
3212
+ model: str,
3213
+ stream: Literal[None, False] = None,
3214
+ tools: list[type[BaseTool] | Callable],
3215
+ response_model: type[_ResponseModelT],
3216
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3217
+ json_mode: bool | None = None,
3218
+ client: Any = None, # noqa: ANN401
3219
+ call_params: CommonCallParams | GeminiCallParams | None = None,
3220
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3221
+
3222
+
3223
+ # Google (_ParsedOutputT | CallResponse)
3224
+ @overload
3225
+ def override(
3226
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3227
+ *,
3228
+ provider: Literal["google"],
3229
+ model: str,
3230
+ stream: Literal[None, False] = None,
3231
+ tools: list[type[BaseTool] | Callable],
3232
+ response_model: type[_ResponseModelT],
3233
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3234
+ json_mode: bool | None = None,
3235
+ client: Any = None, # noqa: ANN401
3236
+ call_params: CommonCallParams | GoogleCallParams | None = None,
3237
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3238
+
3239
+
3240
+ @overload
3241
+ def override(
3242
+ provider_agnostic_call: Callable[_P, _R],
3243
+ *,
3244
+ provider: Literal["google"],
3245
+ model: str,
3246
+ stream: Literal[None, False] = None,
3247
+ tools: list[type[BaseTool] | Callable],
3248
+ response_model: type[_ResponseModelT],
3249
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3250
+ json_mode: bool | None = None,
3251
+ client: Any = None, # noqa: ANN401
3252
+ call_params: CommonCallParams | GoogleCallParams | None = None,
3253
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3254
+
3255
+
3256
+ # Groq (_ParsedOutputT | CallResponse)
3257
+ @overload
3258
+ def override(
3259
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3260
+ *,
3261
+ provider: Literal["groq"],
3262
+ model: str,
3263
+ stream: Literal[None, False] = None,
3264
+ tools: list[type[BaseTool] | Callable],
3265
+ response_model: type[_ResponseModelT],
3266
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3267
+ json_mode: bool | None = None,
3268
+ client: Any = None, # noqa: ANN401
3269
+ call_params: CommonCallParams | GroqCallParams | None = None,
3270
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3271
+
3272
+
3273
+ @overload
3274
+ def override(
3275
+ provider_agnostic_call: Callable[_P, _R],
3276
+ *,
3277
+ provider: Literal["groq"],
3278
+ model: str,
3279
+ stream: Literal[None, False] = None,
3280
+ tools: list[type[BaseTool] | Callable],
3281
+ response_model: type[_ResponseModelT],
3282
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3283
+ json_mode: bool | None = None,
3284
+ client: Any = None, # noqa: ANN401
3285
+ call_params: CommonCallParams | GroqCallParams | None = None,
3286
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3287
+
3288
+
3289
+ # LiteLLM (_ParsedOutputT | CallResponse)
3290
+ @overload
3291
+ def override(
3292
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3293
+ *,
3294
+ provider: Literal["litellm"],
3295
+ model: str,
3296
+ stream: Literal[None, False] = None,
3297
+ tools: list[type[BaseTool] | Callable],
3298
+ response_model: type[_ResponseModelT],
3299
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3300
+ json_mode: bool | None = None,
3301
+ client: Any = None, # noqa: ANN401
3302
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
3303
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3304
+
3305
+
3306
+ @overload
3307
+ def override(
3308
+ provider_agnostic_call: Callable[_P, _R],
3309
+ *,
3310
+ provider: Literal["litellm"],
3311
+ model: str,
3312
+ stream: Literal[None, False] = None,
3313
+ tools: list[type[BaseTool] | Callable],
3314
+ response_model: type[_ResponseModelT],
3315
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3316
+ json_mode: bool | None = None,
3317
+ client: Any = None, # noqa: ANN401
3318
+ call_params: CommonCallParams | LiteLLMCallParams | None = None,
3319
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3320
+
3321
+
3322
+ # Mistral (_ParsedOutputT | CallResponse)
3323
+ @overload
3324
+ def override(
3325
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3326
+ *,
3327
+ provider: Literal["mistral"],
3328
+ model: str,
3329
+ stream: Literal[None, False] = None,
3330
+ tools: list[type[BaseTool] | Callable],
3331
+ response_model: type[_ResponseModelT],
3332
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3333
+ json_mode: bool | None = None,
3334
+ client: Any = None, # noqa: ANN401
3335
+ call_params: CommonCallParams | MistralCallParams | None = None,
3336
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3337
+
3338
+
3339
+ @overload
3340
+ def override(
3341
+ provider_agnostic_call: Callable[_P, _R],
3342
+ *,
3343
+ provider: Literal["mistral"],
3344
+ model: str,
3345
+ stream: Literal[None, False] = None,
3346
+ tools: list[type[BaseTool] | Callable],
3347
+ response_model: type[_ResponseModelT],
3348
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3349
+ json_mode: bool | None = None,
3350
+ client: Any = None, # noqa: ANN401
3351
+ call_params: CommonCallParams | MistralCallParams | None = None,
3352
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3353
+
3354
+
3355
+ # OpenAI (_ParsedOutputT | CallResponse)
3356
+ @overload
3357
+ def override(
3358
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3359
+ *,
3360
+ provider: Literal["openai"],
3361
+ model: str,
3362
+ stream: Literal[None, False] = None,
3363
+ tools: list[type[BaseTool] | Callable],
3364
+ response_model: type[_ResponseModelT],
3365
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3366
+ json_mode: bool | None = None,
3367
+ client: Any = None, # noqa: ANN401
3368
+ call_params: CommonCallParams | OpenAICallParams | None = None,
3369
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3370
+
3371
+
3372
+ @overload
3373
+ def override(
3374
+ provider_agnostic_call: Callable[_P, _R],
3375
+ *,
3376
+ provider: Literal["openai"],
3377
+ model: str,
3378
+ stream: Literal[None, False] = None,
3379
+ tools: list[type[BaseTool] | Callable],
3380
+ response_model: type[_ResponseModelT],
3381
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3382
+ json_mode: bool | None = None,
3383
+ client: Any = None, # noqa: ANN401
3384
+ call_params: CommonCallParams | OpenAICallParams | None = None,
3385
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3386
+
3387
+
3388
+ # Vertex (_ParsedOutputT | CallResponse)
3389
+ @overload
3390
+ def override(
3391
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3392
+ *,
3393
+ provider: Literal["vertex"],
3394
+ model: str,
3395
+ stream: Literal[None, False] = None,
3396
+ tools: list[type[BaseTool] | Callable],
3397
+ response_model: type[_ResponseModelT],
3398
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3399
+ json_mode: bool | None = None,
3400
+ client: Any = None, # noqa: ANN401
3401
+ call_params: CommonCallParams | VertexCallParams | None = None,
3402
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3403
+
3404
+
3405
+ @overload
3406
+ def override(
3407
+ provider_agnostic_call: Callable[_P, _R],
3408
+ *,
3409
+ provider: Literal["vertex"],
3410
+ model: str,
3411
+ stream: Literal[None, False] = None,
3412
+ tools: list[type[BaseTool] | Callable],
3413
+ response_model: type[_ResponseModelT],
3414
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3415
+ json_mode: bool | None = None,
3416
+ client: Any = None, # noqa: ANN401
3417
+ call_params: CommonCallParams | VertexCallParams | None = None,
3418
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3419
+
3420
+
3421
+ # XAI (_ParsedOutputT | CallResponse)
3422
+ @overload
3423
+ def override(
3424
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3425
+ *,
3426
+ provider: Literal["xai"],
3427
+ model: str,
3428
+ stream: Literal[None, False] = None,
3429
+ tools: list[type[BaseTool] | Callable],
3430
+ response_model: type[_ResponseModelT],
3431
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3432
+ json_mode: bool | None = None,
3433
+ client: Any = None, # noqa: ANN401
3434
+ call_params: CommonCallParams | XAICallParams | None = None,
3435
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3436
+
3437
+
3438
+ @overload
3439
+ def override(
3440
+ provider_agnostic_call: Callable[_P, _R],
3441
+ *,
3442
+ provider: Literal["xai"],
3443
+ model: str,
3444
+ stream: Literal[None, False] = None,
3445
+ tools: list[type[BaseTool] | Callable],
3446
+ response_model: type[_ResponseModelT],
3447
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3448
+ json_mode: bool | None = None,
3449
+ client: Any = None, # noqa: ANN401
3450
+ call_params: CommonCallParams | XAICallParams | None = None,
3451
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3452
+
3453
+
3454
+ # Generic (_ParsedOutputT | CallResponse)
3455
+ @overload
3456
+ def override(
3457
+ provider_agnostic_call: Callable[_P, Awaitable[_R]],
3458
+ *,
3459
+ provider: LocalProvider | None = None,
3460
+ model: str | None = None,
3461
+ stream: Literal[None, False] = None,
3462
+ tools: list[type[BaseTool] | Callable],
3463
+ response_model: type[_ResponseModelT],
3464
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3465
+ json_mode: bool | None = None,
3466
+ client: Any = None, # noqa: ANN401
3467
+ call_params: CommonCallParams | None = None,
3468
+ ) -> Callable[_P, Awaitable[_ParsedOutputT | CallResponse]]: ...
3469
+
3470
+
3471
+ @overload
3472
+ def override(
3473
+ provider_agnostic_call: Callable[_P, _R],
3474
+ *,
3475
+ provider: LocalProvider | None = None,
3476
+ model: str | None = None,
3477
+ stream: Literal[None, False] = None,
3478
+ tools: list[type[BaseTool] | Callable],
3479
+ response_model: type[_ResponseModelT],
3480
+ output_parser: Callable[[_ResponseModelT], _ParsedOutputT],
3481
+ json_mode: bool | None = None,
3482
+ client: Any = None, # noqa: ANN401
3483
+ call_params: CommonCallParams | None = None,
3484
+ ) -> Callable[_P, _ParsedOutputT | CallResponse]: ...
3485
+
3486
+
3487
+ ### ORIGINAL DEFINITION ###
3488
+ def override(
3489
+ provider_agnostic_call: Callable[_P, Awaitable[_R]] | Callable[_P, _R],
3490
+ *,
3491
+ provider: Provider | LocalProvider | None = None,
3492
+ model: str | None = None,
3493
+ stream: bool | StreamConfig | None = None,
3494
+ tools: list[type[BaseTool] | Callable] | None = None,
3495
+ response_model: type[_ResponseModelT] | None = None,
3496
+ output_parser: Callable[[Any], _ParsedOutputT] | None = None,
3497
+ json_mode: bool | None = None,
3498
+ client: Any = None, # noqa: ANN401
3499
+ call_params: CommonCallParams
3500
+ | AnthropicCallParams
3501
+ | AzureCallParams
3502
+ | BedrockCallParams
3503
+ | CohereCallParams
3504
+ | GeminiCallParams
3505
+ | GoogleCallParams
3506
+ | GroqCallParams
3507
+ | MistralCallParams
3508
+ | OpenAICallParams
3509
+ | VertexCallParams
3510
+ | XAICallParams
3511
+ | None = None,
3512
+ ) -> Callable[
3513
+ _P,
3514
+ Awaitable[_R]
3515
+ | Awaitable[CallResponse]
3516
+ | Awaitable[Stream]
3517
+ | Awaitable[_ResponseModelT]
3518
+ | Awaitable[_ParsedOutputT]
3519
+ | Awaitable[AsyncIterable[_ResponseModelT]]
3520
+ | Awaitable[_ResponseModelT | CallResponse]
3521
+ | Awaitable[_ParsedOutputT | CallResponse]
3522
+ | _R
3523
+ | CallResponse
3524
+ | Stream
3525
+ | _ResponseModelT
3526
+ | _ParsedOutputT
3527
+ | Iterable[_ResponseModelT]
3528
+ | (_ResponseModelT | CallResponse)
3529
+ | (_ParsedOutputT | CallResponse),
3530
+ ]:
3531
+ """Overrides the provider-specific call with the specified provider.
3532
+
3533
+ This function creates a new function that wraps the original function
3534
+ and temporarily sets a context with the specified overrides when called.
3535
+ It supports both setting overrides (provider, model, client, call_params)
3536
+ and structural overrides (stream, tools, response_model, output_parser).
3537
+
3538
+ Example:
3539
+ ```python
3540
+ @llm.call(provider="openai", model="gpt-4o-mini")
3541
+ def recommend_book(genre: str) -> str:
3542
+ return f"Recommend a {genre} book"
3543
+
3544
+ # Override the model for all calls to the function
3545
+ recommend_claude_book = override(
3546
+ recommend_book,
3547
+ provider="anthropic",
3548
+ model="claude-3-5-sonnet-20240620"
3549
+ )
3550
+ response = recommend_claude_book("fantasy") # Uses claude-3-5-sonnet
3551
+
3552
+ # Override to use streaming
3553
+ stream_book = override(
3554
+ recommend_book,
3555
+ stream=True
3556
+ )
3557
+ stream = stream_book("fantasy") # Returns a Stream object
3558
+ ```
3559
+
3560
+ Args:
3561
+ provider_agnostic_call: The provider-agnostic call to override.
3562
+ provider: The provider to override with.
3563
+ model: The model to override with.
3564
+ stream: Whether to stream the response.
3565
+ tools: The tools to use for the LLM API call.
3566
+ response_model: The response model to structure the response into.
3567
+ output_parser: A function to parse the response.
3568
+ json_mode: Whether to use JSON mode.
3569
+ client: The client to override with.
3570
+ call_params: The call params to override with.
3571
+
3572
+ Returns:
3573
+ The overridden function with appropriate return type.
3574
+ """
3575
+ if (provider and not model) or (model and not provider):
3576
+ raise ValueError(
3577
+ "Provider and model must both be overridden if either is overridden."
3578
+ )
3579
+
3580
+ if fn_is_async(provider_agnostic_call):
3581
+
3582
+ @wraps(provider_agnostic_call)
3583
+ async def inner_async(
3584
+ *args: _P.args, **kwargs: _P.kwargs
3585
+ ) -> (
3586
+ Awaitable[_R]
3587
+ | Awaitable[CallResponse]
3588
+ | Awaitable[Stream]
3589
+ | Awaitable[_ResponseModelT]
3590
+ | Awaitable[_ParsedOutputT]
3591
+ | Awaitable[AsyncIterable[_ResponseModelT]]
3592
+ | Awaitable[_ResponseModelT | CallResponse]
3593
+ | Awaitable[_ParsedOutputT | CallResponse]
3594
+ ):
3595
+ # THIS IS NOT TYPE SAFE BUT WILL WORK SO WE IGNORE
3596
+ with _context(
3597
+ provider=provider,
3598
+ model=model,
3599
+ stream=stream,
3600
+ tools=tools,
3601
+ response_model=response_model,
3602
+ output_parser=output_parser,
3603
+ json_mode=json_mode,
3604
+ client=client,
3605
+ call_params=call_params,
3606
+ ):
3607
+ return await provider_agnostic_call(*args, **kwargs) # pyright: ignore [reportReturnType]
3608
+
3609
+ return inner_async # pyright: ignore [reportReturnType]
3610
+ else:
3611
+
3612
+ @wraps(provider_agnostic_call)
3613
+ def inner(
3614
+ *args: _P.args, **kwargs: _P.kwargs
3615
+ ) -> (
3616
+ _R
3617
+ | CallResponse
3618
+ | Stream
3619
+ | _ResponseModelT
3620
+ | _ParsedOutputT
3621
+ | Iterable[_ResponseModelT]
3622
+ | (_ResponseModelT | CallResponse)
3623
+ | (_ParsedOutputT | CallResponse)
3624
+ ):
3625
+ # THIS IS NOT TYPE SAFE BUT WILL WORK SO WE IGNORE
3626
+ with _context(
3627
+ provider=provider,
3628
+ model=model,
3629
+ stream=stream,
3630
+ tools=tools,
3631
+ response_model=response_model,
3632
+ output_parser=output_parser,
3633
+ json_mode=json_mode,
3634
+ client=client,
3635
+ call_params=call_params,
3636
+ ):
3637
+ return provider_agnostic_call(*args, **kwargs)
3638
+
3639
+ return inner