Skip to content
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

[AI] [Projects] Add Fabric sample #40116

Open
wants to merge 2 commits into
base: feature/azure-ai-projects-beta8
Choose a base branch
from
Open
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-agent-with-fabric)
- [Create thread](#create-thread) with
- [Tool resource](#create-thread-with-tool-resource)
- [Create message](#create-message) with:
Expand Down Expand Up @@ -808,6 +809,37 @@ with project_client:

<!-- END SNIPPET -->

#### Create 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 agent fabric tool and add the connection id
fabric = FabricTool(connection_id=conn_id)

# Create agent with the bing tool and process assistant run
with project_client:
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-assistant",
instructions="You are a helpful assistant",
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
85 changes: 85 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,85 @@
# ------------------------------------
# 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


# Create an Azure AI Client from a connection string, copied from your AI Studio project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables

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 agent fabric tool and add the connection id
fabric = FabricTool(connection_id=conn_id)

# Create agent with the bing tool and process assistant run
with project_client:
agent = project_client.agents.create_agent(
model=os.environ["MODEL_DEPLOYMENT_NAME"],
name="my-assistant",
instructions="You are a helpful assistant",
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 data>",
)
print(f"Created message, ID: {message.id}")

# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")

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

# Delete the assistant 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}")
Loading