Utilizzare l'agente di dati di Fabric dai servizi Microsoft Foundry (anteprima)

Agente dati in Microsoft Fabric trasforma i dati aziendali in un sistema di domande e risposte conversazionali. Consente agli utenti di interagire con i propri dati tramite chat, per individuare approfondimenti attuabili. Un modo per utilizzare l'agente dati Fabric è attraverso il Servizio Agente Foundry, un componente centrale di Microsoft Foundry. Grazie all'integrazione di Fabric agenti dati con Foundry, gli agenti di intelligenza artificiale Azure possono sfruttare direttamente i dati avanzati, strutturati e semantici disponibili in Microsoft Fabric OneLake. Questa integrazione offre accesso immediato ai dati aziendali di alta qualità e consente agli agenti di intelligenza artificiale di Azure di generare informazioni dettagliate interattive e semplificare i flussi di lavoro analitici. Le organizzazioni possono quindi migliorare il processo decisionale basato sui dati con Fabric agente dati come una potente fonte di conoscenze all'interno degli ambienti di intelligenza artificiale Azure.

Importante

Questa funzionalità si trova in Anteprima. Usare la versione di anteprima più recente di azure-ai-projects Python SDK.

Importante

Quando si configurano gli agenti dati di Fabric per essere utilizzati nel Servizio Microsoft Foundry, le risposte restituite dagli agenti dati di Fabric possono essere inviate al di fuori del perimetro di conformità o dell'area geografica di Fabric ed essere elaborate e/o archiviate in conformità ai termini applicabili e ai criteri di gestione dei dati del servizio o dei servizi Microsoft Foundry.

Prerequisiti

  • Gli sviluppatori e gli utenti finali in Foundry devono avere almeno il ruolo AI Developer Role-Based Controllo di accesso (RBAC).

Come funziona

Nel Servizio Agent, creare un nuovo agente e aggiungere Agente dati Fabric come una delle sue fonti di conoscenza. Al fine di stabilire questa connessione, è necessario l'ID dell'area di lavoro e l'ID dell'artefatto per l'agente dati Fabric. La configurazione consente all'agente di intelligenza artificiale di Azure di valutare le origini disponibili quando riceve una query, per assicurarsi che richiami lo strumento corretto per elaborare la richiesta. Attualmente, è possibile aggiungere un solo agente dati Fabric come origine delle conoscenze all'agente di intelligenza artificiale Azure.

Annotazioni

Il modello che selezioni nella configurazione dell'agente di intelligenza artificiale di Azure è usato solo per l'orchestrazione e la generazione di risposte dell'agente di intelligenza artificiale di Azure. Non influisce sul modello utilizzato dall'agente dati di Fabric.

Elaborazione delle query: quando un utente invia una query dal playground Foundry, il Servizio Agente determina se l'agente di dati Fabric è lo strumento migliore per l'attività. In caso affermativo, l'agente di intelligenza artificiale Azure:

  • Usa l'identità dell'utente finale per generare query sicure sulle origini dati a cui l'utente ha l'autorizzazione per accedere dall'interno dell'agente dati Fabric.
  • Richiama Fabric per recuperare ed elaborare i dati, per garantire un'esperienza uniforme e automatizzata.
  • Combina i risultati dell'agente dati di Fabric con la propria logica per generare risposte esaustive. L'autorizzazione di pass-through dell'identità (On-Behalf-Of) protegge questo flusso, per garantire una sicurezza affidabile e un controllo di accesso appropriato per i dati aziendali.

Annotazioni

L'agente dati Fabric e le risorse Foundry devono trovarsi nello stesso tenant e sia Microsoft Fabric che Foundry devono essere connessi con lo stesso account.

Aggiungere l'agente di dati Fabric all'agente IA di Azure

È possibile aggiungere un agente dati Fabric all'agente di intelligenza artificiale Azure a livello di codice o con l'interfaccia utente. Per esempi di codice dettagliati e altre istruzioni, vedere la documentazione sull'integrazione dell'agente di intelligenza artificiale Azure.

Aggiungi agente dati Fabric tramite l'interfaccia utente:

  • Passare al riquadro sinistro. In Crea e personalizza selezionare Agenti, come illustrato nello screenshot seguente:

Screenshot che mostra la pagina principale Azure Foundry.

Questo passaggio visualizza l'elenco degli agenti di intelligenza artificiale Azure esistenti. È possibile aggiungere Fabric a uno di questi agenti oppure selezionare Nuovo agente per creare un nuovo agente. La creazione di un nuovo agente genera un ID agente univoco e un nome predefinito. Il nome può essere modificato in qualsiasi momento. Per altre informazioni, vedere Che cos'è Azure OpenAI nel portale Foundry.

  • Inizia ad aggiungere una fonte di conoscenza: seleziona il pulsante Aggiungi, come illustrato nello screenshot seguente.

Screenshot che mostra l'aggiunta di un agente dei dati di Fabric come knowledge.

Questo passaggio apre un menu dei tipi di origine delle informazioni supportati.

  • Selezionare Microsoft Fabric come Origine: dall'elenco scegliere Microsoft Fabric, come illustrato nello screenshot seguente:

Screenshot che mostra la selezione di Fabric come knowledge source.

