2.0.0-beta.3 (2026-03-19)
Features Added
- Added
readSpecFromFile(Path)static convenience method toOpenApiFunctionDefinitionfor loading OpenAPI specification JSON files as theMap<String, BinaryData>required by the constructor, eliminating the need for manualJsonReader/BinaryDatawiring. - Added new
OpenApiSync/OpenApiAsyncsamples demonstrating end-to-end OpenAPI tool integration: loading a spec file, creating an agent with anOpenApiTool, and invoking an external API via conversation. - Added new tool samples for parity with the Python SDK:
AzureFunctionSync/AzureFunctionAsync,BingCustomSearchSync/BingCustomSearchAsync,MemorySearchSync/MemorySearchAsync,McpWithConnectionSync/McpWithConnectionAsync, andOpenApiWithConnectionSync/OpenApiWithConnectionAsync. - Added type-safe accessors on
CodeInterpreterToolfor thecontainerproperty:setContainer(String),setContainer(AutoCodeInterpreterToolParam),getContainerAsString(), andgetContainerAsAutoCodeInterpreterToolParam(). - Added type-safe accessors on
McpToolfor theallowedToolsproperty:setAllowedTools(List<String>),setAllowedTools(McpToolFilter),getAllowedToolsAsStringList(), andgetAllowedToolsAsMcpToolFilter(). - Added type-safe accessors on
McpToolfor therequireApprovalproperty:setRequireApproval(String),setRequireApproval(McpToolRequireApproval),getRequireApprovalAsString(), andgetRequireApprovalAsMcpToolRequireApproval(). - Added
setComparisonFilter(ComparisonFilter)andsetCompoundFilter(CompoundFilter)convenience methods onFileSearchTool, accepting the openai-java filter types directly. - Added
listAgentConversationsoperation toAgentsClientandAgentsAsyncClientto list conversations attached to a specific agent filtering byagentNameandagentId. - Added streaming response methods to
ResponsesClientandResponsesAsyncClient:createStreamingWithAgentandcreateStreamingWithAgentConversationonResponsesClientreturnIterableStream<ResponseStreamEvent>for synchronous streaming.createStreamingWithAgentandcreateStreamingWithAgentConversationonResponsesAsyncClientreturnFlux<ResponseStreamEvent>for asynchronous streaming.
- Added
StreamingUtilsimplementation helper that bridges OpenAIStreamResponsetoIterableStreamandAsyncStreamResponsetoFlux. - Added streaming samples:
SimpleStreamingSync/SimpleStreamingAsync,FunctionCallStreamingSync/FunctionCallStreamingAsync, andCodeInterpreterStreamingSync/CodeInterpreterStreamingAsync. - Added structured input convenience methods to
ResponsesClientandResponsesAsyncClientfor creating responses with agent-defined template parameters:createWithAgentStructuredInputaccepts aMap<String, Object>of runtime values that are substituted into the agent's prompt template.createStreamingWithAgentStructuredInputprovides the streaming equivalent, returningIterableStream<ResponseStreamEvent>(sync) orFlux<ResponseStreamEvent>(async).
- Added
CreateResponseWithStructuredInputsample demonstrating how to define structured inputs on an agent and pass runtime values when creating a response.
Breaking Changes
- Removed deprecated convenience methods from
ResponsesClientandResponsesAsyncClient:createWithAgent,createWithAgentConversation,createStreamingWithAgent,createStreamingWithAgentConversation,createWithAgentStructuredInput, andcreateStreamingWithAgentStructuredInput. UsecreateAzureResponseandcreateStreamingAzureResponsewithAzureCreateResponseOptionsinstead. deleteAgent(String)onAgentsClientnow returnsvoidinstead ofDeleteAgentResponse. The corresponding async method onAgentsAsyncClientnow returnsMono<Void>instead ofMono<DeleteAgentResponse>. The public protocol methoddeleteAgentWithResponsehas been removed; use the convenience method instead.deleteAgentVersion(String, String)onAgentsClientnow returnsvoidinstead ofDeleteAgentVersionResponse. The corresponding async method onAgentsAsyncClientnow returnsMono<Void>instead ofMono<DeleteAgentVersionResponse>.DeleteAgentResponseremoved fromcom.azure.ai.agents.modelsand is no longer part of the public API.DeleteAgentVersionResponseremoved fromcom.azure.ai.agents.modelsand is no longer part of the public API.AgentDefinitionOptInKeysandFoundryFeaturesOptInKeyschanged fromExpandableStringEnum-based classes to standard Javaenumtypes. Thevalues()method now returns an array instead of aCollection, and the deprecated no-arg constructor is removed.- The
timezoneproperty inApproximateLocationandWebSearchApproximateLocationchanged fromStringtojava.util.TimeZone. - The
containerproperty onCodeInterpreterToolno longer exposesBinaryDatagetter/setter publicly. Use the new typed accessors instead (e.g.,setContainer("container-id")orsetContainer(new AutoCodeInterpreterToolParam())). - The
allowedToolsandrequireApprovalproperties onMcpToolno longer exposeBinaryDatagetter/setter publicly. Use the new typed accessors instead (e.g.,setRequireApproval("always")orsetAllowedTools(List.of("tool_a", "tool_b"))). - The
filtersproperty onFileSearchToolno longer exposesBinaryDatagetter/setter publicly. - The
reasoningproperty onPromptAgentDefinitionnow usescom.openai.models.Reasoningfrom the openai-java library instead of the previously generatedReasoningclass. UseReasoning.builder().effort(ReasoningEffort.HIGH).build()to construct values. - Removed
ComparisonFilter,ComparisonFilterType,CompoundFilter,CompoundFilterType,Reasoning,ReasoningEffort,ReasoningSummary, andReasoningGenerateSummaryfromcom.azure.ai.agents.models. Use the equivalent types fromcom.openai.modelsinstead (e.g.,com.openai.models.ComparisonFilter,com.openai.models.Reasoning).
Other Changes
- Updated all samples and tests to use the new
createAzureResponseandcreateStreamingAzureResponseAPI. - Added
ToolsTestsandToolsAsyncTestswith recorded end-to-end test coverage for OpenAPI, Code Interpreter, Function Call, Web Search, MCP, and File Search tools. - Added
StreamingTestsandStreamingAsyncTestswith recorded test coverage for streaming responses (simple prompt, function calling, and Code Interpreter scenarios). - Added structured input test coverage to
AgentsTests,AgentsAsyncTests,StreamingTests, andStreamingAsyncTests.