Python: [Feature Branch] Structured Outputs and more examples for AzureAIClient (#1987)

* Small updates

* Added support for structured outputs

* Added code interpreter example

* More examples and fixes

* Added more examples and README

* Small fix

* Addressed PR feedback
This commit is contained in:
Dmytro Struk
2025-11-07 00:17:20 -08:00
committed by GitHub
parent 915c749e41
commit 9423c1763c
17 changed files with 3915 additions and 3461 deletions
@@ -49,7 +49,7 @@ async def main() -> None:
break
# 1. Create Azure AI agent with the search tool
azure_ai_agent = await project_client.agents.create_agent(
azure_ai_agent = await agents_client.create_agent(
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
name="HotelSearchAgent",
instructions=(
@@ -114,7 +114,7 @@ async def main() -> None:
finally:
# Clean up the agent manually
await project_client.agents.delete_agent(azure_ai_agent.id)
await agents_client.delete_agent(azure_ai_agent.id)
if __name__ == "__main__":
@@ -6,7 +6,6 @@ import os
from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.ai.agents.aio import AgentsClient
from azure.ai.projects.aio import AIProjectClient
from azure.identity.aio import AzureCliCredential
"""
@@ -23,10 +22,9 @@ async def main() -> None:
# Create the client
async with (
AzureCliCredential() as credential,
AIProjectClient(endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"], credential=credential) as project_client,
AgentsClient(endpoint=os.environ["AZURE_AI_PROJECT_ENDPOINT"], credential=credential) as agents_client,
):
azure_ai_agent = await project_client.agents.create_agent(
azure_ai_agent = await agents_client.create_agent(
model=os.environ["AZURE_AI_MODEL_DEPLOYMENT_NAME"],
# Create remote agent with default instructions
# These instructions will persist on created agent for every run.
@@ -52,7 +50,7 @@ async def main() -> None:
print(f"Agent: {result}\n")
finally:
# Clean up the agent manually
await project_client.agents.delete_agent(azure_ai_agent.id)
await agents_client.delete_agent(azure_ai_agent.id)
if __name__ == "__main__":
@@ -33,12 +33,10 @@ async def main() -> None:
pdf_file_path = Path(__file__).parent.parent / "resources" / "employees.pdf"
print(f"Uploading file from: {pdf_file_path}")
file = await client.project_client.agents.files.upload_and_poll(
file_path=str(pdf_file_path), purpose="assistants"
)
file = await client.agents_client.files.upload_and_poll(file_path=str(pdf_file_path), purpose="assistants")
print(f"Uploaded file, file ID: {file.id}")
vector_store = await client.project_client.agents.vector_stores.create_and_poll(
vector_store = await client.agents_client.vector_stores.create_and_poll(
file_ids=[file.id], name="my_vectorstore"
)
print(f"Created vector store, vector store ID: {vector_store.id}")
@@ -66,9 +64,9 @@ async def main() -> None:
# 5. Cleanup: Delete the vector store and file
try:
if vector_store:
await client.project_client.agents.vector_stores.delete(vector_store.id)
await client.agents_client.vector_stores.delete(vector_store.id)
if file:
await client.project_client.agents.files.delete(file.id)
await client.agents_client.files.delete(file.id)
except Exception:
# Ignore cleanup errors to avoid masking issues
pass
@@ -79,9 +77,9 @@ async def main() -> None:
client = AzureAIAgentClient(async_credential=AzureCliCredential())
try:
if vector_store:
await client.project_client.agents.vector_stores.delete(vector_store.id)
await client.agents_client.vector_stores.delete(vector_store.id)
if file:
await client.project_client.agents.files.delete(file.id)
await client.agents_client.files.delete(file.id)
except Exception:
# Ignore cleanup errors to avoid masking issues
pass