Skip to content
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
4 changes: 3 additions & 1 deletion sdk/ai/azure-ai-projects/.env.template
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,9 @@ AZURE_AI_PROJECTS_TESTS_CONTAINER_INGRESS_SUBDOMAIN_SUFFIX=
# Used in tools
BING_PROJECT_CONNECTION_ID=
MCP_PROJECT_CONNECTION_ID=

FABRIC_PROJECT_CONNECTION_ID=
AI_SEARCH_PROJECT_CONNECTION_ID=
AI_SEARCH_INDEX_NAME=



Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------

"""
DESCRIPTION:
This sample demonstrates how to create an AI agent with Azure AI Search capabilities
using the AzureAISearchAgentTool and synchronous Azure AI Projects client. The agent can search
indexed content and provide responses with citations from search results.

USAGE:
python sample_agent_ai_search.py

Before running the sample:

pip install "azure-ai-projects>=2.0.0b1" azure-identity openai python-dotenv

Set these environment variables with your own values:
1) AZURE_AI_PROJECT_ENDPOINT - The Azure AI Project endpoint, as found in the Overview
page of your Azure AI Foundry portal.
2) AZURE_AI_MODEL_DEPLOYMENT_NAME - The deployment name of the AI model, as found under the "Name" column in
the "Models + endpoints" tab in your Azure AI Foundry project.
3) AI_SEARCH_PROJECT_CONNECTION_ID - The AI Search project connection ID,
as found in the "Connections" tab in your Azure AI Foundry project.
4) AI_SEARCH_INDEX_NAME - The name of the AI Search index to use for searching.
"""

import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
AzureAISearchAgentTool,
PromptAgentDefinition,
AzureAISearchToolResource,
AISearchIndexResource,
AzureAISearchQueryType,
)

load_dotenv()

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

openai_client = project_client.get_openai_client()

with project_client:
agent = project_client.agents.create_version(
agent_name="MyAgent",
definition=PromptAgentDefinition(
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
instructions="""You are a helpful assistant. You must always provide citations for
answers using the tool and render them as: `[message_idx:search_idx†source]`.""",
tools=[
AzureAISearchAgentTool(
azure_ai_search=AzureAISearchToolResource(
indexes=[
AISearchIndexResource(
project_connection_id=os.environ["AI_SEARCH_PROJECT_CONNECTION_ID"],
index_name=os.environ["AI_SEARCH_INDEX_NAME"],
query_type=AzureAISearchQueryType.SIMPLE,
),
]
)
)
],
),
description="You are a helpful agent.",
)
print(f"Agent created (id: {agent.id}, name: {agent.name}, version: {agent.version})")

user_input = input(
"""Enter your question for the AI Search agent available in the index
(e.g., 'Tell me about the mental health services available from Premera'): \n"""
)

stream_response = openai_client.responses.create(
stream=True,
tool_choice="required",
input=user_input,
extra_body={"agent": {"name": agent.name, "type": "agent_reference"}},
)

for event in stream_response:
if event.type == "response.created":
print(f"Follow-up response created with ID: {event.response.id}")
elif event.type == "response.output_text.delta":
print(f"Delta: {event.delta}")
elif event.type == "response.text.done":
print(f"\nFollow-up response done!")
elif event.type == "response.output_item.done":
if event.item.type == "message":
item = event.item
if item.content[-1].type == "output_text":
text_content = item.content[-1]
for annotation in text_content.annotations:
if annotation.type == "url_citation":
print(
f"URL Citation: {annotation.url}, "
f"Start index: {annotation.start_index}, "
f"End index: {annotation.end_index}"
)
elif event.type == "response.completed":
print(f"\nFollow-up completed!")
print(f"Full response: {event.response.output_text}")

print("\nCleaning up...")
project_client.agents.delete_version(agent_name=agent.name, agent_version=agent.version)
print("Agent deleted")
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
# ------------------------------------
# Copyright (c) Microsoft Corporation.
# Licensed under the MIT License.
# ------------------------------------

"""
DESCRIPTION:
This sample demonstrates how to create an AI agent with Microsoft Fabric capabilities
using the MicrosoftFabricAgentTool and synchronous Azure AI Projects client. The agent can query
Fabric data sources and provide responses based on data analysis.

USAGE:
python sample_agent_fabric.py

Before running the sample:

pip install "azure-ai-projects>=2.0.0b1" azure-identity openai python-dotenv

Set these environment variables with your own values:
1) AZURE_AI_PROJECT_ENDPOINT - The Azure AI Project endpoint, as found in the Overview
page of your Azure AI Foundry portal.
2) AZURE_AI_MODEL_DEPLOYMENT_NAME - The deployment name of the AI model, as found under the "Name" column in
the "Models + endpoints" tab in your Azure AI Foundry project.
3) FABRIC_PROJECT_CONNECTION_ID - The Fabric project connection ID,
as found in the "Connections" tab in your Azure AI Foundry project.
"""

import os
from dotenv import load_dotenv
from azure.identity import DefaultAzureCredential
from azure.ai.projects import AIProjectClient
from azure.ai.projects.models import (
PromptAgentDefinition,
MicrosoftFabricAgentTool,
FabricDataAgentToolParameters,
ToolProjectConnection,
)

load_dotenv()

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

openai_client = project_client.get_openai_client()

with project_client:
agent = project_client.agents.create_version(
agent_name="MyAgent",
definition=PromptAgentDefinition(
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
instructions="You are a helpful assistant.",
tools=[
MicrosoftFabricAgentTool(
fabric_dataagent_preview=FabricDataAgentToolParameters(
project_connections=[
ToolProjectConnection(project_connection_id=os.environ["FABRIC_PROJECT_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")

response = openai_client.responses.create(
tool_choice="required",
input=user_input,
extra_body={"agent": {"name": agent.name, "type": "agent_reference"}},
)

print(f"Response output: {response.output_text}")

print("\nCleaning up...")
project_client.agents.delete_version(agent_name=agent.name, agent_version=agent.version)
print("Agent deleted")
Loading