Condividi tramite


Creare un'app di chat di base in Python usando Azure AI Foundry SDK

Importante

Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente disponibili in anteprima pubblica. Questa anteprima viene fornita senza un contratto di servizio e non è consigliabile per i carichi di lavoro di produzione. Alcune funzionalità potrebbero non essere supportate o potrebbero presentare funzionalità limitate. Per altre informazioni, vedere le Condizioni supplementari per l'uso delle anteprime di Microsoft Azure.

In questa guida introduttiva viene illustrata la configurazione dell'ambiente di sviluppo locale con Azure AI Foundry SDK. Si scrive un prompt, lo si esegue come parte del codice dell'app, si tracciano le chiamate LLM effettuate e si esegue una valutazione di base per gli output del LLM.

Prerequisiti

  • Prima di seguire questa guida introduttiva, completare la guida introduttiva di AI Foundry Playground per distribuire un modello gpt-4o-mini in un progetto.

Installare l'interfaccia della riga di comando di Azure ed eseguire l'accesso

Si installa l'interfaccia della riga di comando di Azure e si accede dall'ambiente di sviluppo locale, in modo da poter usare le credenziali utente per chiamare il servizio OpenAI di Azure.

Nella gran parte dei casi è possibile installare l'interfaccia della riga di comando di Azure dal terminale usando il comando seguente:

winget install -e --id Microsoft.AzureCLI

Se questi comandi non funzionano per il sistema operativo o l'installazione specifici, è possibile seguire le istruzioni in Come installare l'interfaccia della riga di comando di Azure.

Dopo aver installato l'interfaccia della riga di comando di Azure, accedere usando il comando az login e registrarsi tramite il browser:

az login

In alternativa, è possibile accedere manualmente tramite il browser con un codice del dispositivo.

az login --use-device-code

Creare un nuovo ambiente Python

Prima di tutto è necessario creare un nuovo ambiente Python da usare per installare il pacchetto necessario per questa esercitazione. NON installare i pacchetti nell'installazione globale di Python. Quando si installano i pacchetti Python, è necessario usare sempre un ambiente virtuale o Conda, altrimenti si rischia di interrompere l'installazione di Python nel sistema.

Se necessario, installare Python

È consigliabile usare Python 3.10 o versione successiva; è comunque necessario avere almeno Python 3.8. Se non è installata una versione appropriata di Python, seguire le istruzioni riportate in Esercitazione di Vs Code Python, che descrive il modo più semplice per installare Python nel sistema operativo.

Creare un ambiente virtuale

Se Python 3.10 o versione successiva è già installato, è possibile creare un ambiente virtuale usando i comandi seguenti:

py -3 -m venv .venv
.venv\scripts\activate

L'attivazione dell'ambiente Python implica che quando si esegue python o pip dalla riga di comando, si usa l'interprete Python contenuto nella cartella .venv dell'applicazione.

Nota

Per uscire dall'ambiente virtuale Python è possibile usare il comando deactivate. Potrà poi essere riattivato successivamente, quando necessario.

Installare i pacchetti

Installare azure-ai-projects(anteprima), azure-ai-inference (anteprima) e pacchetti azure-identity:

pip install azure-ai-projects azure-ai-inference azure-identity 

Creare l'app di chat

Creare un file denominato chat.py. Copiare e incollare il codice seguente.

from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

project_connection_string = "<your-connection-string-goes-here>"

project = AIProjectClient.from_connection_string(
    conn_str=project_connection_string, credential=DefaultAzureCredential()
)

chat = project.inference.get_chat_completions_client()
response = chat.complete(
    model="gpt-4o-mini",
    messages=[
        {
            "role": "system",
            "content": "You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig?",
        },
        {"role": "user", "content": "Hey, can you help me with my taxes? I'm a freelancer."},
    ],
)

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

Inserire il stringa di connessione

Il progetto stringa di connessione è necessario per chiamare il servizio Azure OpenAI dal codice.

Trovare il stringa di connessione nel progetto Azure AI Foundry creato nell'argomento di avvio rapido di AI Foundry Playground. Aprire il progetto, quindi trovare il stringa di connessione nella pagina Panoramica.

Screenshot che mostra la pagina di panoramica di un progetto e la posizione del stringa di connessione.

Copiare il stringa di connessione e sostituire <your-connection-string-goes-here> nel file di chat.py.

Eseguire lo script di chat

Eseguire lo script per visualizzare la risposta dal modello.

python chat.py

Generare una richiesta dall'input dell'utente e da un modello di richiesta

Lo script usa messaggi di input e output hardcoded. In un'app reale si accetta l'input da un'applicazione client, si genera un messaggio di sistema con istruzioni interne al modello e quindi si chiama LLM con tutti i messaggi.

Si modificherà ora lo script per accettare l'input da un'applicazione client e generare un messaggio di sistema usando un modello di prompt.

  1. Rimuovere l'ultima riga dello script che stampa una risposta.

  2. Definire ora una get_chat_response funzione che accetta messaggi e contesto, genera un messaggio di sistema usando un modello di richiesta e chiama un modello. Aggiungere questo codice al file chat.py :

    from azure.ai.inference.prompts import PromptTemplate
    
    
    def get_chat_response(messages, context):
        # create a prompt template from an inline string (using mustache syntax)
        prompt_template = PromptTemplate.from_message(
            prompt_template="""
            system:
            You are an AI assistant that speaks like a techno punk rocker from 2350. Be cool but not too cool. Ya dig? Refer to the user by their first name, try to work their last name into a pun.
    
            The user's first name is {{first_name}} and their last name is {{last_name}}.
            """
        )
    
        # generate system message from the template, passing in the context as variables
        system_message = prompt_template.render(data=context)
    
        # add the prompt messages to the user messages
        return chat.complete(
            model="gpt-4o-mini",
            messages=system_message + messages,
            temperature=1,
            frequency_penalty=0.5,
            presence_penalty=0.5,
        )
    

    Nota

    Il modello di richiesta usa il formato mustache.

    La funzione get_chat_response può essere aggiunta facilmente come route a un'app FastAPI o Flask per abilitare la chiamata di questa funzione da un'applicazione Web front-end.

  3. Simulare ora il passaggio di informazioni da un'applicazione front-end a questa funzione. Aggiungere il codice seguente alla fine del file chat.py . È possibile giocare con il messaggio e aggiungere il proprio nome.

    if __name__ == "__main__":
        response = get_chat_response(
            messages=[{"role": "user", "content": "what city has the best food in the world?"}],
            context={"first_name": "Jessie", "last_name": "Irwin"},
        )
        print(response.choices[0].message.content)
    

Eseguire lo script per visualizzare la risposta dal modello con questo nuovo input.

python chat.py

Passaggio successivo