aboutsummaryrefslogtreecommitdiff
path: root/.venv/lib/python3.12/site-packages/azure/ai/inference/models
diff options
context:
space:
mode:
Diffstat (limited to '.venv/lib/python3.12/site-packages/azure/ai/inference/models')
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/inference/models/__init__.py96
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/inference/models/_enums.py146
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/inference/models/_models.py1458
-rw-r--r--.venv/lib/python3.12/site-packages/azure/ai/inference/models/_patch.py576
4 files changed, 2276 insertions, 0 deletions
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/inference/models/__init__.py b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/__init__.py
new file mode 100644
index 00000000..66e62570
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/__init__.py
@@ -0,0 +1,96 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) Python Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=wrong-import-position
+
+from typing import TYPE_CHECKING
+
+if TYPE_CHECKING:
+ from ._patch import * # pylint: disable=unused-wildcard-import
+
+
+from ._models import ( # type: ignore
+ AudioContentItem,
+ ChatChoice,
+ ChatCompletions,
+ ChatCompletionsNamedToolChoice,
+ ChatCompletionsNamedToolChoiceFunction,
+ ChatCompletionsToolCall,
+ ChatCompletionsToolDefinition,
+ ChatResponseMessage,
+ CompletionsUsage,
+ ContentItem,
+ EmbeddingItem,
+ EmbeddingsResult,
+ EmbeddingsUsage,
+ FunctionCall,
+ FunctionDefinition,
+ ImageContentItem,
+ ImageEmbeddingInput,
+ ImageUrl,
+ InputAudio,
+ JsonSchemaFormat,
+ ModelInfo,
+ StreamingChatChoiceUpdate,
+ StreamingChatCompletionsUpdate,
+ StreamingChatResponseMessageUpdate,
+ StreamingChatResponseToolCallUpdate,
+ TextContentItem,
+)
+
+from ._enums import ( # type: ignore
+ AudioContentFormat,
+ ChatCompletionsToolChoicePreset,
+ ChatRole,
+ CompletionsFinishReason,
+ EmbeddingEncodingFormat,
+ EmbeddingInputType,
+ ImageDetailLevel,
+ ModelType,
+)
+from ._patch import __all__ as _patch_all
+from ._patch import *
+from ._patch import patch_sdk as _patch_sdk
+
+__all__ = [
+ "AudioContentItem",
+ "ChatChoice",
+ "ChatCompletions",
+ "ChatCompletionsNamedToolChoice",
+ "ChatCompletionsNamedToolChoiceFunction",
+ "ChatCompletionsToolCall",
+ "ChatCompletionsToolDefinition",
+ "ChatResponseMessage",
+ "CompletionsUsage",
+ "ContentItem",
+ "EmbeddingItem",
+ "EmbeddingsResult",
+ "EmbeddingsUsage",
+ "FunctionCall",
+ "FunctionDefinition",
+ "ImageContentItem",
+ "ImageEmbeddingInput",
+ "ImageUrl",
+ "InputAudio",
+ "JsonSchemaFormat",
+ "ModelInfo",
+ "StreamingChatChoiceUpdate",
+ "StreamingChatCompletionsUpdate",
+ "StreamingChatResponseMessageUpdate",
+ "StreamingChatResponseToolCallUpdate",
+ "TextContentItem",
+ "AudioContentFormat",
+ "ChatCompletionsToolChoicePreset",
+ "ChatRole",
+ "CompletionsFinishReason",
+ "EmbeddingEncodingFormat",
+ "EmbeddingInputType",
+ "ImageDetailLevel",
+ "ModelType",
+]
+__all__.extend([p for p in _patch_all if p not in __all__]) # pyright: ignore
+_patch_sdk()
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_enums.py b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_enums.py
new file mode 100644
index 00000000..6214f668
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_enums.py
@@ -0,0 +1,146 @@
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) Python Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+
+from enum import Enum
+from azure.core import CaseInsensitiveEnumMeta
+
+
+class AudioContentFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """A representation of the possible audio formats for audio."""
+
+ WAV = "wav"
+ """Specifies audio in WAV format."""
+ MP3 = "mp3"
+ """Specifies audio in MP3 format."""
+
+
+class ChatCompletionsToolChoicePreset(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Represents a generic policy for how a chat completions tool may be selected."""
+
+ AUTO = "auto"
+ """Specifies that the model may either use any of the tools provided in this chat completions
+ request or
+ instead return a standard chat completions response as if no tools were provided."""
+ NONE = "none"
+ """Specifies that the model should not respond with a tool call and should instead provide a
+ standard chat
+ completions response. Response content may still be influenced by the provided tool
+ definitions."""
+ REQUIRED = "required"
+ """Specifies that the model should respond with a call to one or more tools."""
+
+
+class ChatRole(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """A description of the intended purpose of a message within a chat completions interaction."""
+
+ SYSTEM = "system"
+ """The role that instructs or sets the behavior of the assistant."""
+ USER = "user"
+ """The role that provides input for chat completions."""
+ ASSISTANT = "assistant"
+ """The role that provides responses to system-instructed, user-prompted input."""
+ TOOL = "tool"
+ """The role that represents extension tool activity within a chat completions operation."""
+ DEVELOPER = "developer"
+ """The role that instructs or sets the behavior of the assistant. Some AI models support this role
+ instead of the 'system' role."""
+
+
+class CompletionsFinishReason(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Representation of the manner in which a completions response concluded."""
+
+ STOPPED = "stop"
+ """Completions ended normally and reached its end of token generation."""
+ TOKEN_LIMIT_REACHED = "length"
+ """Completions exhausted available token limits before generation could complete."""
+ CONTENT_FILTERED = "content_filter"
+ """Completions generated a response that was identified as potentially sensitive per content
+ moderation policies."""
+ TOOL_CALLS = "tool_calls"
+ """Completion ended with the model calling a provided tool for output."""
+
+
+class EmbeddingEncodingFormat(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """The format of the embeddings result.
+ Returns a 422 error if the model doesn't support the value or parameter.
+ """
+
+ BASE64 = "base64"
+ """Base64"""
+ BINARY = "binary"
+ """Binary"""
+ FLOAT = "float"
+ """Floating point"""
+ INT8 = "int8"
+ """Signed 8-bit integer"""
+ UBINARY = "ubinary"
+ """ubinary"""
+ UINT8 = "uint8"
+ """Unsigned 8-bit integer"""
+
+
+class EmbeddingInputType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Represents the input types used for embedding search."""
+
+ TEXT = "text"
+ """Indicates the input is a general text input."""
+ QUERY = "query"
+ """Indicates the input represents a search query to find the most relevant documents in your
+ vector database."""
+ DOCUMENT = "document"
+ """Indicates the input represents a document that is stored in a vector database."""
+
+
+class ExtraParameters(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """Controls what happens if extra parameters, undefined by the REST API, are passed in the JSON
+ request payload.
+ """
+
+ ERROR = "error"
+ """The service will error if it detected extra parameters in the request payload. This is the
+ service default."""
+ DROP = "drop"
+ """The service will ignore (drop) extra parameters in the request payload. It will only pass the
+ known parameters to the back-end AI model."""
+ PASS_THROUGH = "pass-through"
+ """The service will pass extra parameters to the back-end AI model."""
+
+
+class ImageDetailLevel(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """A representation of the possible image detail levels for image-based chat completions message
+ content.
+ """
+
+ AUTO = "auto"
+ """Specifies that the model should determine which detail level to apply using heuristics like
+ image size."""
+ LOW = "low"
+ """Specifies that image evaluation should be constrained to the 'low-res' model that may be faster
+ and consume fewer
+ tokens but may also be less accurate for highly detailed images."""
+ HIGH = "high"
+ """Specifies that image evaluation should enable the 'high-res' model that may be more accurate
+ for highly detailed
+ images but may also be slower and consume more tokens."""
+
+
+class ModelType(str, Enum, metaclass=CaseInsensitiveEnumMeta):
+ """The type of AI model."""
+
+ EMBEDDINGS = "embeddings"
+ """A model capable of generating embeddings from a text"""
+ IMAGE_GENERATION = "image_generation"
+ """A model capable of generating images from an image and text description"""
+ TEXT_GENERATION = "text_generation"
+ """A text generation model"""
+ IMAGE_EMBEDDINGS = "image_embeddings"
+ """A model capable of generating embeddings from an image"""
+ AUDIO_GENERATION = "audio_generation"
+ """A text-to-audio generative model"""
+ CHAT_COMPLETION = "chat_completion"
+ """A model capable of taking chat-formatted messages and generate responses"""
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_models.py b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_models.py
new file mode 100644
index 00000000..53934528
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_models.py
@@ -0,0 +1,1458 @@
+# pylint: disable=too-many-lines
+# coding=utf-8
+# --------------------------------------------------------------------------
+# Copyright (c) Microsoft Corporation. All rights reserved.
+# Licensed under the MIT License. See License.txt in the project root for license information.
+# Code generated by Microsoft (R) Python Code Generator.
+# Changes may cause incorrect behavior and will be lost if the code is regenerated.
+# --------------------------------------------------------------------------
+# pylint: disable=useless-super-delegation
+
+import datetime
+from typing import Any, Dict, List, Literal, Mapping, Optional, TYPE_CHECKING, Union, overload
+
+from .. import _model_base
+from .._model_base import rest_discriminator, rest_field
+from ._enums import ChatRole
+
+if TYPE_CHECKING:
+ from .. import models as _models
+
+
+class ContentItem(_model_base.Model):
+ """An abstract representation of a structured content item within a chat message.
+
+ You probably want to use the sub-classes and not this class directly. Known sub-classes are:
+ ImageContentItem, AudioContentItem, TextContentItem
+
+ :ivar type: The discriminated object type. Required. Default value is None.
+ :vartype type: str
+ """
+
+ __mapping__: Dict[str, _model_base.Model] = {}
+ type: str = rest_discriminator(name="type")
+ """The discriminated object type. Required. Default value is None."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ type: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class AudioContentItem(ContentItem, discriminator="input_audio"):
+ """A structured chat content item containing an audio content.
+
+ :ivar type: The discriminated object type: always 'input_audio' for this type. Required.
+ Default value is "input_audio".
+ :vartype type: str
+ :ivar input_audio: The details of the input audio. Required.
+ :vartype input_audio: ~azure.ai.inference.models.InputAudio
+ """
+
+ type: Literal["input_audio"] = rest_discriminator(name="type") # type: ignore
+ """The discriminated object type: always 'input_audio' for this type. Required. Default value is
+ \"input_audio\"."""
+ input_audio: "_models.InputAudio" = rest_field()
+ """The details of the input audio. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ input_audio: "_models.InputAudio",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="input_audio", **kwargs)
+
+
+class ChatChoice(_model_base.Model):
+ """The representation of a single prompt completion as part of an overall chat completions
+ request.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated.
+
+
+ :ivar index: The ordered index associated with this chat completions choice. Required.
+ :vartype index: int
+ :ivar finish_reason: The reason that this chat completions choice completed its generated.
+ Required. Known values are: "stop", "length", "content_filter", and "tool_calls".
+ :vartype finish_reason: str or ~azure.ai.inference.models.CompletionsFinishReason
+ :ivar message: The chat message for a given chat completions prompt. Required.
+ :vartype message: ~azure.ai.inference.models.ChatResponseMessage
+ """
+
+ index: int = rest_field()
+ """The ordered index associated with this chat completions choice. Required."""
+ finish_reason: Union[str, "_models.CompletionsFinishReason"] = rest_field()
+ """The reason that this chat completions choice completed its generated. Required. Known values
+ are: \"stop\", \"length\", \"content_filter\", and \"tool_calls\"."""
+ message: "_models.ChatResponseMessage" = rest_field()
+ """The chat message for a given chat completions prompt. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ index: int,
+ finish_reason: Union[str, "_models.CompletionsFinishReason"],
+ message: "_models.ChatResponseMessage",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ChatCompletions(_model_base.Model):
+ """Representation of the response data from a chat completions request.
+ Completions support a wide variety of tasks and generate text that continues from or
+ "completes"
+ provided prompt data.
+
+
+ :ivar id: A unique identifier associated with this chat completions response. Required.
+ :vartype id: str
+ :ivar created: The first timestamp associated with generation activity for this completions
+ response,
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970. Required.
+ :vartype created: ~datetime.datetime
+ :ivar model: The model used for the chat completion. Required.
+ :vartype model: str
+ :ivar choices: The collection of completions choices associated with this completions response.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated. Required.
+ :vartype choices: list[~azure.ai.inference.models.ChatChoice]
+ :ivar usage: Usage information for tokens processed and generated as part of this completions
+ operation. Required.
+ :vartype usage: ~azure.ai.inference.models.CompletionsUsage
+ """
+
+ id: str = rest_field()
+ """A unique identifier associated with this chat completions response. Required."""
+ created: datetime.datetime = rest_field(format="unix-timestamp")
+ """The first timestamp associated with generation activity for this completions response,
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970. Required."""
+ model: str = rest_field()
+ """The model used for the chat completion. Required."""
+ choices: List["_models.ChatChoice"] = rest_field()
+ """The collection of completions choices associated with this completions response.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated. Required."""
+ usage: "_models.CompletionsUsage" = rest_field()
+ """Usage information for tokens processed and generated as part of this completions operation.
+ Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ id: str, # pylint: disable=redefined-builtin
+ created: datetime.datetime,
+ model: str,
+ choices: List["_models.ChatChoice"],
+ usage: "_models.CompletionsUsage",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ChatCompletionsNamedToolChoice(_model_base.Model):
+ """A tool selection of a specific, named function tool that will limit chat completions to using
+ the named function.
+
+ :ivar type: The type of the tool. Currently, only ``function`` is supported. Required. Default
+ value is "function".
+ :vartype type: str
+ :ivar function: The function that should be called. Required.
+ :vartype function: ~azure.ai.inference.models.ChatCompletionsNamedToolChoiceFunction
+ """
+
+ type: Literal["function"] = rest_field()
+ """The type of the tool. Currently, only ``function`` is supported. Required. Default value is
+ \"function\"."""
+ function: "_models.ChatCompletionsNamedToolChoiceFunction" = rest_field()
+ """The function that should be called. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ function: "_models.ChatCompletionsNamedToolChoiceFunction",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+ self.type: Literal["function"] = "function"
+
+
+class ChatCompletionsNamedToolChoiceFunction(_model_base.Model):
+ """A tool selection of a specific, named function tool that will limit chat completions to using
+ the named function.
+
+ :ivar name: The name of the function that should be called. Required.
+ :vartype name: str
+ """
+
+ name: str = rest_field()
+ """The name of the function that should be called. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ name: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ChatCompletionsResponseFormat(_model_base.Model):
+ """Represents the format that the model must output. Use this to enable JSON mode instead of the
+ default text mode.
+ Note that to enable JSON mode, some AI models may also require you to instruct the model to
+ produce JSON
+ via a system or user message.
+
+ You probably want to use the sub-classes and not this class directly. Known sub-classes are:
+ ChatCompletionsResponseFormatJsonObject, ChatCompletionsResponseFormatJsonSchema,
+ ChatCompletionsResponseFormatText
+
+ :ivar type: The response format type to use for chat completions. Required. Default value is
+ None.
+ :vartype type: str
+ """
+
+ __mapping__: Dict[str, _model_base.Model] = {}
+ type: str = rest_discriminator(name="type")
+ """The response format type to use for chat completions. Required. Default value is None."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ type: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ChatCompletionsResponseFormatJsonObject(ChatCompletionsResponseFormat, discriminator="json_object"):
+ """A response format for Chat Completions that restricts responses to emitting valid JSON objects.
+ Note that to enable JSON mode, some AI models may also require you to instruct the model to
+ produce JSON
+ via a system or user message.
+
+ :ivar type: Response format type: always 'json_object' for this object. Required. Default value
+ is "json_object".
+ :vartype type: str
+ """
+
+ type: Literal["json_object"] = rest_discriminator(name="type") # type: ignore
+ """Response format type: always 'json_object' for this object. Required. Default value is
+ \"json_object\"."""
+
+ @overload
+ def __init__(
+ self,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="json_object", **kwargs)
+
+
+class ChatCompletionsResponseFormatJsonSchema(ChatCompletionsResponseFormat, discriminator="json_schema"):
+ """A response format for Chat Completions that restricts responses to emitting valid JSON objects,
+ with a
+ JSON schema specified by the caller.
+
+ :ivar type: The type of response format being defined: ``json_schema``. Required. Default value
+ is "json_schema".
+ :vartype type: str
+ :ivar json_schema: The definition of the required JSON schema in the response, and associated
+ metadata. Required.
+ :vartype json_schema: ~azure.ai.inference.models.JsonSchemaFormat
+ """
+
+ type: Literal["json_schema"] = rest_discriminator(name="type") # type: ignore
+ """The type of response format being defined: ``json_schema``. Required. Default value is
+ \"json_schema\"."""
+ json_schema: "_models.JsonSchemaFormat" = rest_field()
+ """The definition of the required JSON schema in the response, and associated metadata. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ json_schema: "_models.JsonSchemaFormat",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="json_schema", **kwargs)
+
+
+class ChatCompletionsResponseFormatText(ChatCompletionsResponseFormat, discriminator="text"):
+ """A response format for Chat Completions that emits text responses. This is the default response
+ format.
+
+ :ivar type: Response format type: always 'text' for this object. Required. Default value is
+ "text".
+ :vartype type: str
+ """
+
+ type: Literal["text"] = rest_discriminator(name="type") # type: ignore
+ """Response format type: always 'text' for this object. Required. Default value is \"text\"."""
+
+ @overload
+ def __init__(
+ self,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="text", **kwargs)
+
+
+class ChatCompletionsToolCall(_model_base.Model):
+ """A function tool call requested by the AI model.
+
+ :ivar id: The ID of the tool call. Required.
+ :vartype id: str
+ :ivar type: The type of tool call. Currently, only ``function`` is supported. Required. Default
+ value is "function".
+ :vartype type: str
+ :ivar function: The details of the function call requested by the AI model. Required.
+ :vartype function: ~azure.ai.inference.models.FunctionCall
+ """
+
+ id: str = rest_field()
+ """The ID of the tool call. Required."""
+ type: Literal["function"] = rest_field()
+ """The type of tool call. Currently, only ``function`` is supported. Required. Default value is
+ \"function\"."""
+ function: "_models.FunctionCall" = rest_field()
+ """The details of the function call requested by the AI model. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ id: str, # pylint: disable=redefined-builtin
+ function: "_models.FunctionCall",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+ self.type: Literal["function"] = "function"
+
+
+class ChatCompletionsToolDefinition(_model_base.Model):
+ """The definition of a chat completions tool that can call a function.
+
+ :ivar type: The type of the tool. Currently, only ``function`` is supported. Required. Default
+ value is "function".
+ :vartype type: str
+ :ivar function: The function definition details for the function tool. Required.
+ :vartype function: ~azure.ai.inference.models.FunctionDefinition
+ """
+
+ type: Literal["function"] = rest_field()
+ """The type of the tool. Currently, only ``function`` is supported. Required. Default value is
+ \"function\"."""
+ function: "_models.FunctionDefinition" = rest_field()
+ """The function definition details for the function tool. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ function: "_models.FunctionDefinition",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+ self.type: Literal["function"] = "function"
+
+
+class ChatRequestMessage(_model_base.Model):
+ """An abstract representation of a chat message as provided in a request.
+
+ You probably want to use the sub-classes and not this class directly. Known sub-classes are:
+ ChatRequestAssistantMessage, ChatRequestDeveloperMessage, ChatRequestSystemMessage,
+ ChatRequestToolMessage, ChatRequestUserMessage
+
+ :ivar role: The chat role associated with this message. Required. Known values are: "system",
+ "user", "assistant", "tool", and "developer".
+ :vartype role: str or ~azure.ai.inference.models.ChatRole
+ """
+
+ __mapping__: Dict[str, _model_base.Model] = {}
+ role: str = rest_discriminator(name="role")
+ """The chat role associated with this message. Required. Known values are: \"system\", \"user\",
+ \"assistant\", \"tool\", and \"developer\"."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ role: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ChatRequestAssistantMessage(ChatRequestMessage, discriminator="assistant"):
+ """A request chat message representing response or action from the assistant.
+
+ :ivar role: The chat role associated with this message, which is always 'assistant' for
+ assistant messages. Required. The role that provides responses to system-instructed,
+ user-prompted input.
+ :vartype role: str or ~azure.ai.inference.models.ASSISTANT
+ :ivar content: The content of the message.
+ :vartype content: str
+ :ivar tool_calls: The tool calls that must be resolved and have their outputs appended to
+ subsequent input messages for the chat
+ completions request to resolve as configured.
+ :vartype tool_calls: list[~azure.ai.inference.models.ChatCompletionsToolCall]
+ """
+
+ role: Literal[ChatRole.ASSISTANT] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'assistant' for assistant messages.
+ Required. The role that provides responses to system-instructed, user-prompted input."""
+ content: Optional[str] = rest_field()
+ """The content of the message."""
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = rest_field()
+ """The tool calls that must be resolved and have their outputs appended to subsequent input
+ messages for the chat
+ completions request to resolve as configured."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ content: Optional[str] = None,
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, role=ChatRole.ASSISTANT, **kwargs)
+
+
+class ChatRequestDeveloperMessage(ChatRequestMessage, discriminator="developer"):
+ """A request chat message containing system instructions that influence how the model will
+ generate a chat completions
+ response. Some AI models support a developer message instead of a system message.
+
+ :ivar role: The chat role associated with this message, which is always 'developer' for
+ developer messages. Required. The role that instructs or sets the behavior of the assistant.
+ Some AI models support this role instead of the 'system' role.
+ :vartype role: str or ~azure.ai.inference.models.DEVELOPER
+ :ivar content: The contents of the developer message. Required.
+ :vartype content: str
+ """
+
+ role: Literal[ChatRole.DEVELOPER] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'developer' for developer messages.
+ Required. The role that instructs or sets the behavior of the assistant. Some AI models support
+ this role instead of the 'system' role."""
+ content: str = rest_field()
+ """The contents of the developer message. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ content: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, role=ChatRole.DEVELOPER, **kwargs)
+
+
+class ChatRequestSystemMessage(ChatRequestMessage, discriminator="system"):
+ """A request chat message containing system instructions that influence how the model will
+ generate a chat completions
+ response.
+
+ :ivar role: The chat role associated with this message, which is always 'system' for system
+ messages. Required. The role that instructs or sets the behavior of the assistant.
+ :vartype role: str or ~azure.ai.inference.models.SYSTEM
+ :ivar content: The contents of the system message. Required.
+ :vartype content: str
+ """
+
+ role: Literal[ChatRole.SYSTEM] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'system' for system messages.
+ Required. The role that instructs or sets the behavior of the assistant."""
+ content: str = rest_field()
+ """The contents of the system message. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ content: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, role=ChatRole.SYSTEM, **kwargs)
+
+
+class ChatRequestToolMessage(ChatRequestMessage, discriminator="tool"):
+ """A request chat message representing requested output from a configured tool.
+
+ :ivar role: The chat role associated with this message, which is always 'tool' for tool
+ messages. Required. The role that represents extension tool activity within a chat completions
+ operation.
+ :vartype role: str or ~azure.ai.inference.models.TOOL
+ :ivar content: The content of the message.
+ :vartype content: str
+ :ivar tool_call_id: The ID of the tool call resolved by the provided content. Required.
+ :vartype tool_call_id: str
+ """
+
+ role: Literal[ChatRole.TOOL] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'tool' for tool messages. Required.
+ The role that represents extension tool activity within a chat completions operation."""
+ content: Optional[str] = rest_field()
+ """The content of the message."""
+ tool_call_id: str = rest_field()
+ """The ID of the tool call resolved by the provided content. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ tool_call_id: str,
+ content: Optional[str] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, role=ChatRole.TOOL, **kwargs)
+
+
+class ChatRequestUserMessage(ChatRequestMessage, discriminator="user"):
+ """A request chat message representing user input to the assistant.
+
+ :ivar role: The chat role associated with this message, which is always 'user' for user
+ messages. Required. The role that provides input for chat completions.
+ :vartype role: str or ~azure.ai.inference.models.USER
+ :ivar content: The contents of the user message, with available input types varying by selected
+ model. Required. Is either a str type or a [ContentItem] type.
+ :vartype content: str or list[~azure.ai.inference.models.ContentItem]
+ """
+
+ role: Literal[ChatRole.USER] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'user' for user messages. Required.
+ The role that provides input for chat completions."""
+ content: Union["str", List["_models.ContentItem"]] = rest_field()
+ """The contents of the user message, with available input types varying by selected model.
+ Required. Is either a str type or a [ContentItem] type."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ content: Union[str, List["_models.ContentItem"]],
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, role=ChatRole.USER, **kwargs)
+
+
+class ChatResponseMessage(_model_base.Model):
+ """A representation of a chat message as received in a response.
+
+
+ :ivar role: The chat role associated with the message. Required. Known values are: "system",
+ "user", "assistant", "tool", and "developer".
+ :vartype role: str or ~azure.ai.inference.models.ChatRole
+ :ivar content: The content of the message. Required.
+ :vartype content: str
+ :ivar tool_calls: The tool calls that must be resolved and have their outputs appended to
+ subsequent input messages for the chat
+ completions request to resolve as configured.
+ :vartype tool_calls: list[~azure.ai.inference.models.ChatCompletionsToolCall]
+ """
+
+ role: Union[str, "_models.ChatRole"] = rest_field()
+ """The chat role associated with the message. Required. Known values are: \"system\", \"user\",
+ \"assistant\", \"tool\", and \"developer\"."""
+ content: str = rest_field()
+ """The content of the message. Required."""
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = rest_field()
+ """The tool calls that must be resolved and have their outputs appended to subsequent input
+ messages for the chat
+ completions request to resolve as configured."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ role: Union[str, "_models.ChatRole"],
+ content: str,
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class CompletionsUsage(_model_base.Model):
+ """Representation of the token counts processed for a completions request.
+ Counts consider all tokens across prompts, choices, choice alternates, best_of generations, and
+ other consumers.
+
+
+ :ivar completion_tokens: The number of tokens generated across all completions emissions.
+ Required.
+ :vartype completion_tokens: int
+ :ivar prompt_tokens: The number of tokens in the provided prompts for the completions request.
+ Required.
+ :vartype prompt_tokens: int
+ :ivar total_tokens: The total number of tokens processed for the completions request and
+ response. Required.
+ :vartype total_tokens: int
+ """
+
+ completion_tokens: int = rest_field()
+ """The number of tokens generated across all completions emissions. Required."""
+ prompt_tokens: int = rest_field()
+ """The number of tokens in the provided prompts for the completions request. Required."""
+ total_tokens: int = rest_field()
+ """The total number of tokens processed for the completions request and response. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ completion_tokens: int,
+ prompt_tokens: int,
+ total_tokens: int,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class EmbeddingItem(_model_base.Model):
+ """Representation of a single embeddings relatedness comparison.
+
+
+ :ivar embedding: List of embedding values for the input prompt. These represent a measurement
+ of the
+ vector-based relatedness of the provided input. Or a base64 encoded string of the embedding
+ vector. Required. Is either a str type or a [float] type.
+ :vartype embedding: str or list[float]
+ :ivar index: Index of the prompt to which the EmbeddingItem corresponds. Required.
+ :vartype index: int
+ """
+
+ embedding: Union["str", List[float]] = rest_field()
+ """List of embedding values for the input prompt. These represent a measurement of the
+ vector-based relatedness of the provided input. Or a base64 encoded string of the embedding
+ vector. Required. Is either a str type or a [float] type."""
+ index: int = rest_field()
+ """Index of the prompt to which the EmbeddingItem corresponds. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ embedding: Union[str, List[float]],
+ index: int,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class EmbeddingsResult(_model_base.Model):
+ """Representation of the response data from an embeddings request.
+ Embeddings measure the relatedness of text strings and are commonly used for search,
+ clustering,
+ recommendations, and other similar scenarios.
+
+
+ :ivar id: Unique identifier for the embeddings result. Required.
+ :vartype id: str
+ :ivar data: Embedding values for the prompts submitted in the request. Required.
+ :vartype data: list[~azure.ai.inference.models.EmbeddingItem]
+ :ivar usage: Usage counts for tokens input using the embeddings API. Required.
+ :vartype usage: ~azure.ai.inference.models.EmbeddingsUsage
+ :ivar model: The model ID used to generate this result. Required.
+ :vartype model: str
+ """
+
+ id: str = rest_field()
+ """Unique identifier for the embeddings result. Required."""
+ data: List["_models.EmbeddingItem"] = rest_field()
+ """Embedding values for the prompts submitted in the request. Required."""
+ usage: "_models.EmbeddingsUsage" = rest_field()
+ """Usage counts for tokens input using the embeddings API. Required."""
+ model: str = rest_field()
+ """The model ID used to generate this result. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ id: str, # pylint: disable=redefined-builtin
+ data: List["_models.EmbeddingItem"],
+ usage: "_models.EmbeddingsUsage",
+ model: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class EmbeddingsUsage(_model_base.Model):
+ """Measurement of the amount of tokens used in this request and response.
+
+
+ :ivar prompt_tokens: Number of tokens in the request. Required.
+ :vartype prompt_tokens: int
+ :ivar total_tokens: Total number of tokens transacted in this request/response. Should equal
+ the
+ number of tokens in the request. Required.
+ :vartype total_tokens: int
+ """
+
+ prompt_tokens: int = rest_field()
+ """Number of tokens in the request. Required."""
+ total_tokens: int = rest_field()
+ """Total number of tokens transacted in this request/response. Should equal the
+ number of tokens in the request. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ prompt_tokens: int,
+ total_tokens: int,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class FunctionCall(_model_base.Model):
+ """The name and arguments of a function that should be called, as generated by the model.
+
+
+ :ivar name: The name of the function to call. Required.
+ :vartype name: str
+ :ivar arguments: The arguments to call the function with, as generated by the model in JSON
+ format.
+ Note that the model does not always generate valid JSON, and may hallucinate parameters
+ not defined by your function schema. Validate the arguments in your code before calling
+ your function. Required.
+ :vartype arguments: str
+ """
+
+ name: str = rest_field()
+ """The name of the function to call. Required."""
+ arguments: str = rest_field()
+ """The arguments to call the function with, as generated by the model in JSON format.
+ Note that the model does not always generate valid JSON, and may hallucinate parameters
+ not defined by your function schema. Validate the arguments in your code before calling
+ your function. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ name: str,
+ arguments: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class FunctionDefinition(_model_base.Model):
+ """The definition of a caller-specified function that chat completions may invoke in response to
+ matching user input.
+
+ :ivar name: The name of the function to be called. Required.
+ :vartype name: str
+ :ivar description: A description of what the function does. The model will use this description
+ when selecting the function and
+ interpreting its parameters.
+ :vartype description: str
+ :ivar parameters: The parameters the function accepts, described as a JSON Schema object.
+ :vartype parameters: any
+ """
+
+ name: str = rest_field()
+ """The name of the function to be called. Required."""
+ description: Optional[str] = rest_field()
+ """A description of what the function does. The model will use this description when selecting the
+ function and
+ interpreting its parameters."""
+ parameters: Optional[Any] = rest_field()
+ """The parameters the function accepts, described as a JSON Schema object."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ name: str,
+ description: Optional[str] = None,
+ parameters: Optional[Any] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ImageContentItem(ContentItem, discriminator="image_url"):
+ """A structured chat content item containing an image reference.
+
+ :ivar type: The discriminated object type: always 'image_url' for this type. Required. Default
+ value is "image_url".
+ :vartype type: str
+ :ivar image_url: An internet location, which must be accessible to the model,from which the
+ image may be retrieved. Required.
+ :vartype image_url: ~azure.ai.inference.models.ImageUrl
+ """
+
+ type: Literal["image_url"] = rest_discriminator(name="type") # type: ignore
+ """The discriminated object type: always 'image_url' for this type. Required. Default value is
+ \"image_url\"."""
+ image_url: "_models.ImageUrl" = rest_field()
+ """An internet location, which must be accessible to the model,from which the image may be
+ retrieved. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ image_url: "_models.ImageUrl",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="image_url", **kwargs)
+
+
+class ImageEmbeddingInput(_model_base.Model):
+ """Represents an image with optional text.
+
+ :ivar image: The input image encoded in base64 string as a data URL. Example:
+ ``data:image/{format};base64,{data}``. Required.
+ :vartype image: str
+ :ivar text: Optional. The text input to feed into the model (like DINO, CLIP).
+ Returns a 422 error if the model doesn't support the value or parameter.
+ :vartype text: str
+ """
+
+ image: str = rest_field()
+ """The input image encoded in base64 string as a data URL. Example:
+ ``data:image/{format};base64,{data}``. Required."""
+ text: Optional[str] = rest_field()
+ """Optional. The text input to feed into the model (like DINO, CLIP).
+ Returns a 422 error if the model doesn't support the value or parameter."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ image: str,
+ text: Optional[str] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ImageUrl(_model_base.Model):
+ """An internet location from which the model may retrieve an image.
+
+ :ivar url: The URL of the image. Required.
+ :vartype url: str
+ :ivar detail: The evaluation quality setting to use, which controls relative prioritization of
+ speed, token consumption, and
+ accuracy. Known values are: "auto", "low", and "high".
+ :vartype detail: str or ~azure.ai.inference.models.ImageDetailLevel
+ """
+
+ url: str = rest_field()
+ """The URL of the image. Required."""
+ detail: Optional[Union[str, "_models.ImageDetailLevel"]] = rest_field()
+ """The evaluation quality setting to use, which controls relative prioritization of speed, token
+ consumption, and
+ accuracy. Known values are: \"auto\", \"low\", and \"high\"."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ url: str,
+ detail: Optional[Union[str, "_models.ImageDetailLevel"]] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class InputAudio(_model_base.Model):
+ """The details of an audio chat message content part.
+
+ :ivar data: Base64 encoded audio data. Required.
+ :vartype data: str
+ :ivar format: The audio format of the audio content. Required. Known values are: "wav" and
+ "mp3".
+ :vartype format: str or ~azure.ai.inference.models.AudioContentFormat
+ """
+
+ data: str = rest_field()
+ """Base64 encoded audio data. Required."""
+ format: Union[str, "_models.AudioContentFormat"] = rest_field()
+ """The audio format of the audio content. Required. Known values are: \"wav\" and \"mp3\"."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ data: str,
+ format: Union[str, "_models.AudioContentFormat"],
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class JsonSchemaFormat(_model_base.Model):
+ """Defines the response format for chat completions as JSON with a given schema.
+ The AI model will need to adhere to this schema when generating completions.
+
+ :ivar name: A name that labels this JSON schema. Must be a-z, A-Z, 0-9, or contain underscores
+ and dashes, with a maximum length of 64. Required.
+ :vartype name: str
+ :ivar schema: The definition of the JSON schema. See
+ https://json-schema.org/overview/what-is-jsonschema.
+ Note that AI models usually only support a subset of the keywords defined by JSON schema.
+ Consult your AI model documentation to determine what is supported. Required.
+ :vartype schema: dict[str, any]
+ :ivar description: A description of the response format, used by the AI model to determine how
+ to generate responses in this format.
+ :vartype description: str
+ :ivar strict: If set to true, the service will error out if the provided JSON schema contains
+ keywords
+ not supported by the AI model. An example of such keyword may be ``maxLength`` for JSON type
+ ``string``.
+ If false, and the provided JSON schema contains keywords not supported by the AI model,
+ the AI model will not error out. Instead it will ignore the unsupported keywords.
+ :vartype strict: bool
+ """
+
+ name: str = rest_field()
+ """A name that labels this JSON schema. Must be a-z, A-Z, 0-9, or contain underscores and dashes,
+ with a maximum length of 64. Required."""
+ schema: Dict[str, Any] = rest_field()
+ """The definition of the JSON schema. See https://json-schema.org/overview/what-is-jsonschema.
+ Note that AI models usually only support a subset of the keywords defined by JSON schema.
+ Consult your AI model documentation to determine what is supported. Required."""
+ description: Optional[str] = rest_field()
+ """A description of the response format, used by the AI model to determine how to generate
+ responses in this format."""
+ strict: Optional[bool] = rest_field()
+ """If set to true, the service will error out if the provided JSON schema contains keywords
+ not supported by the AI model. An example of such keyword may be ``maxLength`` for JSON type
+ ``string``.
+ If false, and the provided JSON schema contains keywords not supported by the AI model,
+ the AI model will not error out. Instead it will ignore the unsupported keywords."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ name: str,
+ schema: Dict[str, Any],
+ description: Optional[str] = None,
+ strict: Optional[bool] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class ModelInfo(_model_base.Model):
+ """Represents some basic information about the AI model.
+
+
+ :ivar model_name: The name of the AI model. For example: ``Phi21``. Required.
+ :vartype model_name: str
+ :ivar model_type: The type of the AI model. A Unique identifier for the profile. Required.
+ Known values are: "embeddings", "image_generation", "text_generation", "image_embeddings",
+ "audio_generation", and "chat_completion".
+ :vartype model_type: str or ~azure.ai.inference.models.ModelType
+ :ivar model_provider_name: The model provider name. For example: ``Microsoft Research``.
+ Required.
+ :vartype model_provider_name: str
+ """
+
+ model_name: str = rest_field()
+ """The name of the AI model. For example: ``Phi21``. Required."""
+ model_type: Union[str, "_models.ModelType"] = rest_field()
+ """The type of the AI model. A Unique identifier for the profile. Required. Known values are:
+ \"embeddings\", \"image_generation\", \"text_generation\", \"image_embeddings\",
+ \"audio_generation\", and \"chat_completion\"."""
+ model_provider_name: str = rest_field()
+ """The model provider name. For example: ``Microsoft Research``. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ model_name: str,
+ model_type: Union[str, "_models.ModelType"],
+ model_provider_name: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class StreamingChatChoiceUpdate(_model_base.Model):
+ """Represents an update to a single prompt completion when the service is streaming updates
+ using Server Sent Events (SSE).
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated.
+
+
+ :ivar index: The ordered index associated with this chat completions choice. Required.
+ :vartype index: int
+ :ivar finish_reason: The reason that this chat completions choice completed its generated.
+ Required. Known values are: "stop", "length", "content_filter", and "tool_calls".
+ :vartype finish_reason: str or ~azure.ai.inference.models.CompletionsFinishReason
+ :ivar delta: An update to the chat message for a given chat completions prompt. Required.
+ :vartype delta: ~azure.ai.inference.models.StreamingChatResponseMessageUpdate
+ """
+
+ index: int = rest_field()
+ """The ordered index associated with this chat completions choice. Required."""
+ finish_reason: Union[str, "_models.CompletionsFinishReason"] = rest_field()
+ """The reason that this chat completions choice completed its generated. Required. Known values
+ are: \"stop\", \"length\", \"content_filter\", and \"tool_calls\"."""
+ delta: "_models.StreamingChatResponseMessageUpdate" = rest_field()
+ """An update to the chat message for a given chat completions prompt. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ index: int,
+ finish_reason: Union[str, "_models.CompletionsFinishReason"],
+ delta: "_models.StreamingChatResponseMessageUpdate",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class StreamingChatCompletionsUpdate(_model_base.Model):
+ """Represents a response update to a chat completions request, when the service is streaming
+ updates
+ using Server Sent Events (SSE).
+ Completions support a wide variety of tasks and generate text that continues from or
+ "completes"
+ provided prompt data.
+
+
+ :ivar id: A unique identifier associated with this chat completions response. Required.
+ :vartype id: str
+ :ivar created: The first timestamp associated with generation activity for this completions
+ response,
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970. Required.
+ :vartype created: ~datetime.datetime
+ :ivar model: The model used for the chat completion. Required.
+ :vartype model: str
+ :ivar choices: An update to the collection of completion choices associated with this
+ completions response.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated. Required.
+ :vartype choices: list[~azure.ai.inference.models.StreamingChatChoiceUpdate]
+ :ivar usage: Usage information for tokens processed and generated as part of this completions
+ operation.
+ :vartype usage: ~azure.ai.inference.models.CompletionsUsage
+ """
+
+ id: str = rest_field()
+ """A unique identifier associated with this chat completions response. Required."""
+ created: datetime.datetime = rest_field(format="unix-timestamp")
+ """The first timestamp associated with generation activity for this completions response,
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970. Required."""
+ model: str = rest_field()
+ """The model used for the chat completion. Required."""
+ choices: List["_models.StreamingChatChoiceUpdate"] = rest_field()
+ """An update to the collection of completion choices associated with this completions response.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated. Required."""
+ usage: Optional["_models.CompletionsUsage"] = rest_field()
+ """Usage information for tokens processed and generated as part of this completions operation."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ id: str, # pylint: disable=redefined-builtin
+ created: datetime.datetime,
+ model: str,
+ choices: List["_models.StreamingChatChoiceUpdate"],
+ usage: Optional["_models.CompletionsUsage"] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class StreamingChatResponseMessageUpdate(_model_base.Model):
+ """A representation of a chat message update as received in a streaming response.
+
+ :ivar role: The chat role associated with the message. If present, should always be
+ 'assistant'. Known values are: "system", "user", "assistant", "tool", and "developer".
+ :vartype role: str or ~azure.ai.inference.models.ChatRole
+ :ivar content: The content of the message.
+ :vartype content: str
+ :ivar tool_calls: The tool calls that must be resolved and have their outputs appended to
+ subsequent input messages for the chat
+ completions request to resolve as configured.
+ :vartype tool_calls: list[~azure.ai.inference.models.StreamingChatResponseToolCallUpdate]
+ """
+
+ role: Optional[Union[str, "_models.ChatRole"]] = rest_field()
+ """The chat role associated with the message. If present, should always be 'assistant'. Known
+ values are: \"system\", \"user\", \"assistant\", \"tool\", and \"developer\"."""
+ content: Optional[str] = rest_field()
+ """The content of the message."""
+ tool_calls: Optional[List["_models.StreamingChatResponseToolCallUpdate"]] = rest_field()
+ """The tool calls that must be resolved and have their outputs appended to subsequent input
+ messages for the chat
+ completions request to resolve as configured."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ role: Optional[Union[str, "_models.ChatRole"]] = None,
+ content: Optional[str] = None,
+ tool_calls: Optional[List["_models.StreamingChatResponseToolCallUpdate"]] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class StreamingChatResponseToolCallUpdate(_model_base.Model):
+ """An update to the function tool call information requested by the AI model.
+
+
+ :ivar id: The ID of the tool call. Required.
+ :vartype id: str
+ :ivar function: Updates to the function call requested by the AI model. Required.
+ :vartype function: ~azure.ai.inference.models.FunctionCall
+ """
+
+ id: str = rest_field()
+ """The ID of the tool call. Required."""
+ function: "_models.FunctionCall" = rest_field()
+ """Updates to the function call requested by the AI model. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ id: str, # pylint: disable=redefined-builtin
+ function: "_models.FunctionCall",
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, **kwargs)
+
+
+class TextContentItem(ContentItem, discriminator="text"):
+ """A structured chat content item containing plain text.
+
+ :ivar type: The discriminated object type: always 'text' for this type. Required. Default value
+ is "text".
+ :vartype type: str
+ :ivar text: The content of the message. Required.
+ :vartype text: str
+ """
+
+ type: Literal["text"] = rest_discriminator(name="type") # type: ignore
+ """The discriminated object type: always 'text' for this type. Required. Default value is
+ \"text\"."""
+ text: str = rest_field()
+ """The content of the message. Required."""
+
+ @overload
+ def __init__(
+ self,
+ *,
+ text: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ super().__init__(*args, type="text", **kwargs)
diff --git a/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_patch.py b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_patch.py
new file mode 100644
index 00000000..1bc06799
--- /dev/null
+++ b/.venv/lib/python3.12/site-packages/azure/ai/inference/models/_patch.py
@@ -0,0 +1,576 @@
+# ------------------------------------
+# Copyright (c) Microsoft Corporation.
+# Licensed under the MIT License.
+# ------------------------------------
+"""Customize generated code here.
+
+Follow our quickstart for examples: https://aka.ms/azsdk/python/dpcodegen/python/customize
+"""
+import base64
+import json
+import logging
+import queue
+import re
+import sys
+
+from typing import Mapping, Literal, Any, List, AsyncIterator, Iterator, Optional, Union, overload
+from azure.core.rest import HttpResponse, AsyncHttpResponse
+from ._enums import ChatRole
+from .._model_base import rest_discriminator, rest_field
+from ._models import ChatRequestMessage
+from ._models import ImageUrl as ImageUrlGenerated
+from ._models import ChatCompletions as ChatCompletionsGenerated
+from ._models import EmbeddingsResult as EmbeddingsResultGenerated
+from ._models import ImageEmbeddingInput as EmbeddingInputGenerated
+from ._models import InputAudio as InputAudioGenerated
+from .. import models as _models
+
+if sys.version_info >= (3, 11):
+ from typing import Self
+else:
+ from typing_extensions import Self
+
+logger = logging.getLogger(__name__)
+
+
+class UserMessage(ChatRequestMessage, discriminator="user"):
+ """A request chat message representing user input to the assistant.
+
+ :ivar role: The chat role associated with this message, which is always 'user' for user
+ messages. Required. The role that provides input for chat completions.
+ :vartype role: str or ~azure.ai.inference.models.USER
+ :ivar content: The contents of the user message, with available input types varying by selected
+ model. Required. Is either a str type or a [ContentItem] type.
+ :vartype content: str or list[~azure.ai.inference.models.ContentItem]
+ """
+
+ role: Literal[ChatRole.USER] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'user' for user messages. Required.
+ The role that provides input for chat completions."""
+ content: Union["str", List["_models.ContentItem"]] = rest_field()
+ """The contents of the user message, with available input types varying by selected model.
+ Required. Is either a str type or a [ContentItem] type."""
+
+ @overload
+ def __init__(
+ self,
+ content: Union[str, List["_models.ContentItem"]],
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ if len(args) == 1 and isinstance(args[0], (List, str)):
+ if kwargs.get("content") is not None:
+ raise ValueError("content cannot be provided as positional and keyword arguments")
+ kwargs["content"] = args[0]
+ args = tuple()
+ super().__init__(*args, role=ChatRole.USER, **kwargs)
+
+
+class SystemMessage(ChatRequestMessage, discriminator="system"):
+ """A request chat message containing system instructions that influence how the model will
+ generate a chat completions response.
+
+ :ivar role: The chat role associated with this message, which is always 'system' for system
+ messages. Required.
+ :vartype role: str or ~azure.ai.inference.models.SYSTEM
+ :ivar content: The contents of the system message. Required.
+ :vartype content: str
+ """
+
+ role: Literal[ChatRole.SYSTEM] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'system' for system messages.
+ Required."""
+ content: str = rest_field()
+ """The contents of the system message. Required."""
+
+ @overload
+ def __init__(
+ self,
+ content: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ if len(args) == 1 and isinstance(args[0], str):
+ if kwargs.get("content") is not None:
+ raise ValueError("content cannot be provided as positional and keyword arguments")
+ kwargs["content"] = args[0]
+ args = tuple()
+ super().__init__(*args, role=ChatRole.SYSTEM, **kwargs)
+
+
+class DeveloperMessage(ChatRequestMessage, discriminator="developer"):
+ """A request chat message containing developer instructions that influence how the model will
+ generate a chat completions response. Some AI models support developer messages instead
+ of system messages.
+
+ :ivar role: The chat role associated with this message, which is always 'developer' for developer
+ messages. Required.
+ :vartype role: str or ~azure.ai.inference.models.DEVELOPER
+ :ivar content: The contents of the developer message. Required.
+ :vartype content: str
+ """
+
+ role: Literal[ChatRole.DEVELOPER] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'developer' for developer messages.
+ Required."""
+ content: str = rest_field()
+ """The contents of the developer message. Required."""
+
+ @overload
+ def __init__(
+ self,
+ content: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ if len(args) == 1 and isinstance(args[0], str):
+ if kwargs.get("content") is not None:
+ raise ValueError("content cannot be provided as positional and keyword arguments")
+ kwargs["content"] = args[0]
+ args = tuple()
+ super().__init__(*args, role=ChatRole.DEVELOPER, **kwargs)
+
+
+class AssistantMessage(ChatRequestMessage, discriminator="assistant"):
+ """A request chat message representing response or action from the assistant.
+
+ :ivar role: The chat role associated with this message, which is always 'assistant' for
+ assistant messages. Required. The role that provides responses to system-instructed,
+ user-prompted input.
+ :vartype role: str or ~azure.ai.inference.models.ASSISTANT
+ :ivar content: The content of the message.
+ :vartype content: str
+ :ivar tool_calls: The tool calls that must be resolved and have their outputs appended to
+ subsequent input messages for the chat
+ completions request to resolve as configured.
+ :vartype tool_calls: list[~azure.ai.inference.models.ChatCompletionsToolCall]
+ """
+
+ role: Literal[ChatRole.ASSISTANT] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'assistant' for assistant messages.
+ Required. The role that provides responses to system-instructed, user-prompted input."""
+ content: Optional[str] = rest_field()
+ """The content of the message."""
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = rest_field()
+ """The tool calls that must be resolved and have their outputs appended to subsequent input
+ messages for the chat
+ completions request to resolve as configured."""
+
+ @overload
+ def __init__(
+ self,
+ content: Optional[str] = None,
+ *,
+ tool_calls: Optional[List["_models.ChatCompletionsToolCall"]] = None,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ if len(args) == 1 and isinstance(args[0], str):
+ if kwargs.get("content") is not None:
+ raise ValueError("content cannot be provided as positional and keyword arguments")
+ kwargs["content"] = args[0]
+ args = tuple()
+ super().__init__(*args, role=ChatRole.ASSISTANT, **kwargs)
+
+
+class ToolMessage(ChatRequestMessage, discriminator="tool"):
+ """A request chat message representing requested output from a configured tool.
+
+ :ivar role: The chat role associated with this message, which is always 'tool' for tool
+ messages. Required. The role that represents extension tool activity within a chat completions
+ operation.
+ :vartype role: str or ~azure.ai.inference.models.TOOL
+ :ivar content: The content of the message.
+ :vartype content: str
+ :ivar tool_call_id: The ID of the tool call resolved by the provided content. Required.
+ :vartype tool_call_id: str
+ """
+
+ role: Literal[ChatRole.TOOL] = rest_discriminator(name="role") # type: ignore
+ """The chat role associated with this message, which is always 'tool' for tool messages. Required.
+ The role that represents extension tool activity within a chat completions operation."""
+ content: Optional[str] = rest_field()
+ """The content of the message."""
+ tool_call_id: str = rest_field()
+ """The ID of the tool call resolved by the provided content. Required."""
+
+ @overload
+ def __init__(
+ self,
+ content: Optional[str] = None,
+ *,
+ tool_call_id: str,
+ ) -> None: ...
+
+ @overload
+ def __init__(self, mapping: Mapping[str, Any]) -> None:
+ """
+ :param mapping: raw JSON to initialize the model.
+ :type mapping: Mapping[str, Any]
+ """
+
+ def __init__(self, *args: Any, **kwargs: Any) -> None:
+ if len(args) == 1 and isinstance(args[0], str):
+ if kwargs.get("content") is not None:
+ raise ValueError("content cannot be provided as positional and keyword arguments")
+ kwargs["content"] = args[0]
+ args = tuple()
+ super().__init__(*args, role=ChatRole.TOOL, **kwargs)
+
+
+class ChatCompletions(ChatCompletionsGenerated):
+ """Representation of the response data from a chat completions request.
+ Completions support a wide variety of tasks and generate text that continues from or
+ "completes"
+ provided prompt data.
+
+
+ :ivar id: A unique identifier associated with this chat completions response. Required.
+ :vartype id: str
+ :ivar created: The first timestamp associated with generation activity for this completions
+ response,
+ represented as seconds since the beginning of the Unix epoch of 00:00 on 1 Jan 1970. Required.
+ :vartype created: ~datetime.datetime
+ :ivar model: The model used for the chat completion. Required.
+ :vartype model: str
+ :ivar usage: Usage information for tokens processed and generated as part of this completions
+ operation. Required.
+ :vartype usage: ~azure.ai.inference.models.CompletionsUsage
+ :ivar choices: The collection of completions choices associated with this completions response.
+ Generally, ``n`` choices are generated per provided prompt with a default value of 1.
+ Token limits and other settings may limit the number of choices generated. Required.
+ :vartype choices: list[~azure.ai.inference.models.ChatChoice]
+ """
+
+ def __str__(self) -> str:
+ # pylint: disable=client-method-name-no-double-underscore
+ return json.dumps(self.as_dict(), indent=2)
+
+
+class EmbeddingsResult(EmbeddingsResultGenerated):
+ """Representation of the response data from an embeddings request.
+ Embeddings measure the relatedness of text strings and are commonly used for search,
+ clustering,
+ recommendations, and other similar scenarios.
+
+
+ :ivar data: Embedding values for the prompts submitted in the request. Required.
+ :vartype data: list[~azure.ai.inference.models.EmbeddingItem]
+ :ivar usage: Usage counts for tokens input using the embeddings API. Required.
+ :vartype usage: ~azure.ai.inference.models.EmbeddingsUsage
+ :ivar model: The model ID used to generate this result. Required.
+ :vartype model: str
+ """
+
+ def __str__(self) -> str:
+ # pylint: disable=client-method-name-no-double-underscore
+ return json.dumps(self.as_dict(), indent=2)
+
+
+class ImageUrl(ImageUrlGenerated):
+
+ @classmethod
+ def load(
+ cls, *, image_file: str, image_format: str, detail: Optional[Union[str, "_models.ImageDetailLevel"]] = None
+ ) -> Self:
+ """
+ Create an ImageUrl object from a local image file. The method reads the image
+ file and encodes it as a base64 string, which together with the image format
+ is then used to format the JSON `url` value passed in the request payload.
+
+ :keyword image_file: The name of the local image file to load. Required.
+ :paramtype image_file: str
+ :keyword image_format: The MIME type format of the image. For example: "jpeg", "png". Required.
+ :paramtype image_format: str
+ :keyword detail: The evaluation quality setting to use, which controls relative prioritization of
+ speed, token consumption, and accuracy. Known values are: "auto", "low", and "high".
+ :paramtype detail: str or ~azure.ai.inference.models.ImageDetailLevel
+ :return: An ImageUrl object with the image data encoded as a base64 string.
+ :rtype: ~azure.ai.inference.models.ImageUrl
+ :raises FileNotFoundError: when the image file could not be opened.
+ """
+ with open(image_file, "rb") as f:
+ image_data = base64.b64encode(f.read()).decode("utf-8")
+ url = f"data:image/{image_format};base64,{image_data}"
+ return cls(url=url, detail=detail)
+
+
+class ImageEmbeddingInput(EmbeddingInputGenerated):
+
+ @classmethod
+ def load(cls, *, image_file: str, image_format: str, text: Optional[str] = None) -> Self:
+ """
+ Create an ImageEmbeddingInput object from a local image file. The method reads the image
+ file and encodes it as a base64 string, which together with the image format
+ is then used to format the JSON `url` value passed in the request payload.
+
+ :keyword image_file: The name of the local image file to load. Required.
+ :paramtype image_file: str
+ :keyword image_format: The MIME type format of the image. For example: "jpeg", "png". Required.
+ :paramtype image_format: str
+ :keyword text: Optional. The text input to feed into the model (like DINO, CLIP).
+ Returns a 422 error if the model doesn't support the value or parameter.
+ :paramtype text: str
+ :return: An ImageEmbeddingInput object with the image data encoded as a base64 string.
+ :rtype: ~azure.ai.inference.models.EmbeddingsInput
+ :raises FileNotFoundError: when the image file could not be opened.
+ """
+ with open(image_file, "rb") as f:
+ image_data = base64.b64encode(f.read()).decode("utf-8")
+ image_uri = f"data:image/{image_format};base64,{image_data}"
+ return cls(image=image_uri, text=text)
+
+
+class BaseStreamingChatCompletions:
+ """A base class for the sync and async streaming chat completions responses, holding any common code
+ to deserializes the Server Sent Events (SSE) response stream into chat completions updates, each one
+ represented by a StreamingChatCompletionsUpdate object.
+ """
+
+ # Enable detailed logs of SSE parsing. For development only, should be `False` by default.
+ _ENABLE_CLASS_LOGS = False
+
+ # The prefix of each line in the SSE stream that contains a JSON string
+ # to deserialize into a StreamingChatCompletionsUpdate object
+ _SSE_DATA_EVENT_PREFIX = b"data: "
+
+ # The line indicating the end of the SSE stream
+ _SSE_DATA_EVENT_DONE = b"data: [DONE]"
+
+ def __init__(self):
+ self._queue: "queue.Queue[_models.StreamingChatCompletionsUpdate]" = queue.Queue()
+ self._incomplete_line = b""
+ self._done = False # Will be set to True when reading 'data: [DONE]' line
+
+ # See https://html.spec.whatwg.org/multipage/server-sent-events.html#parsing-an-event-stream
+ def _deserialize_and_add_to_queue(self, element: bytes) -> bool:
+
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Original element] %s", repr(element))
+
+ # Clear the queue of StreamingChatCompletionsUpdate before processing the next block
+ self._queue.queue.clear()
+
+ # Split the single input bytes object at new line characters, and get a list of bytes objects, each
+ # representing a single "line". The bytes object at the end of the list may be a partial "line" that
+ # does not contain a new line character at the end.
+ # Note 1: DO NOT try to use something like this here:
+ # line_list: List[str] = re.split(r"(?<=\n)", element.decode("utf-8"))
+ # to do full UTF8 decoding of the whole input bytes object, as the last line in the list may be partial, and
+ # as such may contain a partial UTF8 Chinese character (for example). `decode("utf-8")` will raise an
+ # exception for such a case. See GitHub issue https://github.com/Azure/azure-sdk-for-python/issues/39565
+ # Note 2: Consider future re-write and simplifications of this code by using:
+ # `codecs.getincrementaldecoder("utf-8")`
+ line_list: List[bytes] = re.split(re.compile(b"(?<=\n)"), element)
+ for index, line in enumerate(line_list):
+
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Original line] %s", repr(line))
+
+ if index == 0:
+ line = self._incomplete_line + line
+ self._incomplete_line = b""
+
+ if index == len(line_list) - 1 and not line.endswith(b"\n"):
+ self._incomplete_line = line
+ return False
+
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Modified line] %s", repr(line))
+
+ if line == b"\n": # Empty line, indicating flush output to client
+ continue
+
+ if not line.startswith(self._SSE_DATA_EVENT_PREFIX):
+ raise ValueError(f"SSE event not supported (line `{repr(line)}`)")
+
+ if line.startswith(self._SSE_DATA_EVENT_DONE):
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Done]")
+ return True
+
+ # If you reached here, the line should contain `data: {...}\n`
+ # where the curly braces contain a valid JSON object.
+ # It is now safe to do UTF8 decoding of the line.
+ line_str = line.decode("utf-8")
+
+ # Deserialize it into a StreamingChatCompletionsUpdate object
+ # and add it to the queue.
+ # pylint: disable=W0212 # Access to a protected member _deserialize of a client class
+ update = _models.StreamingChatCompletionsUpdate._deserialize(
+ json.loads(line_str[len(self._SSE_DATA_EVENT_PREFIX) : -1]), []
+ )
+
+ # We skip any update that has a None or empty choices list, and does not have token usage info.
+ # (this is what OpenAI Python SDK does)
+ if update.choices or update.usage:
+ self._queue.put(update)
+
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Added to queue]")
+
+ return False
+
+
+class StreamingChatCompletions(BaseStreamingChatCompletions):
+ """Represents an interator over StreamingChatCompletionsUpdate objects. It can be used for either synchronous or
+ asynchronous iterations. The class deserializes the Server Sent Events (SSE) response stream
+ into chat completions updates, each one represented by a StreamingChatCompletionsUpdate object.
+ """
+
+ def __init__(self, response: HttpResponse):
+ super().__init__()
+ self._response = response
+ self._bytes_iterator: Iterator[bytes] = response.iter_bytes()
+
+ def __iter__(self) -> Any:
+ return self
+
+ def __next__(self) -> "_models.StreamingChatCompletionsUpdate":
+ while self._queue.empty() and not self._done:
+ self._done = self._read_next_block()
+ if self._queue.empty():
+ raise StopIteration
+ return self._queue.get()
+
+ def _read_next_block(self) -> bool:
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Reading next block]")
+ try:
+ element = self._bytes_iterator.__next__()
+ except StopIteration:
+ self.close()
+ return True
+ return self._deserialize_and_add_to_queue(element)
+
+ def __enter__(self):
+ return self
+
+ def __exit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None: # type: ignore
+ self.close()
+
+ def close(self) -> None:
+ self._response.close()
+
+
+class AsyncStreamingChatCompletions(BaseStreamingChatCompletions):
+ """Represents an async interator over StreamingChatCompletionsUpdate objects.
+ It can be used for either synchronous or asynchronous iterations. The class
+ deserializes the Server Sent Events (SSE) response stream into chat
+ completions updates, each one represented by a StreamingChatCompletionsUpdate object.
+ """
+
+ def __init__(self, response: AsyncHttpResponse):
+ super().__init__()
+ self._response = response
+ self._bytes_iterator: AsyncIterator[bytes] = response.iter_bytes()
+
+ def __aiter__(self) -> Any:
+ return self
+
+ async def __anext__(self) -> "_models.StreamingChatCompletionsUpdate":
+ while self._queue.empty() and not self._done:
+ self._done = await self._read_next_block_async()
+ if self._queue.empty():
+ raise StopAsyncIteration
+ return self._queue.get()
+
+ async def _read_next_block_async(self) -> bool:
+ if self._ENABLE_CLASS_LOGS:
+ logger.debug("[Reading next block]")
+ try:
+ element = await self._bytes_iterator.__anext__()
+ except StopAsyncIteration:
+ await self.aclose()
+ return True
+ return self._deserialize_and_add_to_queue(element)
+
+ async def __aenter__(self):
+ return self
+
+ async def __aexit__(self, exc_type: Any, exc_val: Any, exc_tb: Any) -> None: # type: ignore
+ await self.aclose()
+
+ async def aclose(self) -> None:
+ await self._response.close()
+
+
+class InputAudio(InputAudioGenerated):
+
+ @classmethod
+ def load(
+ cls,
+ *,
+ audio_file: str,
+ audio_format: str,
+ ) -> Self:
+ """
+ Create an InputAudio object from a local audio file. The method reads the audio
+ file and encodes it as a base64 string, which together with the audio format
+ is then used to create the InputAudio object passed to the request payload.
+
+ :keyword audio_file: The name of the local audio file to load. Required.
+ :vartype audio_file: str
+ :keyword audio_format: The MIME type format of the audio. For example: "wav", "mp3". Required.
+ :vartype audio_format: str
+ :return: An InputAudio object with the audio data encoded as a base64 string.
+ :rtype: ~azure.ai.inference.models.InputAudio
+ :raises FileNotFoundError: when the image file could not be opened.
+ """
+ with open(audio_file, "rb") as f:
+ audio_data = base64.b64encode(f.read()).decode("utf-8")
+ return cls(data=audio_data, format=audio_format)
+
+
+__all__: List[str] = [
+ "AssistantMessage",
+ "AsyncStreamingChatCompletions",
+ "ChatCompletions",
+ "ChatRequestMessage",
+ "EmbeddingsResult",
+ "ImageEmbeddingInput",
+ "ImageUrl",
+ "InputAudio",
+ "StreamingChatCompletions",
+ "SystemMessage",
+ "ToolMessage",
+ "UserMessage",
+ "DeveloperMessage",
+] # Add all objects you want publicly available to users at this package level
+
+
+def patch_sdk():
+ """Do not remove from this file.
+
+ `patch_sdk` is a last resort escape hatch that allows you to do customizations
+ you can't accomplish using the techniques described in
+ https://aka.ms/azsdk/python/dpcodegen/python/customize
+ """