hammad-python 0.0.14__py3-none-any.whl → 0.0.15__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.
Files changed (101) hide show
  1. hammad_python-0.0.15.dist-info/METADATA +184 -0
  2. hammad_python-0.0.15.dist-info/RECORD +4 -0
  3. hammad/__init__.py +0 -1
  4. hammad/ai/__init__.py +0 -1
  5. hammad/ai/_utils.py +0 -142
  6. hammad/ai/completions/__init__.py +0 -45
  7. hammad/ai/completions/client.py +0 -684
  8. hammad/ai/completions/create.py +0 -710
  9. hammad/ai/completions/settings.py +0 -100
  10. hammad/ai/completions/types.py +0 -792
  11. hammad/ai/completions/utils.py +0 -486
  12. hammad/ai/embeddings/__init__.py +0 -35
  13. hammad/ai/embeddings/client/__init__.py +0 -1
  14. hammad/ai/embeddings/client/base_embeddings_client.py +0 -26
  15. hammad/ai/embeddings/client/fastembed_text_embeddings_client.py +0 -200
  16. hammad/ai/embeddings/client/litellm_embeddings_client.py +0 -288
  17. hammad/ai/embeddings/create.py +0 -159
  18. hammad/ai/embeddings/types.py +0 -69
  19. hammad/cache/__init__.py +0 -40
  20. hammad/cache/base_cache.py +0 -181
  21. hammad/cache/cache.py +0 -169
  22. hammad/cache/decorators.py +0 -261
  23. hammad/cache/file_cache.py +0 -80
  24. hammad/cache/ttl_cache.py +0 -74
  25. hammad/cli/__init__.py +0 -33
  26. hammad/cli/animations.py +0 -573
  27. hammad/cli/plugins.py +0 -781
  28. hammad/cli/styles/__init__.py +0 -55
  29. hammad/cli/styles/settings.py +0 -139
  30. hammad/cli/styles/types.py +0 -358
  31. hammad/cli/styles/utils.py +0 -480
  32. hammad/data/__init__.py +0 -56
  33. hammad/data/collections/__init__.py +0 -34
  34. hammad/data/collections/base_collection.py +0 -58
  35. hammad/data/collections/collection.py +0 -452
  36. hammad/data/collections/searchable_collection.py +0 -556
  37. hammad/data/collections/vector_collection.py +0 -596
  38. hammad/data/configurations/__init__.py +0 -35
  39. hammad/data/configurations/configuration.py +0 -564
  40. hammad/data/databases/__init__.py +0 -21
  41. hammad/data/databases/database.py +0 -902
  42. hammad/data/models/__init__.py +0 -44
  43. hammad/data/models/base/__init__.py +0 -35
  44. hammad/data/models/base/fields.py +0 -546
  45. hammad/data/models/base/model.py +0 -1078
  46. hammad/data/models/base/utils.py +0 -280
  47. hammad/data/models/pydantic/__init__.py +0 -55
  48. hammad/data/models/pydantic/converters.py +0 -632
  49. hammad/data/models/pydantic/models/__init__.py +0 -28
  50. hammad/data/models/pydantic/models/arbitrary_model.py +0 -46
  51. hammad/data/models/pydantic/models/cacheable_model.py +0 -79
  52. hammad/data/models/pydantic/models/fast_model.py +0 -318
  53. hammad/data/models/pydantic/models/function_model.py +0 -176
  54. hammad/data/models/pydantic/models/subscriptable_model.py +0 -63
  55. hammad/data/types/__init__.py +0 -41
  56. hammad/data/types/file.py +0 -358
  57. hammad/data/types/multimodal/__init__.py +0 -24
  58. hammad/data/types/multimodal/audio.py +0 -96
  59. hammad/data/types/multimodal/image.py +0 -80
  60. hammad/data/types/text.py +0 -1066
  61. hammad/formatting/__init__.py +0 -38
  62. hammad/formatting/json/__init__.py +0 -21
  63. hammad/formatting/json/converters.py +0 -152
  64. hammad/formatting/text/__init__.py +0 -63
  65. hammad/formatting/text/converters.py +0 -723
  66. hammad/formatting/text/markdown.py +0 -131
  67. hammad/formatting/yaml/__init__.py +0 -26
  68. hammad/formatting/yaml/converters.py +0 -5
  69. hammad/logging/__init__.py +0 -35
  70. hammad/logging/decorators.py +0 -834
  71. hammad/logging/logger.py +0 -954
  72. hammad/mcp/__init__.py +0 -50
  73. hammad/mcp/client/__init__.py +0 -1
  74. hammad/mcp/client/client.py +0 -523
  75. hammad/mcp/client/client_service.py +0 -393
  76. hammad/mcp/client/settings.py +0 -178
  77. hammad/mcp/servers/__init__.py +0 -1
  78. hammad/mcp/servers/launcher.py +0 -1161
  79. hammad/performance/__init__.py +0 -36
  80. hammad/performance/imports.py +0 -231
  81. hammad/performance/runtime/__init__.py +0 -32
  82. hammad/performance/runtime/decorators.py +0 -142
  83. hammad/performance/runtime/run.py +0 -299
  84. hammad/py.typed +0 -0
  85. hammad/service/__init__.py +0 -49
  86. hammad/service/create.py +0 -532
  87. hammad/service/decorators.py +0 -285
  88. hammad/typing/__init__.py +0 -407
  89. hammad/web/__init__.py +0 -43
  90. hammad/web/http/__init__.py +0 -1
  91. hammad/web/http/client.py +0 -944
  92. hammad/web/models.py +0 -245
  93. hammad/web/openapi/__init__.py +0 -1
  94. hammad/web/openapi/client.py +0 -740
  95. hammad/web/search/__init__.py +0 -1
  96. hammad/web/search/client.py +0 -988
  97. hammad/web/utils.py +0 -472
  98. hammad_python-0.0.14.dist-info/METADATA +0 -70
  99. hammad_python-0.0.14.dist-info/RECORD +0 -99
  100. {hammad_python-0.0.14.dist-info → hammad_python-0.0.15.dist-info}/WHEEL +0 -0
  101. {hammad_python-0.0.14.dist-info → hammad_python-0.0.15.dist-info}/licenses/LICENSE +0 -0
