Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Importante
Gli elementi contrassegnati (anteprima) in questo articolo sono attualmente 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 avere funzionalità limitate. Per altre informazioni, vedere Condizioni supplementari per l'utilizzo delle anteprime di Microsoft Azure.
Nota
Per informazioni sull'ottimizzazione dell'utilizzo degli strumenti, vedere Procedure consigliate .
Usare l'agente dati Microsoft Fabric con Foundry Agent Service per analizzare i dati aziendali in chat. L'agente dati Fabric trasforma i dati aziendali in un'esperienza di domande e risposte conversazionali.
Prima di tutto, compilare e pubblicare un agente dati Fabric. Collega successivamente l'agente dati Fabric all'endpoint pubblicato. Quando un utente invia una query, l'agente determina se deve usare l'agente dati Fabric. In tal caso, usa l'identità dell'utente finale per generare query sui dati a cui hanno accesso. Infine, l'agente genera risposte in base alle query restituite dall'agente dati Fabric. Usando l'autorizzazione pass-through dell'identità (on-Behalf-Of), questa integrazione semplifica l'accesso ai dati aziendali in Fabric mantenendo al tempo stesso una sicurezza affidabile, garantendo un controllo di accesso appropriato e una protezione di livello aziendale.
Supporto per l'utilizzo
La tabella seguente illustra il supporto dell'SDK e della configurazione.
| Supporto Foundry di Microsoft | PYTHON SDK | C# SDK | JavaScript SDK | JAVA SDK | REST API | Configurazione dell'agente di base | Configurazione dell'agente standard |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Prerequisiti
Nota
- Il modello selezionato durante l'installazione dell'agente viene usato solo per l'orchestrazione e la generazione di risposte. Non influisce sul modello usato dall'agente dati Fabric per NL2SQL.
- Per consentire all'agente di richiamare in modo affidabile lo strumento Fabric, includere indicazioni chiare sugli strumenti nelle istruzioni dell'agente, ad esempio "Per i dati sulle vendite di clienti e prodotti, usare lo strumento Fabric"). È anche possibile forzare l'uso degli strumenti con
tool_choice.
Creare e pubblicare un agente dati Fabric.
Assegnare agli sviluppatori e agli utenti finali almeno il ruolo di Azure RBAC
Azure AI User. Per altre informazioni, vedere controllo degli accessi basato su ruoli di Azure in Foundry.Concedere agli sviluppatori e agli utenti finali almeno
READl'accesso all'agente dati Fabric. Gli utenti necessitano anche dell'autorizzazione minima per ogni origine dati sottostante:Origine dati Autorizzazione minima Power BI modello semantico Build(include la Lettura). La sola lettura non è sufficiente perché l'agente genera query del modello che richiedono la compilazione.Lakehouse Leggere l'elemento lakehouse (e l'accesso alla tabella, se applicato). Magazzino Lettura ( SELECTnelle tabelle pertinenti).Database KQL Ruolo lettore nel database. Per informazioni dettagliate, vedere Autorizzazioni dell'origine dati sottostante.
Verificare che l'agente dati Fabric e il progetto Foundry si trovino nello stesso tenant.
Utilizzare l'autenticazione dell'utente. L'autenticazione dell'entità servizio non è supportata per l'agente dati Fabric.
Ottenere questi valori prima di eseguire gli esempi:
- Endpoint del progetto Foundry:
FOUNDRY_PROJECT_ENDPOINT. - Nome dell'implementazione del modello:
FOUNDRY_MODEL_DEPLOYMENT_NAME. - ID connessione Fabric (ID connessione progetto):
FABRIC_PROJECT_CONNECTION_ID.
- Endpoint del progetto Foundry:
Per l'esempio REST, impostare anche:
AGENT_TOKEN(token portatore). È possibile ottenere un token temporaneo con interfaccia della riga di comando di Azure:az account get-access-token --scope https://ai.azure.com/.default
Configurare la connessione Microsoft Fabric
Prima di eseguire gli esempi, creare una connessione di progetto all'agente dati Fabric.
- In Microsoft Fabric aprire l'agente dati.
- Copiare i valori di
workspace_ideartifact_iddall'URL.
Il percorso URL è simile a
.../groups/<workspace_id>/aiskills/<artifact_id>.... Entrambi i valori sono GUID.- Nel portale foundry aprire il progetto.
- Nel riquadro sinistro selezionare Centro gestione e quindi risorse connesse.
- Creare una connessione di tipo Microsoft Fabric.
- Immettere i valori
workspace_ideartifact_id. - Salvare la connessione e quindi copiare l'ID della connessione.
Usare l'ID connessione come valore per
FABRIC_PROJECT_CONNECTION_ID. Il valore è simile a/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.CognitiveServices/accounts/<foundryAccountName>/projects/<foundryProjectName>/connections/<connectionName>.Pass-through dell'identità e controllo di accesso
Questa integrazione usa il pass-through di identità (on-Behalf-Of). Lo strumento Fabric esegue query usando l'identità dell'utente connesso.
- Concedere a ogni utente finale l'accesso all'agente dati Fabric e alle sorgenti dati sottostanti, altrimenti la chiamata allo strumento non riuscirà.
- Utilizzare l'autenticazione dell'utente. L'autenticazione dell'entità servizio non è supportata per l'agente dati Fabric.
- Per altre informazioni sul funzionamento dell'identità dell'agente, vedere Identità dell'agente.
Esempio di codice
Nota
- Per altre informazioni, vedere Prepararsi al codice.
- L'ID connessione deve essere nel formato
/subscriptions/{{subscriptionID}}/resourceGroups/{{resourceGroupName}}/providers/Microsoft.CognitiveServices/accounts/{{foundryAccountName}}/projects/{{foundryProjectName}}/connections/{{foundryConnectionName}}.
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
PromptAgentDefinition,
MicrosoftFabricPreviewTool,
FabricDataAgentToolParameters,
ToolProjectConnection,
)
# Format: "https://resource_name.ai.azure.com/api/projects/project_name"
PROJECT_ENDPOINT = "your_project_endpoint"
FABRIC_CONNECTION_NAME = "my-fabric-connection"
# Create clients to call Foundry API
project = AIProjectClient(
endpoint=PROJECT_ENDPOINT,
credential=DefaultAzureCredential(),
)
openai = project.get_openai_client()
# Get connection ID from connection name
fabric_connection = project.connections.get(FABRIC_CONNECTION_NAME)
# Create an agent with the Fabric data agent tool
agent = project.agents.create_version(
agent_name="MyAgent",
definition=PromptAgentDefinition(
model="gpt-4.1-mini",
instructions="You are a helpful assistant.",
tools=[
MicrosoftFabricPreviewTool(
fabric_dataagent_preview=FabricDataAgentToolParameters(
project_connections=[
ToolProjectConnection(project_connection_id=fabric_connection.id)
]
)
)
],
),
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")
user_input = input("Enter your question for Fabric (e.g., 'Tell me about sales records'): \n")
# Send the user query and force the agent to use the Fabric tool
response = openai.responses.create(
tool_choice="required",
input=user_input,
extra_body={"agent_reference": {"name": agent.name, "type": "agent_reference"}},
)
print(f"Response output: {response.output_text}")
# Clean up resources
project.agents.delete_version(agent_name=agent.name, agent_version=agent.version)
print("Agent deleted")
Output previsto
- Riga che conferma la creazione dell'agente.
- Una riga che inizia con
Response output:, seguita dal testo della risposta.
Per ulteriori dettagli, vedere l'esempio completo in Python per l'agente dati di Fabric.
Per consentire all'agente di accedere all'agente dati Fabric, usare MicrosoftFabricAgentTool.
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
var projectEndpoint = "your_project_endpoint";
var fabricConnectionName = "my-fabric-connection";
// Create project client to call Foundry API
AIProjectClient projectClient = new(
endpoint: new Uri(projectEndpoint),
tokenProvider: new DefaultAzureCredential());
// Get connection ID from connection name
AIProjectConnection fabricConnection = projectClient.Connections.GetConnection(connectionName: fabricConnectionName);
FabricDataAgentToolOptions fabricToolOption = new()
{
ProjectConnections = { new ToolProjectConnection(projectConnectionId: fabricConnection.Id) }
};
DeclarativeAgentDefinition agentDefinition = new(model: "gpt-4.1-mini")
{
Instructions = "You are a helpful assistant.",
Tools = { new MicrosoftFabricPreviewTool(fabricToolOption), }
};
AgentVersion agentVersion = projectClient.AgentAdministrationClient.CreateAgentVersion(
agentName: "myAgent",
options: new(agentDefinition));
// Create the response and make sure we are always using tool.
ProjectResponsesClient responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agentVersion.Name);
CreateResponseOptions responseOptions = new()
{
ToolChoice = ResponseToolChoice.CreateRequiredChoice(),
InputItems = { ResponseItem.CreateUserMessageItem("What was the number of public holidays in Norway in 2024?") },
};
ResponseResult response = responseClient.CreateResponse(options: responseOptions);
// Print the Agent output.
Assert.That(response.Status, Is.EqualTo(ResponseStatus.Completed));
Console.WriteLine(response.GetOutputText());
// Delete the Agent version to clean up resources.
projectClient.AgentAdministrationClient.DeleteAgentVersion(agentName: agentVersion.Name, agentVersion: agentVersion.Version);
Output previsto
- Testo della risposta stampato nella console. Per la domanda di esempio, la risposta deve includere il numero di festività pubbliche (ad esempio,
62).
L'esempio TypeScript seguente illustra come creare un agente di intelligenza artificiale con funzionalità di Microsoft Fabric usando MicrosoftFabricAgentTool e il client sincrono Azure AI Projects. L'agente può interrogare le origini dati di Fabric e fornire risposte in base all'analisi dei dati. Per una versione JavaScript di questo esempio, vedere l'esempio JavaScript per Fabric agente di dati nel repository Azure SDK per JavaScript su GitHub.
import { DefaultAzureCredential } from "@azure/identity";
import { AIProjectClient } from "@azure/ai-projects";
import * as readline from "readline";
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
const PROJECT_ENDPOINT = "your_project_endpoint";
const FABRIC_CONNECTION_NAME = "my-fabric-connection";
export async function main(): Promise<void> {
const project = new AIProjectClient(PROJECT_ENDPOINT, new DefaultAzureCredential());
const openai = project.getOpenAIClient();
// Get connection ID from connection name
const fabricConnection = await project.connections.get(FABRIC_CONNECTION_NAME);
// Define Microsoft Fabric tool that connects to Fabric data sources
const agent = await project.agents.createVersion("MyFabricAgent", {
kind: "prompt",
model: "gpt-4.1-mini",
instructions: "You are a helpful assistant.",
tools: [
{
type: "fabric_dataagent_preview",
fabric_dataagent_preview: {
project_connections: [
{
project_connection_id: fabricConnection.id,
},
],
},
},
],
});
console.log(`Agent created (id: ${agent.id}, name: ${agent.name}, version: ${agent.version})`);
// Prompt user for input
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
const userInput = await new Promise<string>((resolve) => {
rl.question(
"Enter your question for Fabric (e.g., 'Tell me about sales records'): \n",
(answer) => {
rl.close();
resolve(answer);
},
);
});
// Send the user query and force the agent to use the Fabric tool
const response = await openai.responses.create(
{
input: userInput,
},
{
body: {
agent: { name: agent.name, type: "agent_reference" },
tool_choice: "required",
},
},
);
console.log(`\nResponse output: ${response.output_text}`);
// Clean up resources by deleting the agent version
await project.agents.deleteVersion(agent.name, agent.version);
console.log("Agent deleted");
}
main().catch((err) => {
console.error("The sample encountered an error:", err);
});
Output previsto
- Riga che conferma la creazione dell'agente.
- Una riga che inizia con
Response output:, seguita dal testo della risposta. - Conferma finale dell'eliminazione dell'agente.
Usare Microsoft Fabric in un agente Java
Aggiungi la dipendenza a pom.xml:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-agents</artifactId>
<version>2.0.0</version>
</dependency>
Creare un agente con Microsoft Fabric
import com.azure.ai.agents.AgentsClient;
import com.azure.ai.agents.AgentsClientBuilder;
import com.azure.ai.agents.ResponsesClient;
import com.azure.ai.agents.models.*;
import com.azure.identity.DefaultAzureCredentialBuilder;
import com.openai.models.responses.Response;
import com.openai.models.responses.ResponseCreateParams;
import java.util.Arrays;
import java.util.Collections;
public class FabricToolExample {
public static void main(String[] args) {
// Format: "https://resource_name.ai.azure.com/api/projects/project_name"
String projectEndpoint = "your_project_endpoint";
String fabricConnectionId = "your-fabric-connection-id";
AgentsClientBuilder builder = new AgentsClientBuilder()
.credential(new DefaultAzureCredentialBuilder().build())
.endpoint(projectEndpoint);
AgentsClient agentsClient = builder.buildAgentsClient();
ResponsesClient responsesClient = builder.buildResponsesClient();
// Create Microsoft Fabric tool with connection configuration
MicrosoftFabricPreviewTool fabricTool = new MicrosoftFabricPreviewTool(
new FabricDataAgentToolParameters()
.setProjectConnections(Arrays.asList(
new ToolProjectConnection(fabricConnectionId)
))
);
// Create agent with Fabric tool
PromptAgentDefinition agentDefinition = new PromptAgentDefinition("gpt-4.1-mini")
.setInstructions("You are a data assistant that can query Microsoft Fabric data.")
.setTools(Collections.singletonList(fabricTool));
AgentVersionDetails agent = agentsClient.createAgentVersion("fabric-agent", agentDefinition);
System.out.printf("Agent created: %s (version %s)%n", agent.getName(), agent.getVersion());
// Create a response
AgentReference agentReference = new AgentReference(agent.getName())
.setVersion(agent.getVersion());
Response response = responsesClient.createAzureResponse(
new AzureCreateResponseOptions().setAgentReference(agentReference),
ResponseCreateParams.builder()
.input("Query the latest sales data from Microsoft Fabric"));
System.out.println("Response: " + response.output());
// Clean up
agentsClient.deleteAgentVersion(agent.getName(), agent.getVersion());
}
}
L'esempio seguente illustra come chiamare l'API REST dell'agente Foundry usando lo strumento dell'agente dati Fabric.
Ottenere un token di accesso:
export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)
Importante
AGENT_TOKEN è una credenziale. Tienilo segreto ed evita di registrarlo nel sistema di controllo del codice sorgente.
curl --request POST \
--url "$FOUNDRY_PROJECT_ENDPOINT/openai/v1/responses" \
-H "Authorization: Bearer $AGENT_TOKEN" \
-H "Content-Type: application/json" \
--data '{
"model": "'$FOUNDRY_MODEL_DEPLOYMENT_NAME'",
"input": "Tell me about sales records for the last quarter.",
"tool_choice": "required",
"tools": [
{
"type": "fabric_dataagent_preview",
"fabric_dataagent_preview": {
"project_connections": [
{
"project_connection_id": "'$FABRIC_PROJECT_CONNECTION_ID'"
}
]
}
}
]
}'
Output previsto
- Risposta
200con un corpo JSON che contiene l'output del modello.
Risoluzione dei problemi
| Problema | Causa | Risoluzione |
|---|---|---|
Artifact Id should not be empty and needs to be a valid GUID. |
Connessione di Fabric creata con workspace_id non valido o artifact_id non valido |
Ricreare la connessione Fabric. Copiare workspace_id e artifact_id dal percorso URL dell'agente dati .../groups/<workspace_id>/aiskills/<artifact_id>.... |
Can't add messages to thread_... while a run ... is active. |
Un'esecuzione è ancora attiva per il thread | Avviare una nuova conversazione o attendere il completamento dell'esecuzione attiva, quindi riprovare. |
unauthorized |
L'utente finale non ha accesso all'agente di dati Fabric o alle fonti di dati sottostanti. | Concedere all'utente finale l'accesso in Fabric e verificare di usare l'autenticazione dell'identità utente. |
Cannot find the requested item O configuration not found |
L'agente dati di Fabric non viene pubblicato o la sua configurazione è stata modificata | Pubblicare l'agente dati Fabric e verificare che sia attivo e che le relative origini dati siano valide. |
| Errori di timeout della connessione | Latenza di rete o ritardi del servizio di Fabric | Aumentare le impostazioni di timeout nella configurazione client. Provare a implementare la logica di ripetizione dei tentativi con backoff esponenziale. |
| La query di dati restituisce risultati vuoti | La query non corrisponde ai dati disponibili | Verificare che le origini dati nell'agente dati Fabric contengano i dati previsti. Prima di tutto, testare le query direttamente in Fabric. |
Invalid workspace ID format |
L'ID dell'area di lavoro non è un GUID valido | Copiare il GUID esatto dell'area di lavoro dall'URL o dal portale di Fabric. Non modificare il formato ID. |
| Agent non usa lo strumento Fabric | Lo strumento non configurato correttamente o il prompt non lo attiva | Verificare che lo strumento Fabric sia abilitato nella definizione dell'agente. Aggiornare il prompt per fare riferimento ai dati che richiedono l'accesso a Fabric. |