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.
- hammad_python-0.0.15.dist-info/METADATA +184 -0
- hammad_python-0.0.15.dist-info/RECORD +4 -0
- hammad/__init__.py +0 -180
- hammad/_core/__init__.py +0 -1
- hammad/_core/_utils/__init__.py +0 -4
- hammad/_core/_utils/_import_utils.py +0 -182
- hammad/ai/__init__.py +0 -59
- hammad/ai/_utils.py +0 -142
- hammad/ai/completions/__init__.py +0 -44
- hammad/ai/completions/client.py +0 -729
- hammad/ai/completions/create.py +0 -686
- hammad/ai/completions/types.py +0 -711
- hammad/ai/completions/utils.py +0 -374
- hammad/ai/embeddings/__init__.py +0 -35
- hammad/ai/embeddings/client/__init__.py +0 -1
- hammad/ai/embeddings/client/base_embeddings_client.py +0 -26
- hammad/ai/embeddings/client/fastembed_text_embeddings_client.py +0 -200
- hammad/ai/embeddings/client/litellm_embeddings_client.py +0 -288
- hammad/ai/embeddings/create.py +0 -159
- hammad/ai/embeddings/types.py +0 -69
- hammad/base/__init__.py +0 -35
- hammad/base/fields.py +0 -546
- hammad/base/model.py +0 -1078
- hammad/base/utils.py +0 -280
- hammad/cache/__init__.py +0 -48
- hammad/cache/base_cache.py +0 -181
- hammad/cache/cache.py +0 -169
- hammad/cache/decorators.py +0 -261
- hammad/cache/file_cache.py +0 -80
- hammad/cache/ttl_cache.py +0 -74
- hammad/cli/__init__.py +0 -33
- hammad/cli/animations.py +0 -604
- hammad/cli/plugins.py +0 -781
- hammad/cli/styles/__init__.py +0 -55
- hammad/cli/styles/settings.py +0 -139
- hammad/cli/styles/types.py +0 -358
- hammad/cli/styles/utils.py +0 -480
- hammad/configuration/__init__.py +0 -35
- hammad/configuration/configuration.py +0 -564
- hammad/data/__init__.py +0 -39
- hammad/data/collections/__init__.py +0 -34
- hammad/data/collections/base_collection.py +0 -58
- hammad/data/collections/collection.py +0 -452
- hammad/data/collections/searchable_collection.py +0 -556
- hammad/data/collections/vector_collection.py +0 -603
- hammad/data/databases/__init__.py +0 -21
- hammad/data/databases/database.py +0 -902
- hammad/json/__init__.py +0 -21
- hammad/json/converters.py +0 -152
- hammad/logging/__init__.py +0 -35
- hammad/logging/decorators.py +0 -834
- hammad/logging/logger.py +0 -954
- hammad/multimodal/__init__.py +0 -24
- hammad/multimodal/audio.py +0 -96
- hammad/multimodal/image.py +0 -80
- hammad/multithreading/__init__.py +0 -304
- hammad/py.typed +0 -0
- hammad/pydantic/__init__.py +0 -43
- hammad/pydantic/converters.py +0 -623
- hammad/pydantic/models/__init__.py +0 -28
- hammad/pydantic/models/arbitrary_model.py +0 -46
- hammad/pydantic/models/cacheable_model.py +0 -79
- hammad/pydantic/models/fast_model.py +0 -318
- hammad/pydantic/models/function_model.py +0 -176
- hammad/pydantic/models/subscriptable_model.py +0 -63
- hammad/text/__init__.py +0 -82
- hammad/text/converters.py +0 -723
- hammad/text/markdown.py +0 -131
- hammad/text/text.py +0 -1066
- hammad/types/__init__.py +0 -11
- hammad/types/file.py +0 -358
- hammad/typing/__init__.py +0 -407
- hammad/web/__init__.py +0 -43
- hammad/web/http/__init__.py +0 -1
- hammad/web/http/client.py +0 -944
- hammad/web/models.py +0 -245
- hammad/web/openapi/__init__.py +0 -0
- hammad/web/openapi/client.py +0 -740
- hammad/web/search/__init__.py +0 -1
- hammad/web/search/client.py +0 -988
- hammad/web/utils.py +0 -472
- hammad/yaml/__init__.py +0 -30
- hammad/yaml/converters.py +0 -19
- hammad_python-0.0.13.dist-info/METADATA +0 -38
- hammad_python-0.0.13.dist-info/RECORD +0 -85
- {hammad_python-0.0.13.dist-info → hammad_python-0.0.15.dist-info}/WHEEL +0 -0
- {hammad_python-0.0.13.dist-info → hammad_python-0.0.15.dist-info}/licenses/LICENSE +0 -0
hammad/ai/completions/create.py
DELETED
@@ -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
|
-
)
|