@@ -1,710 +0,0 @@
1
- """hammad.ai.completions.create"""
2
-
3
- from httpx import Timeout
4
- from typing import Any, Dict, List, Literal, Optional, Union, overload
5
-
6
- try:
7
- from openai.types.chat import (
8
- ChatCompletionModality,
9
- ChatCompletionPredictionContentParam,
10
- ChatCompletionAudioParam,
11
- )
12
- except ImportError:
13
- raise ImportError(
14
- "Using the `hammad.ai.completions` extension requires the `openai` package to be installed.\n"
15
- "Please either install the `openai` package, or install the `hammad.ai` extension with:\n"
16
- "`pip install 'hammad-python[ai]'"
17
- )
18
-
19
- from .types import (
20
- CompletionsModelName,
21
- CompletionsInputParam,
22
- CompletionsOutputType,
23
- Completion,
24
- CompletionStream,
25
- )
26
- from .client import (
27
- CompletionsInstructorModeParam,
28
- AnthropicThinkingParam,
29
- OpenAIWebSearchOptions,
30
- CompletionsClient,
31
- )
32
-
33
-
34
- __all__ = ("create_completion", "async_create_completion")
35
-
36
-
37
- # Async overloads
38
- @overload
39
- async def async_create_completion(
40
- messages: CompletionsInputParam,
41
- instructions: Optional[str] = None,
42
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
43
- type: CompletionsOutputType = str,
44
- response_field_name: str = "content",
45
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
46
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
47
- max_retries: int = 3,
48
- strict: bool = True,
49
- *,
50
- timeout: Optional[Union[float, str, Timeout]] = None,
51
- temperature: Optional[float] = None,
52
- top_p: Optional[float] = None,
53
- n: Optional[int] = None,
54
- stream: Literal[True],
55
- stream_options: Optional[Dict[str, Any]] = None,
56
- stop: Optional[str] = None,
57
- max_completion_tokens: Optional[int] = None,
58
- max_tokens: Optional[int] = None,
59
- modalities: Optional[List[ChatCompletionModality]] = None,
60
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
61
- audio: Optional[ChatCompletionAudioParam] = None,
62
- presence_penalty: Optional[float] = None,
63
- frequency_penalty: Optional[float] = None,
64
- logit_bias: Optional[Dict[str, float]] = None,
65
- user: Optional[str] = None,
66
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
67
- # NOTE: response_format is not used within the `completions` resource
68
- # in place of `instructor` and the `type` parameter
69
- seed: Optional[int] = None,
70
- tools: Optional[List] = None,
71
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
72
- logprobs: Optional[bool] = None,
73
- top_logprobs: Optional[int] = None,
74
- parallel_tool_calls: Optional[bool] = None,
75
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
76
- deployment_id: Optional[str] = None,
77
- extra_headers: Optional[Dict[str, str]] = None,
78
- base_url: Optional[str] = None,
79
- functions: Optional[List] = None,
80
- function_call: Optional[str] = None,
81
- # set api_base, api_version, api_key
82
- api_version: Optional[str] = None,
83
- api_key: Optional[str] = None,
84
- model_list: Optional[list] = None,
85
- # Optional liteLLM function params
86
- thinking: Optional[AnthropicThinkingParam] = None,
87
- ) -> CompletionStream[CompletionsOutputType]: ...
88
-
89
-
90
- @overload
91
- async def async_create_completion(
92
- messages: CompletionsInputParam,
93
- instructions: Optional[str] = None,
94
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
95
- type: CompletionsOutputType = str,
96
- response_field_name: str = "content",
97
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
98
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
99
- max_retries: int = 3,
100
- strict: bool = True,
101
- *,
102
- timeout: Optional[Union[float, str, Timeout]] = None,
103
- temperature: Optional[float] = None,
104
- top_p: Optional[float] = None,
105
- n: Optional[int] = None,
106
- stream: Literal[False] = False,
107
- stream_options: Optional[Dict[str, Any]] = None,
108
- stop: Optional[str] = None,
109
- max_completion_tokens: Optional[int] = None,
110
- max_tokens: Optional[int] = None,
111
- modalities: Optional[List[ChatCompletionModality]] = None,
112
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
113
- audio: Optional[ChatCompletionAudioParam] = None,
114
- presence_penalty: Optional[float] = None,
115
- frequency_penalty: Optional[float] = None,
116
- logit_bias: Optional[Dict[str, float]] = None,
117
- user: Optional[str] = None,
118
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
119
- # NOTE: response_format is not used within the `completions` resource
120
- # in place of `instructor` and the `type` parameter
121
- seed: Optional[int] = None,
122
- tools: Optional[List] = None,
123
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
124
- logprobs: Optional[bool] = None,
125
- top_logprobs: Optional[int] = None,
126
- parallel_tool_calls: Optional[bool] = None,
127
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
128
- deployment_id: Optional[str] = None,
129
- extra_headers: Optional[Dict[str, str]] = None,
130
- base_url: Optional[str] = None,
131
- functions: Optional[List] = None,
132
- function_call: Optional[str] = None,
133
- # set api_base, api_version, api_key
134
- api_version: Optional[str] = None,
135
- api_key: Optional[str] = None,
136
- model_list: Optional[list] = None,
137
- # Optional liteLLM function params
138
- thinking: Optional[AnthropicThinkingParam] = None,
139
- ) -> Completion[CompletionsOutputType]: ...
140
-
141
-
142
- async def async_create_completion(
143
- messages: CompletionsInputParam,
144
- instructions: Optional[str] = None,
145
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
146
- type: CompletionsOutputType = str,
147
- response_field_name: str = "content",
148
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
149
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
150
- max_retries: int = 3,
151
- strict: bool = True,
152
- *,
153
- timeout: Optional[Union[float, str, Timeout]] = None,
154
- temperature: Optional[float] = None,
155
- top_p: Optional[float] = None,
156
- n: Optional[int] = None,
157
- stream: Optional[bool] = None,
158
- stream_options: Optional[Dict[str, Any]] = None,
159
- stop: Optional[str] = None,
160
- max_completion_tokens: Optional[int] = None,
161
- max_tokens: Optional[int] = None,
162
- modalities: Optional[List[ChatCompletionModality]] = None,
163
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
164
- audio: Optional[ChatCompletionAudioParam] = None,
165
- presence_penalty: Optional[float] = None,
166
- frequency_penalty: Optional[float] = None,
167
- logit_bias: Optional[Dict[str, float]] = None,
168
- user: Optional[str] = None,
169
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
170
- # NOTE: response_format is not used within the `completions` resource
171
- # in place of `instructor` and the `type` parameter
172
- seed: Optional[int] = None,
173
- tools: Optional[List] = None,
174
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
175
- logprobs: Optional[bool] = None,
176
- top_logprobs: Optional[int] = None,
177
- parallel_tool_calls: Optional[bool] = None,
178
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
179
- deployment_id: Optional[str] = None,
180
- extra_headers: Optional[Dict[str, str]] = None,
181
- base_url: Optional[str] = None,
182
- functions: Optional[List] = None,
183
- function_call: Optional[str] = None,
184
- # set api_base, api_version, api_key
185
- api_version: Optional[str] = None,
186
- api_key: Optional[str] = None,
187
- model_list: Optional[list] = None,
188
- # Optional liteLLM function params
189
- thinking: Optional[AnthropicThinkingParam] = None,
190
- ) -> Completion[CompletionsOutputType] | CompletionStream[CompletionsOutputType]:
191
- """Asynchronously generate a chat completion or structured output from a valid `litellm`
192
- compatible language model.
193
-
194
- This function provides a unified interface for creating completions with support
195
- for both text generation and structured outputs using Pydantic models or basic
196
- Python types. It leverages the instructor library for structured outputs and
197
- litellm for model compatibility across different providers.
198
-
199
- Args:
200
- messages (CompletionsInputParam): The input messages, which can be:
201
- - A string for simple prompts
202
- - A formatted string with role markers (e.g., "[system]...[user]...")
203
- - A single ChatCompletionMessageParam object
204
- - A list of ChatCompletionMessageParam objects
205
- instructions (Optional[str], optional): Additional system instructions to
206
- prepend to the conversation. Defaults to None.
207
- model (str, optional): The model identifier in litellm format (e.g.,
208
- "openai/gpt-4o-mini", "anthropic/claude-3-sonnet").
209
- Defaults to "openai/gpt-4o-mini".
210
- type (CompletionsOutputType, optional): The desired output type. Can be:
211
- - str for text completion (default)
212
- - A Pydantic BaseModel class for structured output
213
- - Basic Python types (int, float, bool, list, dict)
214
- Defaults to str.
215
- response_field_name (str, optional): The name of the field in the response to return.
216
- Defaults to "content".
217
- response_field_instruction (str, optional): The instruction for the response field.
218
- Defaults to "A response in the correct type as requested by the user, or relevant content."
219
- instructor_mode (CompletionsInstructorModeParam, optional): The instructor mode for
220
- structured outputs ("tool_call", "json", "json_schema", "markdown_json_schema",
221
- "function_call"). Defaults to "tool_call".
222
- max_retries (int, optional): Maximum number of retries for structured output
223
- validation. Defaults to 3.
224
- strict (bool, optional): Whether to use strict mode for structured outputs.
225
- Defaults to True.
226
- timeout (Optional[Union[float, str, Timeout]], optional): Request timeout.
227
- temperature (Optional[float], optional): Sampling temperature (0.0 to 2.0).
228
- top_p (Optional[float], optional): Nucleus sampling parameter.
229
- n (Optional[int], optional): Number of completions to generate.
230
- stream (Optional[bool], optional): Whether to stream the response.
231
- stream_options (Optional[Dict[str, Any]], optional): Additional streaming options.
232
- stop (Optional[str], optional): Stop sequences for completion.
233
- max_completion_tokens (Optional[int], optional): Maximum tokens in completion.
234
- max_tokens (Optional[int], optional): Legacy parameter for max_completion_tokens.
235
- modalities (Optional[List[ChatCompletionModality]], optional): Response modalities.
236
- prediction (Optional[ChatCompletionPredictionContentParam], optional): Prediction content.
237
- audio (Optional[ChatCompletionAudioParam], optional): Audio parameters.
238
- presence_penalty (Optional[float], optional): Presence penalty (-2.0 to 2.0).
239
- frequency_penalty (Optional[float], optional): Frequency penalty (-2.0 to 2.0).
240
- logit_bias (Optional[Dict[str, float]], optional): Token logit biases.
241
- user (Optional[str], optional): User identifier for tracking.
242
- reasoning_effort (Optional[Literal["low", "medium", "high"]], optional):
243
- Reasoning effort level for supported models.
244
- seed (Optional[int], optional): Random seed for deterministic outputs.
245
- tools (Optional[List], optional): Available tools for function calling.
246
- tool_choice (Optional[Union[str, Dict[str, Any]]], optional): Tool selection strategy.
247
- logprobs (Optional[bool], optional): Whether to return log probabilities.
248
- top_logprobs (Optional[int], optional): Number of top log probabilities to return.
249
- parallel_tool_calls (Optional[bool], optional): Whether to allow parallel tool calls.
250
- web_search_options (Optional[OpenAIWebSearchOptions], optional): Web search configuration.
251
- deployment_id (Optional[str], optional): Azure OpenAI deployment ID.
252
- extra_headers (Optional[Dict[str, str]], optional): Additional HTTP headers.
253
- base_url (Optional[str], optional): Custom API base URL.
254
- functions (Optional[List], optional): Legacy functions parameter.
255
- function_call (Optional[str], optional): Legacy function call parameter.
256
- api_version (Optional[str], optional): API version for Azure OpenAI.
257
- api_key (Optional[str], optional): API key override.
258
- model_list (Optional[list], optional): List of model configurations.
259
- thinking (Optional[AnthropicThinkingParam], optional): Anthropic thinking parameters.
260
-
261
- Returns:
262
- Union[Completion[CompletionsOutputType], CompletionStream[CompletionsOutputType]]:
263
- - Completion object containing the generated output if stream=False
264
- - CompletionStream object for iterating over chunks if stream=True
265
-
266
- Examples:
267
- Basic text completion:
268
-
269
- >>> completion = create_completion(
270
- ... messages="What is the capital of France?",
271
- ... model="openai/gpt-4o-mini"
272
- ... )
273
- >>> print(completion.content)
274
- "The capital of France is Paris."
275
-
276
- Structured output with Pydantic model:
277
-
278
- >>> from pydantic import BaseModel
279
- >>> class Person(BaseModel):
280
- ... name: str
281
- ... age: int
282
- >>>
283
- >>> completion = create_completion(
284
- ... messages="Extract: John is 25 years old",
285
- ... type=Person,
286
- ... model="openai/gpt-4o-mini"
287
- ... )
288
- >>> print(completion.output.name) # "John"
289
- >>> print(completion.output.age) # 25
290
-
291
- Streaming completion:
292
-
293
- >>> stream = create_completion(
294
- ... messages="Tell me a story",
295
- ... stream=True,
296
- ... model="openai/gpt-4o-mini"
297
- ... )
298
- >>> for chunk in stream:
299
- ... print(chunk.content, end="")
300
-
301
- Simple type extraction:
302
-
303
- >>> completion = create_completion(
304
- ... messages="How many days are in a week?",
305
- ... type=int,
306
- ... model="openai/gpt-4o-mini"
307
- ... )
308
- >>> print(completion.output) # 7
309
-
310
- Conversation with multiple messages:
311
-
312
- >>> completion = create_completion(
313
- ... messages=[
314
- ... {"role": "system", "content": "You are a helpful assistant."},
315
- ... {"role": "user", "content": "What's 2+2?"},
316
- ... {"role": "assistant", "content": "2+2 equals 4."},
317
- ... {"role": "user", "content": "What about 3+3?"}
318
- ... ],
319
- ... model="openai/gpt-4o-mini"
320
- ... )
321
- >>> print(completion.content)
322
- "3+3 equals 6."
323
-
324
- Raises:
325
- CompletionsError: If there's an error during completion generation or
326
- input parsing.
327
- ValidationError: If structured output validation fails after max_retries.
328
- """
329
- return await CompletionsClient.async_structured_output(
330
- messages=messages,
331
- instructions=instructions,
332
- model=model,
333
- type=type,
334
- response_field_name=response_field_name,
335
- response_field_instruction=response_field_instruction,
336
- instructor_mode=instructor_mode,
337
- max_retries=max_retries,
338
- strict=strict,
339
- timeout=timeout,
340
- temperature=temperature,
341
- top_p=top_p,
342
- n=n,
343
- stream=stream,
344
- stream_options=stream_options,
345
- stop=stop,
346
- max_completion_tokens=max_completion_tokens,
347
- max_tokens=max_tokens,
348
- modalities=modalities,
349
- prediction=prediction,
350
- audio=audio,
351
- presence_penalty=presence_penalty,
352
- frequency_penalty=frequency_penalty,
353
- logit_bias=logit_bias,
354
- user=user,
355
- reasoning_effort=reasoning_effort,
356
- seed=seed,
357
- tools=tools,
358
- tool_choice=tool_choice,
359
- logprobs=logprobs,
360
- top_logprobs=top_logprobs,
361
- parallel_tool_calls=parallel_tool_calls,
362
- web_search_options=web_search_options,
363
- deployment_id=deployment_id,
364
- extra_headers=extra_headers,
365
- base_url=base_url,
366
- functions=functions,
367
- function_call=function_call,
368
- api_version=api_version,
369
- api_key=api_key,
370
- model_list=model_list,
371
- thinking=thinking,
372
- )
373
-
374
-
375
- # Sync overloads
376
- @overload
377
- def create_completion(
378
- messages: CompletionsInputParam,
379
- instructions: Optional[str] = None,
380
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
381
- type: CompletionsOutputType = str,
382
- response_field_name: str = "content",
383
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
384
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
385
- max_retries: int = 3,
386
- strict: bool = True,
387
- *,
388
- timeout: Optional[Union[float, str, Timeout]] = None,
389
- temperature: Optional[float] = None,
390
- top_p: Optional[float] = None,
391
- n: Optional[int] = None,
392
- stream: Literal[True],
393
- stream_options: Optional[Dict[str, Any]] = None,
394
- stop: Optional[str] = None,
395
- max_completion_tokens: Optional[int] = None,
396
- max_tokens: Optional[int] = None,
397
- modalities: Optional[List[ChatCompletionModality]] = None,
398
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
399
- audio: Optional[ChatCompletionAudioParam] = None,
400
- presence_penalty: Optional[float] = None,
401
- frequency_penalty: Optional[float] = None,
402
- logit_bias: Optional[Dict[str, float]] = None,
403
- user: Optional[str] = None,
404
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
405
- # NOTE: response_format is not used within the `completions` resource
406
- # in place of `instructor` and the `type` parameter
407
- seed: Optional[int] = None,
408
- tools: Optional[List] = None,
409
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
410
- logprobs: Optional[bool] = None,
411
- top_logprobs: Optional[int] = None,
412
- parallel_tool_calls: Optional[bool] = None,
413
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
414
- deployment_id: Optional[str] = None,
415
- extra_headers: Optional[Dict[str, str]] = None,
416
- base_url: Optional[str] = None,
417
- functions: Optional[List] = None,
418
- function_call: Optional[str] = None,
419
- # set api_base, api_version, api_key
420
- api_version: Optional[str] = None,
421
- api_key: Optional[str] = None,
422
- model_list: Optional[list] = None,
423
- # Optional liteLLM function params
424
- thinking: Optional[AnthropicThinkingParam] = None,
425
- ) -> CompletionStream[CompletionsOutputType]: ...
426
-
427
-
428
- @overload
429
- def create_completion(
430
- messages: CompletionsInputParam,
431
- instructions: Optional[str] = None,
432
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
433
- type: CompletionsOutputType = str,
434
- response_field_name: str = "content",
435
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
436
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
437
- max_retries: int = 3,
438
- strict: bool = True,
439
- *,
440
- timeout: Optional[Union[float, str, Timeout]] = None,
441
- temperature: Optional[float] = None,
442
- top_p: Optional[float] = None,
443
- n: Optional[int] = None,
444
- stream: Literal[False] = False,
445
- stream_options: Optional[Dict[str, Any]] = None,
446
- stop: Optional[str] = None,
447
- max_completion_tokens: Optional[int] = None,
448
- max_tokens: Optional[int] = None,
449
- modalities: Optional[List[ChatCompletionModality]] = None,
450
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
451
- audio: Optional[ChatCompletionAudioParam] = None,
452
- presence_penalty: Optional[float] = None,
453
- frequency_penalty: Optional[float] = None,
454
- logit_bias: Optional[Dict[str, float]] = None,
455
- user: Optional[str] = None,
456
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
457
- # NOTE: response_format is not used within the `completions` resource
458
- # in place of `instructor` and the `type` parameter
459
- seed: Optional[int] = None,
460
- tools: Optional[List] = None,
461
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
462
- logprobs: Optional[bool] = None,
463
- top_logprobs: Optional[int] = None,
464
- parallel_tool_calls: Optional[bool] = None,
465
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
466
- deployment_id: Optional[str] = None,
467
- extra_headers: Optional[Dict[str, str]] = None,
468
- base_url: Optional[str] = None,
469
- functions: Optional[List] = None,
470
- function_call: Optional[str] = None,
471
- # set api_base, api_version, api_key
472
- api_version: Optional[str] = None,
473
- api_key: Optional[str] = None,
474
- model_list: Optional[list] = None,
475
- # Optional liteLLM function params
476
- thinking: Optional[AnthropicThinkingParam] = None,
477
- ) -> Completion[CompletionsOutputType]: ...
478
-
479
-
480
- def create_completion(
481
- messages: CompletionsInputParam,
482
- instructions: Optional[str] = None,
483
- model: str | CompletionsModelName = "openai/gpt-4o-mini",
484
- type: CompletionsOutputType = str,
485
- response_field_name: str = "content",
486
- response_field_instruction: str = "A response in the correct type as requested by the user, or relevant content.",
487
- instructor_mode: CompletionsInstructorModeParam = "tool_call",
488
- max_retries: int = 3,
489
- strict: bool = True,
490
- *,
491
- timeout: Optional[Union[float, str, Timeout]] = None,
492
- temperature: Optional[float] = None,
493
- top_p: Optional[float] = None,
494
- n: Optional[int] = None,
495
- stream: Optional[bool] = None,
496
- stream_options: Optional[Dict[str, Any]] = None,
497
- stop: Optional[str] = None,
498
- max_completion_tokens: Optional[int] = None,
499
- max_tokens: Optional[int] = None,
500
- modalities: Optional[List[ChatCompletionModality]] = None,
501
- prediction: Optional[ChatCompletionPredictionContentParam] = None,
502
- audio: Optional[ChatCompletionAudioParam] = None,
503
- presence_penalty: Optional[float] = None,
504
- frequency_penalty: Optional[float] = None,
505
- logit_bias: Optional[Dict[str, float]] = None,
506
- user: Optional[str] = None,
507
- reasoning_effort: Optional[Literal["low", "medium", "high"]] = None,
508
- # NOTE: response_format is not used within the `completions` resource
509
- # in place of `instructor` and the `type` parameter
510
- seed: Optional[int] = None,
511
- tools: Optional[List] = None,
512
- tool_choice: Optional[Union[str, Dict[str, Any]]] = None,
513
- logprobs: Optional[bool] = None,
514
- top_logprobs: Optional[int] = None,
515
- parallel_tool_calls: Optional[bool] = None,
516
- web_search_options: Optional[OpenAIWebSearchOptions] = None,
517
- deployment_id: Optional[str] = None,
518
- extra_headers: Optional[Dict[str, str]] = None,
519
- base_url: Optional[str] = None,
520
- functions: Optional[List] = None,
521
- function_call: Optional[str] = None,
522
- # set api_base, api_version, api_key
523
- api_version: Optional[str] = None,
524
- api_key: Optional[str] = None,
525
- model_list: Optional[list] = None,
526
- # Optional liteLLM function params
527
- thinking: Optional[AnthropicThinkingParam] = None,
528
- ) -> Completion[CompletionsOutputType] | CompletionStream[CompletionsOutputType]:
529
- """Generate a chat completion or structured output from a valid `litellm`
530
- compatible language model.
531
-
532
- This function provides a unified interface for creating completions with support
533
- for both text generation and structured outputs using Pydantic models or basic
534
- Python types. It leverages the instructor library for structured outputs and
535
- litellm for model compatibility across different providers.
536
-
537
- Args:
538
- messages (CompletionsInputParam): The input messages, which can be:
539
- - A string for simple prompts
540
- - A formatted string with role markers (e.g., "[system]...[user]...")
541
- - A single ChatCompletionMessageParam object
542
- - A list of ChatCompletionMessageParam objects
543
- instructions (Optional[str], optional): Additional system instructions to
544
- prepend to the conversation. Defaults to None.
545
- model (str, optional): The model identifier in litellm format (e.g.,
546
- "openai/gpt-4o-mini", "anthropic/claude-3-sonnet").
547
- Defaults to "openai/gpt-4o-mini".
548
- type (CompletionsOutputType, optional): The desired output type. Can be:
549
- - str for text completion (default)
550
- - A Pydantic BaseModel class for structured output
551
- - Basic Python types (int, float, bool, list, dict)
552
- Defaults to str.
553
- response_field_name (str, optional): The name of the field in the response to return.
554
- Defaults to "content".
555
- response_field_instruction (str, optional): The instruction for the response field.
556
- Defaults to "A response in the correct type as requested by the user, or relevant content."
557
- instructor_mode (CompletionsInstructorModeParam, optional): The instructor mode for
558
- structured outputs ("tool_call", "json", "json_schema", "markdown_json_schema",
559
- "function_call"). Defaults to "tool_call".
560
- max_retries (int, optional): Maximum number of retries for structured output
561
- validation. Defaults to 3.
562
- strict (bool, optional): Whether to use strict mode for structured outputs.
563
- Defaults to True.
564
- timeout (Optional[Union[float, str, Timeout]], optional): Request timeout.
565
- temperature (Optional[float], optional): Sampling temperature (0.0 to 2.0).
566
- top_p (Optional[float], optional): Nucleus sampling parameter.
567
- n (Optional[int], optional): Number of completions to generate.
568
- stream (Optional[bool], optional): Whether to stream the response.
569
- stream_options (Optional[Dict[str, Any]], optional): Additional streaming options.
570
- stop (Optional[str], optional): Stop sequences for completion.
571
- max_completion_tokens (Optional[int], optional): Maximum tokens in completion.
572
- max_tokens (Optional[int], optional): Legacy parameter for max_completion_tokens.
573
- modalities (Optional[List[ChatCompletionModality]], optional): Response modalities.
574
- prediction (Optional[ChatCompletionPredictionContentParam], optional): Prediction content.
575
- audio (Optional[ChatCompletionAudioParam], optional): Audio parameters.
576
- presence_penalty (Optional[float], optional): Presence penalty (-2.0 to 2.0).
577
- frequency_penalty (Optional[float], optional): Frequency penalty (-2.0 to 2.0).
578
- logit_bias (Optional[Dict[str, float]], optional): Token logit biases.
579
- user (Optional[str], optional): User identifier for tracking.
580
- reasoning_effort (Optional[Literal["low", "medium", "high"]], optional):
581
- Reasoning effort level for supported models.
582
- seed (Optional[int], optional): Random seed for deterministic outputs.
583
- tools (Optional[List], optional): Available tools for function calling.
584
- tool_choice (Optional[Union[str, Dict[str, Any]]], optional): Tool selection strategy.
585
- logprobs (Optional[bool], optional): Whether to return log probabilities.
586
- top_logprobs (Optional[int], optional): Number of top log probabilities to return.
587
- parallel_tool_calls (Optional[bool], optional): Whether to allow parallel tool calls.
588
- web_search_options (Optional[OpenAIWebSearchOptions], optional): Web search configuration.
589
- deployment_id (Optional[str], optional): Azure OpenAI deployment ID.
590
- extra_headers (Optional[Dict[str, str]], optional): Additional HTTP headers.
591
- base_url (Optional[str], optional): Custom API base URL.
592
- functions (Optional[List], optional): Legacy functions parameter.
593
- function_call (Optional[str], optional): Legacy function call parameter.
594
- api_version (Optional[str], optional): API version for Azure OpenAI.
595
- api_key (Optional[str], optional): API key override.
596
- model_list (Optional[list], optional): List of model configurations.
597
- thinking (Optional[AnthropicThinkingParam], optional): Anthropic thinking parameters.
598
-
599
- Returns:
600
- Union[Completion[CompletionsOutputType], CompletionStream[CompletionsOutputType]]:
601
- - Completion object containing the generated output if stream=False
602
- - CompletionStream object for iterating over chunks if stream=True
603
-
604
- Examples:
605
- Basic text completion:
606
-
607
- >>> completion = create_completion(
608
- ... messages="What is the capital of France?",
609
- ... model="openai/gpt-4o-mini"
610
- ... )
611
- >>> print(completion.content)
612
- "The capital of France is Paris."
613
-
614
- Structured output with Pydantic model:
615
-
616
- >>> from pydantic import BaseModel
617
- >>> class Person(BaseModel):
618
- ... name: str
619
- ... age: int
620
- >>>
621
- >>> completion = create_completion(
622
- ... messages="Extract: John is 25 years old",
623
- ... type=Person,
624
- ... model="openai/gpt-4o-mini"
625
- ... )
626
- >>> print(completion.output.name) # "John"
627
- >>> print(completion.output.age) # 25
628
-
629
- Streaming completion:
630
-
631
- >>> stream = create_completion(
632
- ... messages="Tell me a story",
633
- ... stream=True,
634
- ... model="openai/gpt-4o-mini"
635
- ... )
636
- >>> for chunk in stream:
637
- ... print(chunk.content, end="")
638
-
639
- Simple type extraction:
640
-
641
- >>> completion = create_completion(
642
- ... messages="How many days are in a week?",
643
- ... type=int,
644
- ... model="openai/gpt-4o-mini"
645
- ... )
646
- >>> print(completion.output) # 7
647
-
648
- Conversation with multiple messages:
649
-
650
- >>> completion = create_completion(
651
- ... messages=[
652
- ... {"role": "system", "content": "You are a helpful assistant."},
653
- ... {"role": "user", "content": "What's 2+2?"},
654
- ... {"role": "assistant", "content": "2+2 equals 4."},
655
- ... {"role": "user", "content": "What about 3+3?"}
656
- ... ],
657
- ... model="openai/gpt-4o-mini"
658
- ... )
659
- >>> print(completion.content)
660
- "3+3 equals 6."
661
-
662
- Raises:
663
- CompletionsError: If there's an error during completion generation or
664
- input parsing.
665
- ValidationError: If structured output validation fails after max_retries.
666
- """
667
- return CompletionsClient.structured_output(
668
- messages=messages,
669
- instructions=instructions,
670
- model=model,
671
- type=type,
672
- response_field_name=response_field_name,
673
- response_field_instruction=response_field_instruction,
674
- instructor_mode=instructor_mode,
675
- max_retries=max_retries,
676
- strict=strict,
677
- timeout=timeout,
678
- temperature=temperature,
679
- top_p=top_p,
680
- n=n,
681
- stream=stream,
682
- stream_options=stream_options,
683
- stop=stop,
684
- max_completion_tokens=max_completion_tokens,
685
- max_tokens=max_tokens,
686
- modalities=modalities,
687
- prediction=prediction,
688
- audio=audio,
689
- presence_penalty=presence_penalty,
690
- frequency_penalty=frequency_penalty,
691
- logit_bias=logit_bias,
692
- user=user,
693
- reasoning_effort=reasoning_effort,
694
- seed=seed,
695
- tools=tools,
696
- tool_choice=tool_choice,
697
- logprobs=logprobs,
698
- top_logprobs=top_logprobs,
699
- parallel_tool_calls=parallel_tool_calls,
700
- web_search_options=web_search_options,
701
- deployment_id=deployment_id,
702
- extra_headers=extra_headers,
703
- base_url=base_url,
704
- functions=functions,
705
- function_call=function_call,
706
- api_version=api_version,
707
- api_key=api_key,
708
- model_list=model_list,
709
- thinking=thinking,
710
- )