Condividi tramite


API di inferenza del modello di Azure per intelligenza artificiale | Azure Machine Learning

L'inferenza del modello di Azure per intelligenza artificiale è un'API che espone un set comune di funzionalità per i modelli di base e che gli sviluppatori possono usare per sfruttare le stime da set di modelli diversi in modo uniforme e coerente. Gli sviluppatori possono comunicare con modelli diversi distribuiti in Studio AI della piattaforma Azure senza modificare il codice sottostante in uso.

Vantaggi

I modelli fondamentali, ad esempio i modelli linguistici, hanno fatto notevoli passi in avanti negli ultimi anni. Tali progressi hanno rivoluzionato numerosi campi, tra cui l'elaborazione del linguaggio naturale e la visione artificiale, e hanno abilitato applicazioni come chatbot, assistenti virtuali e servizi di traduzione linguistica.

Anche se i modelli di base sono eccellenti in domini specifici, non dispongono di un set uniforme di funzionalità. Alcuni modelli sono migliori in un'attività specifica e anche nella stessa attività, altri possono affrontare il problema in un modo mentre altri in un modo differente. Gli sviluppatori possono trarre vantaggio da questa diversità usando il modello appropriato per un determinato lavoro che consente di:

  • Migliorare le prestazioni in un'attività downstream specifica.
  • Usare modelli più efficienti per attività più semplici.
  • Usare modelli più piccoli da eseguire più velocemente in attività specifiche.
  • Creare più modelli per sviluppare esperienze intelligenti.

Avere un modo uniforme per utilizzare i modelli di base consente agli sviluppatori di realizzare tutti questi vantaggi senza sacrificare la portabilità o modificare il codice sottostante.

Disponibilità

L'API di inferenza del modello di Azure per intelligenza artificiale è disponibile nei modelli seguenti:

I modelli distribuiti in endpoint API serverless:

I modelli distribuiti nell'inferenza gestita:

L'API è compatibile con le distribuzioni modelli di Azure OpenAI.

Nota

L'API di inferenza del modello di Azure per intelligenza artificiale è disponibile nell'inferenza gestita (Endpoint online gestiti) per i modelli distribuiti dopo il 24 giugno 2024. Per sfruttare al meglio l'API, distribuire nuovamente l'endpoint se il modello è stato distribuito prima di tale data.

Funzionalità

La sezione seguente descrive alcune delle funzionalità esposte dall'API. Per una definizione completa dell'API, vedere la sezione di riferimento.

Modalità

L'API indica in che modo gli sviluppatori possono sfruttare le stime per gli scopi seguenti:

Supporto SDK inferenza

È possibile usare i client di inferenza semplificata nella lingua prescelta per sfruttare le previsioni dai modelli che eseguono l'API di inferenza del modello di Azure per intelligenza artificiale.

Installare il pacchetto azure-ai-inference usando la propria gestione pacchetti, come pip:

pip install azure-ai-inference

Quindi, è possibile usare il pacchetto per utilizzare il modello. Gli esempi seguenti mostrano come creare un client per utilizzare i completamenti chat:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.core.credentials import AzureKeyCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureKeyCredential(os.environ["AZUREAI_ENDPOINT_KEY"]),
)

Se si usa un endpoint che supporta Entra ID, è possibile creare il client come indicato di seguito:

import os
from azure.ai.inference import ChatCompletionsClient
from azure.identity import AzureDefaultCredential

model = ChatCompletionsClient(
    endpoint=os.environ["AZUREAI_ENDPOINT_URL"],
    credential=AzureDefaultCredential(),
)

Esplorare gli esempi e leggere la documentazione di riferimento sulle API per iniziare.

Estendibilità

L'API di inferenza del modello di Azure per intelligenza artificiale specifica un set di modalità e di parametri a cui i modelli possono sottoscrivere. Tuttavia, alcuni modelli possono avere altre funzionalità oltre quelle indicate dall'API. In questi casi, l'API consente allo sviluppatore di trasmetterle come parametri aggiuntivi al payload.

Impostando un'intestazione extra-parameters: pass-through, l'API tenterà di trasmettere qualsiasi parametro sconosciuto direttamente al modello sottostante. Se il modello può gestire tale parametro, la richiesta viene completata.

L'esempio seguente mostra una richiesta che trasmette il parametro safe_prompt supportato da Mistral-Large, che non è specificato nell'API di inferenza del modello di Azure per intelligenza artificiale:

