When I enable the web search tool in my AI agent and send a message, the request processing immediately fails with an exception indicating that the web_search_options parameter is not recognized.
services.AddAIAgent(name: agentName, instructions: agentInstructions)
.WithAITool(new HostedWebSearchTool()) // enabling web search tool
.WithInMemorySessionStore(false)
fail: Microsoft.AspNetCore.Diagnostics.DeveloperExceptionPageMiddleware[1]
An unhandled exception has occurred while executing the request.
System.ClientModel.ClientResultException: HTTP 400 (invalid_request_error: unknown_parameter)
Parameter: web_search_options
Unknown parameter: 'web_search_options'.
at OpenAI.ClientPipelineExtensions.ProcessMessageAsync(ClientPipeline pipeline, PipelineMessage message, RequestOptions options)
at OpenAI.Chat.ChatClient.CompleteChatAsync(BinaryContent content, RequestOptions options)
at OpenAI.Chat.ChatClient.<>c__DisplayClass20_0.<<CompleteChatStreamingAsync>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at OpenAI.AsyncSseUpdateCollection`1.GetRawPagesAsync()+MoveNext()
at OpenAI.AsyncSseUpdateCollection`1.GetRawPagesAsync()+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at System.ClientModel.AsyncCollectionResult`1.GetAsyncEnumerator(CancellationToken cancellationToken)+MoveNext()
at System.ClientModel.AsyncCollectionResult`1.GetAsyncEnumerator(CancellationToken cancellationToken)+MoveNext()
at System.ClientModel.AsyncCollectionResult`1.GetAsyncEnumerator(CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Extensions.AI.OpenAIChatClient.FromOpenAIStreamingChatCompletionAsync(IAsyncEnumerable`1 updates, ChatCompletionOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.OpenAIChatClient.FromOpenAIStreamingChatCompletionAsync(IAsyncEnumerable`1 updates, ChatCompletionOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.OpenAIChatClient.FromOpenAIStreamingChatCompletionAsync(IAsyncEnumerable`1 updates, ChatCompletionOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Extensions.AI.ConfigureOptionsChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.ConfigureOptionsChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.ConfigureOptionsChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Extensions.AI.FunctionInvokingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.FunctionInvokingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Extensions.AI.FunctionInvokingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.ApprovalNotRequiredFunctionBypassingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ApprovalNotRequiredFunctionBypassingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ApprovalNotRequiredFunctionBypassingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.ApprovalResponseBindingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ApprovalResponseBindingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ApprovalResponseBindingChatClient.GetStreamingResponseAsync(IEnumerable`1 messages, ChatOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.ChatClientAgent.RunCoreStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ChatClientAgent.RunCoreStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ChatClientAgent.RunCoreStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.ChatClientAgent.RunCoreStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.AIAgent.RunStreamingAsync(IEnumerable`1 messages, AgentSession session, AgentRunOptions options, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.AgentResponseExtensions.AsChatResponseUpdatesAsync(IAsyncEnumerable`1 responseUpdates)+MoveNext()
at Microsoft.Agents.AI.AgentResponseExtensions.AsChatResponseUpdatesAsync(IAsyncEnumerable`1 responseUpdates)+MoveNext()
at Microsoft.Agents.AI.AgentResponseExtensions.AsChatResponseUpdatesAsync(IAsyncEnumerable`1 responseUpdates)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at AGUI.Server.ChatResponseUpdateAGUIExtensions.CoreAsync(IAsyncEnumerable`1 updates, ChatRequestContext context, CancellationToken cancellationToken)+MoveNext()
at AGUI.Server.ChatResponseUpdateAGUIExtensions.CoreAsync(IAsyncEnumerable`1 updates, ChatRequestContext context, CancellationToken cancellationToken)+MoveNext()
at AGUI.Server.ChatResponseUpdateAGUIExtensions.CoreAsync(IAsyncEnumerable`1 updates, ChatRequestContext context, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.AGUIEndpointRouteBuilderExtensions.SaveSessionAfterStreamingAsync(IAsyncEnumerable`1 events, AIHostAgent hostAgent, String threadId, AgentSession session, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.AGUIEndpointRouteBuilderExtensions.SaveSessionAfterStreamingAsync(IAsyncEnumerable`1 events, AIHostAgent hostAgent, String threadId, AgentSession session, CancellationToken cancellationToken)+MoveNext()
at Microsoft.Agents.AI.Hosting.AGUI.AspNetCore.AGUIEndpointRouteBuilderExtensions.SaveSessionAfterStreamingAsync(IAsyncEnumerable`1 events, AIHostAgent hostAgent, String threadId, AgentSession session, CancellationToken cancellationToken)+System.Threading.Tasks.Sources.IValueTaskSource<System.Boolean>.GetResult()
at Microsoft.AspNetCore.Http.HttpResults.ServerSentEventsResult`1.WrapEvents(IAsyncEnumerable`1 events, String eventType)+MoveNext()
at Microsoft.AspNetCore.Http.HttpResults.ServerSentEventsResult`1.WrapEvents(IAsyncEnumerable`1 events, String eventType)+MoveNext()
at System.Net.ServerSentEvents.SseFormatter.WriteAsyncCore[T](IAsyncEnumerable`1 source, Stream destination, Action`2 itemFormatter, CancellationToken cancellationToken)
at System.Net.ServerSentEvents.SseFormatter.WriteAsyncCore[T](IAsyncEnumerable`1 source, Stream destination, Action`2 itemFormatter, CancellationToken cancellationToken)
at Microsoft.AspNetCore.Http.HttpResults.ServerSentEventsResult`1.ExecuteAsync(HttpContext httpContext)
at Microsoft.AspNetCore.Http.Generated.<GeneratedRouteBuilderExtensions_g>FL87DEE35F409427C0994BF3A8D11207C7ZAB7E4167B350548AEB07B262E3F58E__GeneratedRouteBuilderExtensionsCore.<>c__DisplayClass2_0.<<MapPost0>g__RequestHandler|5>d.MoveNext()
Microsoft.Agents.AI.Hosting 1.17.0-preview.260804.1, Microsoft.Agents.AI.Hosting.AGUI.AspNetCore 1.17.0-preview.260804.1, Microsoft.Agents.AI.Hosting.OpenAI 1.17.0-alpha.260804.1
Description
When I enable the web search tool in my AI agent and send a message, the request processing immediately fails with an exception indicating that the web_search_options parameter is not recognized.
Code Sample
services.AddAIAgent(name: agentName, instructions: agentInstructions) .WithAITool(new HostedWebSearchTool()) // enabling web search tool .WithInMemorySessionStore(false)Error Messages / Stack Traces
Package Versions
Microsoft.Agents.AI.Hosting 1.17.0-preview.260804.1, Microsoft.Agents.AI.Hosting.AGUI.AspNetCore 1.17.0-preview.260804.1, Microsoft.Agents.AI.Hosting.OpenAI 1.17.0-alpha.260804.1
.NET Version
.NET 10
Additional Context
No response