NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1378 most downloaded on PyPI
Microsoft Corporation Azure AI Projects Client Library for Python
Last release 16 days ago
18 Sep 2026
Ships fairly regularly
a new release about every 5 weeks
Nearly every release is documented
notes for 11 of 11 stable releases
Nothing withdrawn
no release was ever pulled
2 years old
31 releases · first in 2024
One column per month.
Breaking changes in beta classes:
.beta.agents.create_from_prompt() to generate and create a Voice Agent from high-level inputs..beta.voice_agents.conversations sub-client for managing voice conversations and retrieving their responses, conversation items, and audio..beta.voice_agents.realtime.connect() for sync and async realtime Voice Agent sessions with typed client and server events..beta.voice_agents.telephony sub-client for managing calls, bindings, transfer targets, and durable outbound call jobs.harness and skills properties to PromptAgentDefinition, with new GitHub Copilot harness, toolset, and skill-reference models.RaiConfig.invocations_moderation and RaiInvocationModeration.ToolboxesOperations.invoke_latest_toolbox_mcp() and toolbox version metadata through ToolboxObject.updated_at and ToolboxObject.versions.DataGenerationJobOutputOptions.write_mode for controlling dataset output writes and TracesDataGenerationJobSource.trace_ids for selecting explicit traces.TracesDataGenerationJobOptions.max_samples optional.AgentDetails.configuration_state and AgentSessionResource.stopped_at.Breaking changes in beta classes:
max_samples constructor argument and property from DataGenerationJobOptions and SimulationSeedDataGenerationJobOptions.ToolboxObject constructor now requires updated_at and versions.voice dependency group, which installs websockets for sync realtime Voice Agent sessions and aiohttp for async sessions.sample_voice_agent_basic.py under samples/agents/voice/, demonstrating the Voice Agent management lifecycle.sample_voice_agent_generate.py, demonstrating guided Voice Agent authoring with .beta.agents.create_from_prompt().sample_voice_agent_live_text_conversation.py, demonstrating a persisted, typed realtime Voice Agent conversation.sample_voice_agent_live_audio_conversation_async.py, demonstrating a hands-free realtime audio conversation with barge-in.sample_voice_agent_live_function_tool.py, demonstrating client-side function execution during a realtime Voice Agent session.sample_voice_agent_read_conversation.py, demonstrating how to read a persisted Voice Agent conversation and transcript.sample_voice_agent_read_conversation_audio.py, demonstrating how to retrieve merged conversation audio and individual audio segments.sample_voice_agent_versions.py, demonstrating Voice Agent version and draft management.sample_voice_agent_with_tools.py, demonstrating audio configuration, tools, and self-deployed models.sample_synthetic_multiturn_evaluation.py to set the service-required simulation seed max_samples field through the model's mapping interface because SimulationSeedDataGenerationJobOptions no longer exposes it as a constructor argument.Added sample_agent_insights_on_demand.py and sample_agent_insights_scheduled.py under samples/agent_insights/ to demonstrate on-demand analysis, insig
sample_agent_insights_on_demand.py and sample_agent_insights_scheduled.py under samples/agent_insights/ to demonstrate on-demand analysis, insight lifecycle updates, and scheduled monitor setup with temporary external agents, fictional traces, and owned-resource cleanup.sample_agent_web_iq.py under samples/agents/tools/, demonstrating a Prompt Agent using the WebIQPreviewTool.Added supporting AgentInsight* models and enums covering monitors, runs, generated insights, proposed fixes, highlighted and linked traces, costs, tok
HostedAgentDefinition.session_configuration and SessionConfiguration, including idle-timeout configuration.authorization argument to .beta.routines.create_or_update, with RoutineAuthorization and RoutineDispatchIdentity for selecting the agent or routine creator identity.ShellToolboxTool and supporting container environment and network policy models, with the new ToolboxToolType.SHELL enum member.WebIQPreviewTool and WebIQPreviewToolboxTool, with new ToolType.WEB_IQ_PREVIEW and ToolboxToolType.WEB_IQ_PREVIEW enum members.external_web_access property to WebSearchTool and WebSearchToolboxTool for disabling live internet access.sample_toolbox_with_shell.py under samples/agents/tools/, demonstrating a Prompt Agent invoking a ShellToolboxTool.sample_toolbox_with_shipping_skill.py under samples/agents/tools/, demonstrating a Prompt Agent using a skill through a Toolbox MCP endpoint.sample_toolbox_with_shell_and_skill.py under samples/agents/tools/, demonstrating a Prompt Agent using a skill with a ShellToolboxTool through a Toolbox MCP endpoint.sample_synthetic_multiturn_evaluation.py under samples/evaluations/, demonstrating simulation seed generation from an agent followed by multi-turn conversation simulation and evaluation.sample_responses_model_router.py under samples/responses/, demonstrating a Responses API request to a model router deployment and selection of a model by the router.with_raw_response streaming calls (GitHub issue 48646).All breaking changes are associated with beta features.
openai has changed to openai>=3.0.0, which requires httpx2 instead of httpx.A2ATool and A2AToolboxTool, with the new A2AProtocolVersion enum for selecting protocol version 1.0..beta.agents.begin_create_optimization_job now returns a custom LRO poller named AgentOptimizationLROPoller. Its details property exposes the created job ID as job_id..beta.datasets.begin_create_generation_job now returns a custom LRO poller named DatasetGenerationLROPoller. Its details property exposes the created job ID as job_id..beta.evaluators.begin_create_generation_job now returns a custom LRO poller named EvaluatorGenerationLROPoller. Its details property exposes the created job ID as job_id.state_source property to AgentDetails and the new AgentStateSource enum.ProgrammaticToolCallingParam and SpecificProgrammaticToolCallingParam, with new ToolType.PROGRAMMATIC_TOOL_CALLING and ToolChoiceParamType.PROGRAMMATIC_TOOL_CALLING enum members.allowed_callers property to ApplyPatchToolParam, CodeInterpreterTool, CodeInterpreterToolboxTool, CustomToolParam, FunctionShellToolParam, FunctionTool, FunctionToolParam, MCPTool, and MCPToolboxTool. Added the new CallableToolAllowedCaller enum values direct and programmatic.Reasoning with optional mode and context properties. Added ReasoningModeEnum for standard and pro; effort now uses the new ReasoningEffort enum, including the new max effort.All breaking changes are associated with beta features.
.beta.routines.list and .beta.routines.list_runs replaced the before argument with after and now use the service-provided next_link for continuation.TaskGenerationDataGenerationJobOptions to SimulationSeedDataGenerationJobOptions. The corresponding DataGenerationJobType.TASK_GENERATION enum member was renamed to DataGenerationJobType.SIMULATION_SEED, and its wire value changed from task_generation to simulation_seed.OptimizationDatasetInputType to AgentOptimizationDatasetInputType.OptimizationAgentIdentifier to OptimizedAgentIdentifier.OptimizationCandidate to AgentOptimizationCandidate.OptimizationDatasetCriterion to AgentOptimizationDatasetCriterion.OptimizationDatasetInput to AgentOptimizationDatasetInput.OptimizationDatasetItem to AgentOptimizationDatasetItem.OptimizationEvaluatorRef to AgentOptimizationEvaluatorRef.OptimizationInlineDatasetInput to AgentOptimizationInlineDatasetInput.OptimizationJob to AgentOptimizationJob.OptimizationJobInputs to AgentOptimizationJobInputs.OptimizationJobListItem to AgentOptimizationJobListItem.OptimizationJobProgress to AgentOptimizationJobProgress.OptimizationJobResult to AgentOptimizationJobResult.OptimizationOptions to AgentOptimizationOptions.OptimizationReferenceDatasetInput to AgentOptimizationReferenceDatasetInput.sample_dataset_generation_job_simpleqna_for_finetuning_async.py under samples/datasets/, demonstrating asynchronous generation of a SimpleQnA dataset for fine-tuning.sample_dataset_generation_job_simpleqna_for_finetuning_with_app_polling.py under samples/datasets/, demonstrating application-managed polling for a SimpleQnA fine-tuning data generation job.samples/logs/:
sample_log_all.py demonstrating combined logging for Azure SDK and .get_openai_client() operations.sample_log_from_openai_client.py demonstrating logging for an OpenAI client created from .get_openai_client().sample_log_from_sdk.py demonstrating logging for Azure AI Projects SDK client operations.sample_log_to_console.py demonstrating console logging configuration.sample_log_with_logging_disabled.py demonstrating redacted logging behavior when logging_enable is not enabled.sample_optimization_job_basic_polling.py and sample_optimization_job_basic_polling_async.py to sample_optimization_job_advanced_app_polling.py and sample_optimization_job_advanced_app_polling_async.py.Breaking changes in beta methods:
ToolSearchToolboxTool (discriminator toolbox_search) for storing a tool-search tool in a toolbox.
This replaces ToolboxSearchPreviewToolboxTool, which is still present but will be removed in a future release of the package. Please migrate your code to use the stable tool.TaskGenerationDataGenerationJobOptions (discriminator task_generation) with data generation job options for multi-turn evaluation scenarios.RubricGenerationInputQualityWarning and new enums RubricGenerationInputQualityWarningCode, RubricGenerationInputQualityWarningSeverity, and RubricGenerationInputQualityWarningSource.GenerationWarningType.AgentIdentityStatus and new optional status property on class AgentIdentity.input_quality_warnings on class EvaluatorGenerationJob.generation_job_id and warnings on class EvaluatorVersion.max_stalls on class OptimizationOptions.Breaking changes in beta methods:
.beta.evaluators.create_generation_job renamed to .beta.evaluators.begin_create_generation_job and is now a long-running operation returning LROPoller[EvaluatorVersion] (previously returned EvaluatorGenerationJob)..beta.datasets.create_generation_job renamed to .beta.datasets.begin_create_generation_job and is now a long-running operation returning LROPoller[DataGenerationJobResult]..beta.agents.create_optimization_job renamed to .beta.agents.begin_create_optimization_job and is now a long-running operation returning LROPoller[OptimizationJobResult].sample_optimization_job_basic_polling.py and sample_optimization_job_basic_polling_async.py under samples/agents/optimization/.sample_endpoint_evaluator_with_api_key.py and sample_endpoint_evaluator_with_entra_id.py under samples/evaluations/.sample_agent_user_identity_isolation.py under samples/hosted_agents/, demonstrating per-user response-chain isolation with delegated end-user identities sent in the x-ms-user-identity header.sample_routines_with_github_issue_trigger.py and sample_routines_with_teams_message_trigger.py, demonstrating GitHub issue and Microsoft Teams channel-message triggers for routines backed by a temporary Hosted Agent version.sample_toolbox_with_reminder_preview.py under samples/hosted_agents/, demonstrating a Reminder Preview toolbox tool wired through a Foundry Toolbox MCP endpoint.samples/hosted_agents/assets/toolbox-agent/main.py to use FoundryToolbox and as_skills_provider() for toolbox MCP skill discovery and wiring, replacing the earlier manual MCP session, auth, and HTTP client setup.sample_toolboxes_with_search_preview.py and sample_toolboxes_with_search_preview_async.py to sample_toolboxes_with_search.py and sample_toolboxes_with_search_async.py.sample_create_hosted_agent.py and sample_create_hosted_agent_async.py to sample_create_hosted_agent_from_image.py and sample_create_hosted_agent_from_image_async.py.sample_routines_with_dispatch.py, sample_routines_with_schedule_trigger.py, and sample_routines_with_timer_trigger.py from samples/routines/ to samples/hosted_agents/.sample_agent_endpoint.py and sample_agent_endpoint_async.py.samples/routines/sample_routines_crud.py.samples/agents/tools/sample_agent_toolbox_skill.py because skill-in-toolbox is not yet supported in Prompt Agents.All breaking changes are associated with beta features, or beta features that are being promoted to stable.
allow_preview=True on the AIProjectClient constructor to create a Hosted Agent..beta.agents subclient to the .agents subclient..agents.create_version_from_code and .agents.download_code methods. They have moved from the .beta.agents subclient to the .agents subclient..beta.toolboxes subclient to the .toolboxes subclient..agents.enable and .agents.disable.ReminderPreviewToolboxTool.draft added to method .agents.create_version.draft added to class AgentVersionDetails.include_drafts added to method .agents.list_versions.defer_loading added to a few Agent tool classes.supported_evaluation_levels added to class EvaluatorVersion.BotServiceTenantAuthorizationScheme added (derived from AgentEndpointAuthorizationScheme).EndpointBasedEvaluatorDefinition added (derived from EvaluatorDefinition).All breaking changes are associated with beta features, or beta features that are being promoted to stable.
create_version now defines tools of type List[ToolboxTool] instead of List[Tool]. A new set of Toolbox tools classes,
all derived from ToolboxTool, have been defined.create_version_from_code has been simplified. The same information is passed in, but in a modified way. Also, the code type has changed from FileType to IO[bytes], and the code_zip_sha256 was made optional (it will be calculated by the method if not provided by the caller)..beta.agents.*optimization* were re-written to better align with Foundry job guidelines and platform standards. The old version accumulated unused candidate sub-resources, internal-detail properties, and custom operation patterns inconsistent with the Foundry platform. The new version removes redundant models and operations, adopts shared Foundry job patterns (JobLike<>, standard job verbs), and introduces typed discriminated unions for dataset inputs and evaluator references.agent_session_id on Session Files methods was renamed to session_id..beta.agents.list_optimization_candidates now returns ItemPaged[OptimizationCandidate] instead of AgentsPagedResultOptimizationCandidate. The after parameter has been removed (use continuation-token-based paging instead)..agents.patch_agent_details was renamed to .agents.update_details.default_ttl_seconds on class MemoryStoreDefaultOptions has changed from type int to type datetime.timedelta.description, name and tool_configs have been removed from preview tools (classes derived from class Tool, with name ending in PreviewTool).description, name and tool_configs are now documented as deprecated in stable Agent tools, to be removed in a future version (classes derived from class Tool with names not ending with PreviewTool).protocols on class AgentEndpointConfig was renamed to protocol_configuration.tools removed from HostedAgentDefinition.system_data removed from ModelVersion.AgentProtocol class was removed. The protocol property in class ProtocolVersionRecord is now of type Union[str, AgentEndpointProtocol].samples/agents/optimization/:
sample_optimization_job_basic.py demonstrating how to create an optimization job, poll it to completion, and read the results.sample_optimization_job_cancel.py demonstrating how to create and immediately cancel an optimization job.sample_optimization_job_list_get_delete.py demonstrating how to list optimization jobs with filters, get a job by ID, and delete a job.sample_routines_crud.py to demonstrate routines CRUD operations.sample_routines_with_timer_trigger.py to demonstrate triggering a routine with a timer.sample_routines_with_schedule_trigger.py to demonstrate triggering a routine on a recurring Cron schedule via ScheduleRoutineTrigger.sample_routines_with_dispatch.py to demonstrate manually firing a routine on demand via routines.dispatch(...) using a CustomRoutineTrigger.sample_toolbox_with_skill.py under samples/hosted_agents/, demonstrating a code-based Hosted Agent that uses Toolbox MCP skills.sample_dataset_generation_job_traces_for_evaluation.py and sample_dataset_generation_job_traces_for_finetuning.py to create a temporary agent, seed conversations, retry the data generation job over the trace window, and clean up all created resources.sample_rubric_evaluator_generation_basic.py, sample_rubric_evaluator_generation_iterate.py, sample_rubric_evaluator_generation_lifecycle.py, sample_rubric_evaluator_generation_all_sources.py) to use the typed EvaluatorGenerationJob / EvaluatorGenerationInputs / *EvaluatorGenerationJobSource models. The job inputs are now nested under inputs per the service contract, and the traces source uses datetime values for start_time / end_time.sample_create_hosted_agent_from_code.py, sample_create_hosted_agent_from_code_async.py) to target runtime python_3_14, since python_3_12 is no longer supported.samples/hosted_agents/assets/echo-agent/main.py, echo-agent-prebuilt.zip) to use @app.response_handler, resolving a response-handling issue. The remote-build code-upload sample now builds the echo-agent zip from samples/hosted_agents/assets/echo-agent/ at runtime instead of relying on a checked-in echo-agent.zip, so users can update the agent code and rerun the sample with their changes.sample_skills_upload_and_download.py, sample_skills_upload_and_download_async.py) to build the team-status-update.zip package from samples/skills/assets/team-status-update/ at runtime instead of relying on a checked-in zip archive, so users can update the skill content and rerun the sample with their changes.sample_scheduled_evaluations.py, sample_scheduled_agent_traces_evaluation_smart_filter.py) to import ResourceManagementClient from azure.mgmt.resource.resources.sample_skill_in_toolbox.py (from samples/hosted_agents/) to samples/agents/tools/sample_agent_toolbox_skill.py.samples/hosted_agents/ to samples/skills/:
sample_skills_crud.py.sample_skills_upload_and_download.py.samples/hosted_agents/ to samples/toolboxes/sample_toolboxes_crud.py.Breaking changes in beta methods:
ExternalAgentDefinition class.FabricIQPreviewTool.ToolboxSearchPreviewTool..beta.agents for
create_version_from_code, download_code.create_optimization_job, get_optimization_job, list_optimization_jobs, cancel_optimization_job, list_optimization_candidates.list_optimization_candidates, get_optimization_candidate, get_optimization_candidate_config, get_optimization_candidate_results, get_candidate_file, promote_candidate.stop_session to stop a running agent session..beta.datasets sub-client with data generation job operations: create_generation_job, get_generation_job, list_generation_jobs, cancel_generation_job, delete_generation_job..beta.models sub-client to handle AI model weights: create, list_versions, list, get, delete, update, pending_create_version, pending_upload, get_credentials..beta.routines sub-client with routine operations: create_or_update, get, enable, disable, list, delete, list_runs, dispatch..beta.evaluators for evaluator generation jobs: create_generation_job, get_generation_job, list_generation_jobs, cancel_generation_job, delete_generation_job..beta.memory_stores to handle individual memory items: create_memory, update_memory, list_memories, get_memory, delete_memory..beta.skills for versioned skill management: create, list_versions, get_version, download_version, delete_version.description and name added to Agent tools classes which did not have them before.tool_configs added to Agent tool classes.content_hash on CodeConfiguration, returning the SHA-256 hex digest of the uploaded code zip.force parameter on agents.delete and agents.delete_version methods.blueprint_reference parameters on agents.create_version method.Breaking changes in beta methods:
isolation_key in methods .beta.agents.create_session() and .beta.agents.delete_session() renamed to user_isolation_key.body in methods .beta.evaluation_taxonomies.create() and .beta.evaluation_taxonomies.update() renamed to taxonomy.body in method .beta.skills.create_from_files() renamed to content..beta.agents.get_session_files renamed to .beta.agents.list_session_files..beta.skills.create signature changed — now takes name and keyword inline_content: SkillInlineContent; returns SkillVersion..beta.skills.create_from_package renamed to .beta.skills.create_from_files..beta.skills.create_from_files signature changed — now takes name and content: CreateSkillVersionFromFilesBody; returns SkillVersion..beta.skills.update signature changed — now only accepts keyword default_version; returns SkillDetails.Breaking changes in beta classes:
isolation_key_source removed from class EntraAuthorizationScheme.AgentEndpoint to AgentEndpointConfig.DeleteSkillResponse to DeleteSkillResult.SessionDirectoryListResponse to SessionDirectoryListResult.SessionFileWriteResponse to SessionFileWriteResult.SkillObject to SkillDetails. Property skill_id renamed to id. Properties has_blob and metadata were removed.Target to EvaluationTarget.TargetConfig to RedTeamTargetConfig.sample_agent_work_iq.py and sample_agent_work_iq_async.py demonstrating use of WorkIQPreviewTool.sample_agent_fabric_iq.py and sample_agent_fabric_iq_async.py demonstrating use of FabricIQPreviewTool.sample_create_hosted_agent.py and sample_create_hosted_agent_async.py, demonstrating hosted agent version creation and retrieval with AIProjectClient.sample_create_hosted_agent_from_code.py and sample_create_hosted_agent_from_code_async.py, demonstrating uploading a code package (zip) as a new hosted agent version.sample_toolboxes_with_search_preview.py and sample_toolboxes_with_search_preview_async.py, demonstrating creating a Toolbox version with ToolboxSearchPreviewTool and invoking MCPTool..beta.models samples under samples/models/:
sample_models_basic.py — synchronous end-to-end registration via the create helper (uses azcopy), followed by get, list_versions, list, get_credentials, update, and delete.sample_models_create_and_poll.py — alternative synchronous registration that hand-rolls the spec's three-step flow (pending_upload → upload via azure-storage-blob → pending_create_version + poll), without taking a dependency on azcopy.sample_models_basic_async.py — asynchronous version of the same three-step flow using azure.ai.projects.aio.AIProjectClient and azure.storage.blob.aio.ContainerClient.sample_model_evaluation_instant_model.py demonstrating model evaluation with an instant model.samples/evaluations/ and samples/evaluations/agentic_evaluators/ (including sample_agent_evaluation, sample_agent_response_evaluation, sample_eval_catalog_prompt_based_evaluators, sample_evaluations_ai_assisted, sample_evaluations_builtin_with_csv, sample_evaluations_builtin_with_dataset_id, sample_evaluations_builtin_with_inline_data, sample_evaluations_builtin_with_inline_data_oai, sample_scheduled_evaluations, sample_coherence, sample_fluency, sample_intent_resolution, sample_relevance, sample_response_completeness, sample_tool_call_accuracy, sample_tool_call_success, sample_tool_input_accuracy, sample_tool_output_utilization, sample_tool_selection, and sample_generic_agentic_evaluator).sample_dataset_generation_job_simpleqna_with_prompt_source.py showing an end-to-end flow that generates a QnA dataset via .beta.datasets.create_generation_job and runs an OpenAI evaluation.get_openai_client() on AIProjectClient now takes an optional input argument agent_name. If provided, the returned OpenAI client will use a base URL of
WorkIQPreviewTool.get_openai_client() on AIProjectClient now takes an optional input argument agent_name. If provided, the returned OpenAI
client will use a base URL of Agent endpoint instead of Foundry Project endpoint. As Agent endpoints are a preview feature, you
need to set allow_preview=True on the AIProjectClient constructor..beta.agents sub-client added, with Session operations (those only work with Hosted Agents)
create_session()delete_session()delete_session_file()download_session_file()get_session()get_session_files()list_sessions()upload_session_file().beta.agents sub-client, a new method patch_agent_details().beta.skills sub-client added, with Skills operations:
create()create_from_package()delete()download()get()list()update()beta.toolboxes sub-client added, with Toolboxes operations:
create_version()delete()delete_version()get()get_version()list()list_versions()update().evals.create() and .evals.runs.create(), when you
get the OpenAI client using get_openai_client() method of AIProjectClient. This includes new TypedDicts
classes to help you author the input to these methods. See new TypedDict classes ModelSamplingConfigParam,
ToolDescriptionParam, AzureAIAgentTargetParam, AzureAIModelTargetParam,
ResponseRetrievalItemGenerationParams, AzureAIResponsesEvalRunDataSource, AzureAIDataSourceConfig,
TargetCompletionEvalRunDataSource, TestingCriterionAzureAIEvaluator, AzureAIBenchmarkPreviewEvalRunDataSource,
EvalCsvFileIdSource, EvalCsvRunDataSource, RedTeamEvalRunDataSource, TracesPreviewEvalRunDataSource..evals.create() and .evals.runs.create() methods.AZURE_AI_PROJECT_ENDPOINT to FOUNDRY_PROJECT_ENDPOINT in all samples.AZURE_AI_MODEL_DEPLOYMENT_NAME to FOUNDRY_MODEL_NAME in all samples.AZURE_AI_MODEL_AGENT_NAME to FOUNDRY_AGENT_NAME in all samples.sample_agent_endpoint.py, sample_agent_endpoint_async.py, sample_sessions_crud.py, sample_sessions_crud_async.py, sample_sessions_files_upload_download.py, sample_sessions_files_upload_download_async.py, sample_skills_crud.py, sample_skills_crud_async.py, sample_skills_upload_and_download.py, sample_skills_upload_and_download_async.py, sample_toolboxes_crud.py, and sample_toolboxes_crud_async.py.sample_agent_structured_inputs_file_upload.py) demonstrating passing an uploaded file ID to an agent at runtime.sample_agent_file_search_structured_inputs.py) demonstrating configuring File Search tool resources via structured inputs.sample_agent_code_interpreter_structured_inputs.py) demonstrating passing an uploaded file ID to Code Interpreter via structured inputs.sample_evaluations_builtin_with_csv.py) demonstrating evaluation with an uploaded CSV dataset.sample_synthetic_data_agent_evaluation.py) and (sample_synthetic_data_model_evaluation.py).sample_chat_completions_basic.py, sample_chat_completions_basic_async.py) demonstrating chat completions calls using AIProjectClient + the OpenAI-compatible client.sample_toolboxes_crud.py, sample_toolboxes_crud_async.py) demonstrating project_client.beta.toolboxes create/get/update/list/delete.sample_memory_basic.py and sample_agent_memory_search.py (and their async equivalent) by removing
options=MemoryStoreDefaultOptions(user_profile_enabled=True, chat_summary_enabled=True) when constructing MemoryStoreDefaultDefinition,
since this is now redundant (it's the service default).Fix custom Memory Stores LRO poller operation to add the missing required "Foundry-Features": "MemoryStores=V1Preview" HTTP request header.
"Foundry-Features": "MemoryStores=V1Preview" HTTP request header.Import it using from openai.types.responses import EasyInputMessageParam. This is not a breaking change, since the caller can still pass in List[dict[…
First stable release of the client library that uses the Generally Available (GA) version "v1" of the Foundry REST APIs.
allow_preview was added
to the constructor of AIProjectClient. Caller must set it to True to opt-in to preview features.
This includes creating an Hosted Agent or Workflow Agent. Methods on the .beta sub-client (for example
.beta.memory_stores.create()) do not require setting allow_preview=True since it's implied by the sub-client name.
When preview features are enabled, the client libraries sends the HTTP request header Foundry-Features
with the appropriate value in all relevant calls to the service.foundry_features was removed from all methods that supported it. Use the new allow_preview
instead on client constructor (see above).TextResponseFormatConfiguration renamed to TextResponseFormat.TextResponseFormatConfigurationResponseFormatText renamed to TextResponseFormatTest.TextResponseFormatConfigurationResponseFormatJsonObject renamed to TextResponseFormatJsonObject.CodeInterpreterContainerAuto was renamed to AutoCodeInterpreterToolParam,
and has a new optional property network_policy of type ContainerNetworkPolicyParam.ImageGenActionEnum was renamed to ImageGenAction.ToolChoiceParamType.WEB_SEARCH_PREVIEW2025_03_11 to ToolChoiceParamType.WEB_SEARCH_PREVIEW_2025_03_11.RankerVersionType.DEFAULT2024_11_15 to RankerVersionType.DEFAULT_2024_11_15..beta.evaluators.list_latest_versions() to .beta.evaluators.list().id on class Insight to insight_id.id on class Schedule to schedule_id.id to insight_id in .beta.insights.get() method.id to schedule_id in .beta.schedules methods.start_time, end_time, trigger_at, trigger_time, created_at, modified_at)
across CronTrigger, RecurrenceTrigger, OneTimeTrigger, ScheduleRun, and EvaluatorVersion classes from str
to datetime.datetime with format="rfc3339".items argument in the methods .beta.memory_stores.begin_update_memories() and .beta.memory_stores.search_memories
was changed from type Optional[List[dict[str, Any]]] to Optional[Union[str, ResponseInputParam]], where ResponseInputParam
is defined in the openai package. This allows passing in, for example, a list of EasyInputMessageParam. Import it using
from openai.types.responses import EasyInputMessageParam. This is not a breaking change, since the caller
can still pass in List[dict[str, Any].This is the first release that uses the Generally Available (GA) version "v1" of the Foundry REST APIs.
This is the first release that uses the Generally Available (GA) version "v1" of the Foundry REST APIs.
openai_client.responses.create()) that uses an Agent reference, now needs to specify
extra_body={"agent_reference": {"name": agent_name, "type": "agent_reference"}} instead of extra_body={"agent": {"name": agent_name, "type": "agent_reference"}}..agents.create(), .agents.create_from_manifest(), .agents.update() and .agents.update_from_manifest() were removed. Use
the remaining methods .agents.create_version() and .agents.create_version_from_manifest() instead.AzureAISearchAgentTool to AzureAISearchTool.AzureFunctionAgentTool to AzureFunctionTool.BingGroundingAgentTool to BingGroundingTool.OpenApiAgentTool to OpenApiTool.A2ATool to A2APreviewTool.BingCustomSearchAgentTool to BingCustomSearchPreviewTool.BrowserAutomationAgentTool to BrowserAutomationPreviewTool.MemorySearchTool to MemorySearchPreviewTool.MicrosoftFabricAgentTool to MicrosoftFabricPreviewTool.SharepointAgentTool to SharepointPreviewTool.PromptAgentDefinitionText to PromptAgentDefinitionTextOptionsEvaluationComparisonRequest to InsightRequestfoundry_features=FoundryFeaturesOptInKeys.WORKFLOW_AGENTS_V1_PREVIEW when calling
.agents.create_version().foundry_features=FoundryFeaturesOptInKeys.HOSTED_AGENTS_V1_PREVIEW when calling
.agents.create_version()..evaluation_rules.create_or_update() with HumanEvaluationPreviewRuleAction, you now
need to set an additional input argument foundry_features=FoundryFeaturesOptInKeys.EVALUATIONS_V1_PREVIEW.project_client.memory_stores.create() has changed to project_client.beta.memory_stores.create().
Similarly for the operation sets: evaluators, insights, evaluation_taxonomies, schedules and red_teams.begin_update_memories() in Memory Stores operation now accept optional items of type List[dict[str, Any]]
instead of List[ItemParam]. Similarly for items in method search_memories(). As a result around 100 classes
that are derived from ItemParam were removed as they are no longer used by the client library.AZURE_EXPERIMENTAL_ENABLE_GENAI_TRACING=trueAzureFunctionTool, WebSearchTool, and WebSearchPreviewToolresponses.create API with agent_reference instead of agentThe package now takes dependency on openai and azure-identity packages. No need to install them separately.
AgentObject to AgentDetailsAgentVersionObject to AgentVersionDetailsMemoryStoreObject to MemoryStoreDetailssample_agent_openapi.py.sample_agent_openapi_with_project_connection.py.sample_agent_sharepoint.py.samples/mcp_client/sample_mcp_tool_async.py.sample_agent_code_interpreter.py, sample_agent_code_interpreter_async.py, sample_agent_image_generation.py, and sample_agent_image_generation_async.py.samples/evaluations/sample_evaluations_score_model_grader_with_image.py.samples/agents/sample_agent_stream_events.py and samples/responses/sample_responses_stream_events.pyTracing: support for workflow agent tracing.
AIProjectClient.get_openai_client() method on the asynchronous AIProjectClient is no longer an "async" method.samples\memories.finetuning samples for operations create, retrieve, list, list_events, list_checkpoints, cancel, pause and resume. Also, these samples includes various finetuning techniques like Supervised (SFT), Reinforcement (RFT) and Direct performance optimization (DPO).await while calling get_openai_client() for samples using asynchronous clients.The client library now uses version 2025-11-15-preview of the Microsoft Foundry data plane REST APIs.
2025-11-15-preview of the Microsoft Foundry data plane REST APIs.Responses protocol) were added to the AIProjectClient.
This package no longer depends on azure-ai-agents package. See samples\agents folder..evaluation_rules, .evaluation_taxonomies, .evaluators, .insights, and .schedules..memory_store..get_openai_client() method was updated to return an authenticated
OpenAI client from the openai package, configure to run Responses operations on your Foundry Project endpoint.samples\agents folder.samples\evaluations folder.files samples for operations create, delete, list, retrieve and content. See samples\files folder.Fix getting secret keys for connections of type "Custom Keys" (GitHub issue 52355)
File setup.py was updated to indicate the dependency azure-ai-agents>=1.2.0b3 instead of azure-ai-agents>=1.0.0. This means that in a clean environmen
setup.py was updated to indicate the dependency azure-ai-agents>=1.2.0b3
instead of azure-ai-agents>=1.0.0. This means that in a clean environment, installing
via pip install --pre azure-ai-projects will install latest beta version of azure-ai-agents
(which has features in preview) instead of latest stable version (which does
not include preview features).Fix regression in Red-Team operations, in the definition of the class AzureOpenAIModelConfiguration.
Fix regression in Red-Team operations, in the definition of the class AzureOpenAIModelConfiguration.
First beta version following the 1.0.0 stable release. It brings back the Evaluation and Red-Team operations which are still in preview.
First beta version following the 1.0.0 stable release. It brings back the Evaluation and Red-Team operations which are still in preview.
First stable version of the client library. The client library now uses version v1 of the AI Foundry data plane REST APIs.
First stable version of the client library. The client library now uses version v1 of the
AI Foundry data plane REST APIs.
.evaluations).red_teams)PromptTemplate.enable_telemetry()Sku was renamed ModelDeploymentSkuSasCredential was renamed BlobReferenceSasCredentialAssetCredentialResponse was renamed DatasetCredential.inference.get_azure_openai_client() was renamed .get_openai_client(). The .inference property was removed.
The method is documented as returning an object of type OpenAI, but it still returns an object of the derived type AzureOpenAI.
The function implementation has not changed..telemetry.get_connection_string() was renamed .telemetry.get_application_insights_connection_string()sample_datasets_download.py to show how you can download all files referenced by a certain Dataset (following a question in this GitHub issue)responses operation using an authenticated Azure OpenAI client created
using get_openai_client().enable_telemetry() were updated to remove this call,
and instead add the necessary tracing configuration calls to the sample.These 3 methods on AIProjectClient were removed: .inference.get_chat_completions_client(), .inference.get_embeddings_client() and .inference.get_image
AIProjectClient were removed: .inference.get_chat_completions_client(),
.inference.get_embeddings_client() and .inference.get_image_embeddings_client().
For guidance on obtaining an authenticated azure-ai-inference client for your AI Foundry Project,
refer to the updated samples in the samples\inference directory. For example,
sample_chat_completions_with_azure_ai_inference_client.py. Alternatively, use the .inference.get_azure_openai_client() method to perform chat completions with an Azure OpenAI client..indexes.create_or_update() argument body was renamed index..datasets.create_or_update() argument body was renamed dataset_version..datasets.pending_upload() argument body was renamed pending_upload_request.enable_telemetry() to correctly instrument azure-ai-agents.azure-ai-agents version 1.0.0 or above,
now that we have a stable release of the Agents package.There have been significant updates with the release of version 1.0.0b11, including breaking changes. Please see new samples and package README.md fil…
There have been significant updates with the release of version 1.0.0b11, including breaking changes. Please see new samples and package README.md file.
.deployments methods to enumerate AI models deployed to your AI Foundry Project..datasets methods to upload documents and reference them. To be used with Evaluations..indexes methods to handle your Search Indexes.AIProjectClient. It has the form
https://<your-ai-services-account-name>.services.ai.azure.com/api/projects/<your-project-name>. Find it in your AI Foundry Project
Overview page. The factory method from_connection_string was removed. Support for project connection string and hub-based projects has been discontinued. We recommend creating a new Azure AI Foundry resource utilizing project endpoint. If this is not possible, please pin the version of or pin the version of azure-ai-projects to 1.0.0b10 or earlier.azure-ai-agents. Continue using the ".agents" operations on the
AIProjectsClient to create, run and delete agents, as before. However there have been some breaking changes in these operations.
See Agents package document and samples for more details..connections methods, including the response object (now simply called Connection).inference.get_azure_openai_client() now supports returning an authenticated AzureOpenAI client to be used with
AI models deployed to the Project's AI Services. This is in addition to the existing option to get an AzureOpenAI client for one of the connected Azure OpenAI services.PromptTemplate from azure.ai.projects instead of azure.ai.projects.prompts..to_evaluator_model_config on ConnectionProperties is no longer required and does not have an equivalent method on Connection. When constructing the EvaluatorConfiguration class, the init_params element now requires deployment_name instead of model_config.upload_file on AIProjectClient had been removed, use datasets.upload_file instead.EvaluatorIds and no longer require azure-ai-evaluation package to be installed.scope on AIProjectClient is removed, use AI Foundry Project endpoint instead.id on Evaluation is replaced with name.azure-ai-projects with azure-ai-agents package.Added ConnectedAgentTool class for better connected Agent support.
ConnectedAgentTool class for better connected Agent support.AgentEventHandler based event handler.max_retry argument to the Agent's enable_auto_function_calls function to cancel the run if the maximum number of retries for auto function calls is reached.Utilities to load prompt template strings and Prompty file content
project_client.agents.enable_auto_function_calls(toolset=toolset) to all samples that has toolcalls executed by azure-ai-project SDKRedesigned automatic function calls because agents retrieved by update_agent and get_agent do not support them. With the new design, the toolset parameter in create_agent no longer executes toolcalls automatically during create_and_process_run or create_stream. To retain this behavior, call enable_auto_function_calls without additional changes.
New parameters added for Azure AI Search tool, with corresponding sample update.
agent_id was not included in the response. This caused the SDK not to make function calls when the thread run status is requires_action.Add support for parsing URL citations in Agent text messages. See new classes MessageTextUrlCitationAnnotation and MessageDeltaTextUrlCitationAnnotati
MessageTextUrlCitationAnnotation and MessageDeltaTextUrlCitationAnnotation.ConnectionType.API_KEY to support enumeration of generic connections that uses API Key authentication.sample_agents_bing_grounding.py with printout of URL citation.sample_agents_stream_eventhandler_with_bing_grounding.py and sample_agents_stream_iteration_with_bing_grounding.py with printout of URL citation.RunStepDeltaFileSearchToolCall returned during Agent streaming (see GitHub issue 48333).assistant_id to agent_id in all Agent methods to align with the "Agent" terminology. Similarly, rename all assistant_id properties on classes.Added trace_function decorator for conveniently tracing function calls in Agents using OpenTelemetry. Please see the README.md for updated documentati
trace_function decorator for conveniently tracing function calls in Agents using OpenTelemetry. Please see the README.md for updated documentation.samples/agents, folder to make Azure Logic App integration with Agents easier.warning to debug to prevent unnecessary log entries in agent application runs.Add method .inference.get_image_embeddings_client on AIProjectClient to get an authenticated ImageEmbeddingsClient (from the package azure-ai-inferenc
.inference.get_image_embeddings_client on AIProjectClient to get an authenticated
ImageEmbeddingsClient (from the package azure-ai-inference). You need to have azure-ai-inference package
version 1.0.0b7 or above installed for this method to work.on_thread_run (instead of the wrong function on_unhandled_event).to_evaluator_model_config method of class ConnectionProperties. See new input
argument include_credentials.submit_tool_outputs_to_run returns None instead of ThreadRun (see GitHub issue 39028).Fix for Agent streaming issue (see GitHub issue 38918)
send_email_async is not called (see GitHub issue 38898)connection_name to methods .inference.get_chat_completions_client,
.inference.get_embeddings_client and .inference.get_azure_openai_client.Add support for Structured Outputs for Agents.
parallel_tool_calls parameter to allow parallel tool execution for Agents.BingGroundingTool for Agents to use against a Bing API Key connection.AzureAiSearchTool for Agents to use against an Azure AI Search resource.OpenApiTool for Agents, which creates and executes a REST function defined by an OpenAPI spec.OpenAIPageableListOfThreadMessage, MessageDeltaChunk, and ThreadMessage..agents.get_messages was removed. Please use .agents.list_messages instead.Fix a bug in the .inference operations when Entra ID authentication is used by the default connection.
.inference operations when Entra ID authentication is used by the default connection.### Features Added First beta version
First beta version
Your coding agent can read these notes before it upgrades. Set up the MCP server →