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