Con questa opzione, l'agente può accedere all'agente dati Fabric.

  • Creare una connessione: se in precedenza è stata stabilita una connessione a un agente dati Fabric, è possibile riutilizzare tale connessione per il nuovo agente di intelligenza artificiale Azure. In caso contrario, selezionare Nuova connessione per creare una connessione, come illustrato nello screenshot seguente:

Screenshot che illustra come creare una nuova Fabric connection.

Viene visualizzata la finestra Creare una nuova connessione Microsoft Fabric, come illustrato nello screenshot seguente:

Screenshot che mostra la creazione di una connessione.

Quando si configura la connessione, specificare i valori dell'agente dati Fabric workspace-id e artifact-id come chiavi personalizzate. È possibile trovare i valori workspace-id e artifact-id nell'endpoint dell'agente dati pubblicato Fabric. L'endpoint dell'agente dati Fabric ha questo formato: https://fabric.microsoft.com/groups/<workspace_id>/aiskills/<artifact-id>. Selezionare la casella di controllo Is Secret (Segreto).

Assegnare infine un nome alla connessione e scegliere se renderlo disponibile a tutti i progetti in Foundry o limitarlo al progetto corrente.

Dopo aver selezionato Connect, l'agente dati Microsoft Fabric viene aggiunto come risorsa Knowledge, come illustrato nello screenshot seguente:

Screenshot che mostra come aggiungere istruzioni.

È anche necessario fornire istruzioni all'agente di intelligenza artificiale Azure su quando, come e in quali condizioni usare l'agente dati Fabric. Dal punto di vista dell'agente di intelligenza artificiale di Azure, l'agente dati Fabric viene considerato come uno strumento di Fabric, quindi è possibile farvi riferimento nelle istruzioni.

È anche possibile modificare il modello di distribuzione, aggiungere azioni o modificare le impostazioni del modello in base ai requisiti del caso d'uso. Dopo aver configurato completamente l'agente di intelligenza artificiale Azure, selezionare Try in playground per testarne le prestazioni.

Aggiungi Fabric agente dati a livello di codice: i passaggi seguenti descrivono come aggiungere un agente dati Fabric a livello di codice all'agente di intelligenza artificiale Azure in Python. Per altri linguaggi (C#, JavaScript), vedere questa risorsa.

Passaggio 1: Configurare le variabili di ambiente e importare l'SDK

Impostare le variabili di ambiente seguenti prima di eseguire il codice:

  • PROJECT_ENDPOINT: l'endpoint del progetto Foundry, disponibile nella pagina Panoramica del progetto Foundry.
  • MODEL_DEPLOYMENT_NAME: nome della distribuzione del modello, come indicato in Modelli e endpoint nel progetto Foundry.
  • FABRIC_CONNECTION_NAME: Il nome della connessione Microsoft Fabric, come appare nelle Foundry Risorse connesse.

Installare gli SDK di anteprima e importare i moduli:

pip install azure-identity
pip install --pre azure-ai-projects
import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.agents.models import FabricTool, ListSortOrder

Passaggio 2: Creare un agente con lo strumento di Microsoft Fabric abilitato

Per rendere disponibile lo strumento dell'agente dati di Fabric al tuo agente Azure AI, recupera l'ID della connessione dalla connessione con nome nel tuo progetto Foundry, quindi passalo a FabricTool:

project_client = AIProjectClient(
    endpoint=os.environ["PROJECT_ENDPOINT"],
    credential=DefaultAzureCredential(),
)

# Look up the Fabric connection by name
conn_id = project_client.connections.get(os.environ["FABRIC_CONNECTION_NAME"]).id

# Initialize the Fabric tool with the connection ID
fabric = FabricTool(connection_id=conn_id)

with project_client:
    agents_client = project_client.agents

    agent = agents_client.create_agent(
        model=os.environ["MODEL_DEPLOYMENT_NAME"],
        name="my-agent",
        instructions="You are a helpful agent",
        tools=fabric.definitions,
    )
    print(f"Created agent, ID: {agent.id}")

Passaggio 3: Creare un thread e inviare un messaggio

    # Create a thread for communication
    thread = agents_client.threads.create()
    print(f"Created thread, ID: {thread.id}")

    # Add a message to the thread
    message = agents_client.messages.create(
        thread_id=thread.id,
        role="user",
        content="What is the top sold product in Contoso last month?",
    )
    print(f"Created message, ID: {message.id}")

Passaggio 4: Eseguire l'agente e leggere l'output

Elaborare l'esecuzione, quindi eseguire l'iterazione dei messaggi per leggere la risposta dell'agente:

    # Create and process the run with the Fabric tool
    run = agents_client.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)
    print(f"Run finished with status: {run.status}")

    if run.status == "failed":
        print(f"Run failed: {run.last_error}")

    # Delete the agent when finished
    agents_client.delete_agent(agent.id)
    print("Deleted agent")

    # Fetch and print all messages in the thread
    messages = agents_client.messages.list(thread_id=thread.id, order=ListSortOrder.ASCENDING)
    for msg in messages:
        if msg.text_messages:
            last_text = msg.text_messages[-1]
            print(f"{msg.role}: {last_text.text.value}")