Skip to content

[AI] [Projects] Add Fabric sample #40116

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions sdk/ai/azure-ai-projects/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ To report an issue with the client library, or request additional features, plea
- [Function call](#create-agent-with-function-call)
- [Azure Function Call](#create-agent-with-azure-function-call)
- [OpenAPI](#create-agent-with-openapi)
- [Fabric data](#create-an-agent-with-fabric)
- [Create thread](#create-thread) with
- [Tool resource](#create-thread-with-tool-resource)
- [Create message](#create-message) with:
Expand Down Expand Up @@ -810,6 +811,37 @@ with project_client:

<!-- END SNIPPET -->

#### Create an Agent with Fabric

To enable your Agent to answer queries using Fabric data, use `FabricTool` along with a connection to the Fabric resource.

Here is an example:

<!-- SNIPPET:sample_agents_fabric.create_agent_with_fabric_tool -->

```python
fabric_connection = project_client.connections.get(connection_name=os.environ["FABRIC_CONNECTION_NAME"])
conn_id = fabric_connection.id

print(conn_id)

# Initialize an Agent Fabric tool and add the connection id
fabric = FabricTool(connection_id=conn_id)

# Create an Agent with the Fabric tool and process an Agent run
with project_client:
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-agent",
instructions="You are a helpful agent",
tools=fabric.definitions,
headers={"x-ms-enable-preview": "true"},
)
```

<!-- END SNIPPET -->


#### Create Thread

For each session or conversation, a thread is required. Here is an example:
Expand Down
80 changes: 80 additions & 0 deletions sdk/ai/azure-ai-projects/samples/agents/sample_agents_fabric.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------

"""
FILE: sample_agents_fabric.py

DESCRIPTION:
This sample demonstrates how to use Agent operations with the Microsoft Fabric grounding tool from
the Azure Agents service using a synchronous client.

USAGE:
python sample_agents_fabric.py

Before running the sample:

pip install azure-ai-projects azure-identity

Set this environment variables with your own values:
PROJECT_CONNECTION_STRING - the Azure AI Project connection string, as found in your AI Studio Project.
"""

import os
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import FabricTool

project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)

# [START create_agent_with_fabric_tool]
fabric_connection = project_client.connections.get(connection_name=os.environ["FABRIC_CONNECTION_NAME"])
conn_id = fabric_connection.id

print(conn_id)

# Initialize an Agent Fabric tool and add the connection id
fabric = FabricTool(connection_id=conn_id)

# Create an Agent with the Fabric tool and process an Agent run
with project_client:
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-agent",
instructions="You are a helpful agent",
tools=fabric.definitions,
headers={"x-ms-enable-preview": "true"},
)
# [END create_agent_with_fabric_tool]
print(f"Created Agent, ID: {agent.id}")

# Create thread for communication
thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")

# Create message to thread
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="<User query against Fabric resource>",
)
print(f"Created message, ID: {message.id}")

# Create and process an Agent run in thread with tools
run = project_client.agents.create_and_process_run(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 done
project_client.agents.delete_agent(agent.id)
print("Deleted agent")

# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")