Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Важно
Элементы, помеченные (предварительная версия) в этой статье, в настоящее время находятся в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
Примечание
Ознакомьтесь с рекомендациями по оптимизации использования инструментов.
Используйте агент данных Microsoft Fabric со службой агента Foundry для анализа корпоративных данных в чате. Агент данных Fabric преобразует корпоративные данные в разговорный опыт вопросов и ответов.
Сначала создайте и опубликуйте агент данных Fabric. Затем подключите агент данных Fabric к опубликованной конечной точке. Когда пользователь отправляет запрос, агент определяет, следует ли использовать агент данных Fabric. Если это так, он использует удостоверение конечного пользователя для создания запросов по данным, к которых у них есть доступ. Наконец, агент создает ответы на основе запросов, возвращаемых агентом данных Fabric. С помощью передачи удостоверения (от имени) эта интеграция упрощает доступ к данным предприятия в Fabric при сохранении прочной безопасности, обеспечивая надлежащий контроль доступа и корпоративную защиту.
Поддержка использования
В следующей таблице показана поддержка пакета SDK и настройки.
| поддержка Microsoft Foundry | пакет SDK Python | C# SDK | JavaScript SDK | пакет SDK Java | REST API | Базовая настройка агента | Настройка стандартного агента |
|---|---|---|---|---|---|---|---|
| ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ |
Необходимые условия
Примечание
- Выбранная модель во время настройки агента используется только для координации и создания ответа. Это не влияет на выбор модели, которую агент данных Fabric использует для NL2SQL.
- Чтобы помочь агенту надежно вызвать средство Fabric, включите четкие инструкции по инструменту в инструкции агента (например, "Для данных о продажах клиентов и продуктов используйте средство Fabric"). Вы также можете принудительно использовать инструмент с помощью
tool_choice.
Создайте и опубликуйте агент данных Fabric.
Назначьте разработчикам и конечным пользователям по крайней мере роль
Azure AI UserAzure RBAC. Дополнительные сведения см. в разделе Azure управление доступом на основе ролей в Foundry.Предоставьте разработчикам и конечным пользователям по крайней мере
READдоступ к агенту данных Fabric. Пользователям также требуется минимальное разрешение на каждый базовый источник данных:Источник данных Минимальное разрешение семантическая модель Power BI Build(включает чтение). Только чтение недостаточно, так как агент создает запросы модели, требующие сборки.Lakehouse Прочитайте элемент Lakehouse (и доступ к таблицам, если они применяются). Склад Чтение ( SELECTв соответствующих таблицах).База данных KQL Роль читателя в базе данных. Полные сведения см. в разделе "Базовые разрешения источника данных".
Убедитесь, что ваш агент данных Fabric и проект Foundry находятся у одного арендатора.
Используйте проверку подлинности удостоверения пользователя. Аутентификация служебного субъекта не поддерживается для агента данных Fabric.
Получите эти значения перед выполнением примеров:
- Конечная точка проекта Foundry:
FOUNDRY_PROJECT_ENDPOINT - Имя развертывания модели:
FOUNDRY_MODEL_DEPLOYMENT_NAME - Идентификатор подключения Fabric (идентификатор подключения проекта):
FABRIC_PROJECT_CONNECTION_ID.
- Конечная точка проекта Foundry:
Для примера REST также задано следующее:
AGENT_TOKEN(маркер носителя). Временный маркер можно получить с помощью Azure CLI:az account get-access-token --scope https://ai.azure.com/.default
Настройка подключения Microsoft Fabric
Перед запуском примеров создайте подключение проекта к агенту данных Fabric.
- В Microsoft Fabric откройте агент данных.
- Скопируйте значения из URL-адреса
workspace_idиartifact_id.
Путь URL-адреса выглядит примерно так.
.../groups/<workspace_id>/aiskills/<artifact_id>...Оба значения являются идентификаторами GUID.- На портале Foundry откройте проект.
- В левой области выберите центр управления и выберите "Подключенные ресурсы".
- Создайте подключение типа Microsoft Fabric.
- Введите значения
workspace_idиartifact_id. - Сохраните подключение и скопируйте идентификатор подключения.
Используйте идентификатор подключения в качестве значения
FABRIC_PROJECT_CONNECTION_ID. Значение выглядит как/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.CognitiveServices/accounts/<foundryAccountName>/projects/<foundryProjectName>/connections/<connectionName>.Сквозная передача удостоверений и управление доступом
Эта интеграция использует механизм передачи идентификационных данных (On-Behalf-Of). Средство Fabric выполняет запросы с помощью удостоверения пользователя, вошедшего в систему.
- Предоставьте каждому пользователю доступ к агенту данных Fabric и его базовым источникам данных, или вызов средства завершается сбоем.
- Используйте проверку подлинности удостоверения пользователя. Аутентификация служебного субъекта не поддерживается для агента данных Fabric.
- Дополнительные сведения о том, как работает удостоверение агента, см. в разделе " Удостоверение агента".
Пример кода
Примечание
- Дополнительные сведения см. в разделе "Подготовка к коду".
- Идентификатор подключения должен быть в формате
/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")
Ожидаемые выходные данные
- Сообщение, подтверждающее создание агента.
- Строка, которая начинается с
Response output:, за которой следует текст ответа.
Дополнительные сведения см. в примере full Python для агента данных Fabric.
Чтобы разрешить агенту доступ к агенту данных Fabric, используйте 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);
Ожидаемые выходные данные
- Текст ответа, напечатанный в консоли. Для примера вопроса ответ должен содержать количество государственных праздников (например,
62).
В следующем примере TypeScript показано, как создать агента ИИ, обладающего возможностями Microsoft Fabric, с помощью клиента MicrosoftFabricAgentTool и синхронного клиента Azure AI Projects. Агент может делать запросы к источникам данных Fabric и предоставлять ответы на основе анализа данных. Для версии примера на JavaScript см. пример JavaScript для агента данных Fabric в Azure SDK для JavaScript на 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);
});
Ожидаемые выходные данные
- Сообщение, подтверждающее создание агента.
- Строка, которая начинается с
Response output:, за которой следует текст ответа. - Окончательное подтверждение удаления агента.
Использование Microsoft Fabric в агенте Java
Добавьте зависимость в вашу pom.xml:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-agents</artifactId>
<version>2.0.0</version>
</dependency>
Создание агента с помощью 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());
}
}
В следующем примере показано, как вызвать REST API агента Foundry с помощью средства агента данных Fabric.
Получение токена доступа:
export AGENT_TOKEN=$(az account get-access-token --scope "https://ai.azure.com/.default" --query accessToken -o tsv)
Важно
AGENT_TOKEN — это учетные данные. Держите его секретом и не проверяйте его в системе управления версиями.
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'"
}
]
}
}
]
}'
Ожидаемые выходные данные
-
200Ответ с текстом JSON, содержащим выходные данные модели.
Устранение неполадок
| Проблема | Причина | Разрешение |
|---|---|---|
Artifact Id should not be empty and needs to be a valid GUID. |
Создано подключение Fabric с недопустимым workspace_id или artifact_id |
Повторно создайте подключение Fabric. Скопируйте workspace_id и artifact_id из URL-адреса .../groups/<workspace_id>/aiskills/<artifact_id>...агента данных. |
Can't add messages to thread_... while a run ... is active. |
Запуск всё ещё активен для потока | Начните новую беседу или дождитесь завершения запущенного процесса, а затем попробуйте снова. |
unauthorized |
Конечный пользователь не имеет доступа к агенту данных Fabric или его базовым источникам данных | Предоставьте пользователю доступ в Fabric и убедитесь, что вы используете проверку подлинности пользователя. |
Cannot find the requested item Или configuration not found |
Fabric агент данных не опубликован или изменена его конфигурация | Опубликуйте агент данных Fabric и убедитесь, что он активен и его источники данных являются допустимыми. |
| Ошибки времени ожидания подключения | Задержка сети или задержка службы Fabric | Увеличьте параметры времени ожидания в конфигурации клиента. Рассмотрите возможность реализации логики повторных попыток с экспоненциальной отсрочкой. |
| Запрос данных возвращает пустые результаты | Запрос не соответствует доступным данным | Проверьте источники данных в агенте данных Fabric содержат ожидаемые данные. Сначала протестируйте запросы непосредственно в Fabric. |
Invalid workspace ID format |
Идентификатор рабочей области не является допустимым ИДЕНТИФИКАТОРом GUID | Скопируйте точный GUID рабочей области из URL-адреса или портала Fabric. Не изменяйте формат идентификатора. |
| Агент не использует средство Fabric | Средство неправильно настроено или запрос не активирует его. | Убедитесь, что средство Fabric включено в определении агента. Обновите запрос, чтобы включить данные, для которых требуется доступ к Fabric. |