Skip to content

mirascope.core.azure.tool

The AzureTool class for easy tool usage with Azure LLM calls.

Usage Documentation

Tools

AzureToolConfig

Bases: ToolConfig

A tool configuration for Azure-specific features.

AzureTool

Bases: BaseTool[ChatCompletionsToolDefinition]

A class for defining tools for Azure LLM calls.

Example:

from mirascope.core import prompt_template
from mirascope.core.azure import azure_call


def format_book(title: str, author: str) -> str:
    return f"{title} by {author}"


@azure_call("gpt-4o-mini", tools=[format_book])
@prompt_template("Recommend a {genre} book")
def recommend_book(genre: str):
    ...


response = recommend_book("fantasy")
if tool := response.tool:  # returns an `AzureTool` instance
    print(tool.call())

tool_schema classmethod

tool_schema() -> ChatCompletionsToolDefinition

Constructs a JSON Schema tool schema from the BaseModel schema defined.

Example:

from mirascope.core.azure import AzureTool


def format_book(title: str, author: str) -> str:
    return f"{title} by {author}"


tool_type = AzureTool.type_from_fn(format_book)
print(tool_type.tool_schema())  # prints the Azure-specific tool schema

Source code in mirascope/core/azure/tool.py
@classmethod
def tool_schema(cls) -> ChatCompletionsToolDefinition:
    """Constructs a JSON Schema tool schema from the `BaseModel` schema defined.

    Example:
    ```python
    from mirascope.core.azure import AzureTool


    def format_book(title: str, author: str) -> str:
        return f"{title} by {author}"


    tool_type = AzureTool.type_from_fn(format_book)
    print(tool_type.tool_schema())  # prints the Azure-specific tool schema
    ```
    """
    fn = FunctionDefinition(name=cls._name(), description=cls._description())
    schema_generator = GenerateJsonSchemaNoTitles
    model_schema = cls.model_json_schema(schema_generator=schema_generator)
    if model_schema["properties"]:
        fn["parameters"] = model_schema
    return ChatCompletionsToolDefinition(function=fn)

from_tool_call classmethod

from_tool_call(
    tool_call: ChatCompletionsToolCall,
) -> AzureTool

Constructs an AzureTool instance from a tool_call.

Parameters:

Name Type Description Default
tool_call ChatCompletionsToolCall

The Azure tool call from which to construct this tool instance.

required
Source code in mirascope/core/azure/tool.py
@classmethod
def from_tool_call(cls, tool_call: ChatCompletionsToolCall) -> AzureTool:
    """Constructs an `AzureTool` instance from a `tool_call`.

    Args:
        tool_call: The Azure tool call from which to construct this tool instance.
    """
    model_json = jiter.from_json(tool_call.function.arguments.encode())
    model_json["tool_call"] = tool_call
    return cls.model_validate(model_json)