response = model.complete(
    messages=[
        SystemMessage(content="You are a helpful assistant."),
        UserMessage(content="How many languages are in the world?"),
    ],
    model_extras={
        "safe_mode": True
    }
)

print(response.choices[0].message.content)

Suggerimento

Quando si usa l’SDK di inferenza di Azure per intelligenza artificiale, l’uso di model_extras configura automaticamente la richiesta. extra-parameters: pass-through.

Nota

Il valore predefinito per extra-parameters è error che restituisce un errore se nel payload è indicato un parametro aggiuntivo. In alternativa, è possibile impostare extra-parameters: drop per eliminare qualsiasi parametro sconosciuto nella richiesta. Usare questa funzionalità nel caso in cui si inviino richieste con parametri aggiuntivi noti che il modello non supporterà, ma si vuole che la richiesta venga completata comunque. Un esempio tipico di questo è l'indicazione del parametro seed.

Modelli con set di funzionalità diverse

L'API di inferenza del modello di Azure per intelligenza artificiale indica un set generale di funzionalità, ma ognuno dei modelli può decidere di implementarle o meno. In questi casi viene restituito un errore specifico in cui il modello non può supportare un parametro specifico.

L'esempio seguente mostra la risposta per una richiesta di completamento della chat che indica il parametro reponse_format e la richiesta di una risposta in formato JSON. Nell'esempio, poiché il modello non supporta tale funzionalità, viene restituito all'utente un errore 422.

import json
from azure.ai.inference.models import SystemMessage, UserMessage, ChatCompletionsResponseFormat
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are a helpful assistant."),
            UserMessage(content="How many languages are in the world?"),
        ],
        response_format={ "type": ChatCompletionsResponseFormat.JSON_OBJECT }
    )
except HttpResponseError as ex:
    if ex.status_code == 422:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "detail" in response:
            for offending in response["detail"]:
                param = ".".join(offending["loc"])
                value = offending["input"]
                print(
                    f"Looks like the model doesn't support the parameter '{param}' with value '{value}'"
                )
    else:
        raise ex

Suggerimento

È possibile esaminare la proprietà details.loc per comprendere la posizione del parametro danneggiato e details.input per visualizzare il valore trasmesso nella richiesta.

Sicurezza dei contenuti

L'API di inferenza del modello di Azure per intelligenza artificiale supporta Sicurezza dei contenuti di Azure AI. Quando si usano distribuzioni con sicurezza dei contenuti di Azure AI attivata, gli input e gli output passano attraverso un insieme di modelli di classificazione volti a rilevare e impedire l'output di contenuto dannoso. Il sistema di filtro del contenuto rileva e agisce su categorie specifiche di contenuto potenzialmente dannoso sia nelle richieste di input che nei completamenti di output.

L'esempio seguente mostra la risposta per una richiesta di completamento della chat che ha attivato la sicurezza del contenuto.

from azure.ai.inference.models import AssistantMessage, UserMessage, SystemMessage
from azure.core.exceptions import HttpResponseError

try:
    response = model.complete(
        messages=[
            SystemMessage(content="You are an AI assistant that helps people find information."),
            UserMessage(content="Chopping tomatoes and cutting them into cubes or wedges are great ways to practice your knife skills."),
        ]
    )

    print(response.choices[0].message.content)

except HttpResponseError as ex:
    if ex.status_code == 400:
        response = json.loads(ex.response._content.decode('utf-8'))
        if isinstance(response, dict) and "error" in response:
            print(f"Your request triggered an {response['error']['code']} error:\n\t {response['error']['message']}")
        else:
            raise ex
    else:
        raise ex

Introduzione

L'API di inferenza del modello di Azure per intelligenza artificiale è al momento supportata in determinati modelli distribuiti come endpoint API serverless ed endpoint online gestiti. Distribuire qualsiasi modello supportato e usare lo stesso codice esatto per utilizzare le previsioni.

La libreria client azure-ai-inference esegue l'inferenza, inclusi i completamenti delle chat, per i modelli di intelligenza artificiale distribuiti da Studio AI della piattaforma Azure e studio di Azure Machine Learning. Supporta endpoint API serverless ed endpoint di calcolo gestiti (in precedenza noti come endpoint online gestiti).

Esplorare gli esempi e leggere la documentazione di riferimento sulle API per iniziare.