diff --git a/LocalAgent.ApiService/Program.cs b/LocalAgent.ApiService/Program.cs index e46b786..f16846f 100644 --- a/LocalAgent.ApiService/Program.cs +++ b/LocalAgent.ApiService/Program.cs @@ -26,6 +26,28 @@ .UseFunctionInvocation() .UseOpenTelemetry(configure: t => t.EnableSensitiveData = true); +// Configure extended timeouts for local LLM operations +// The HttpClient naming convention is "{connectionName}_httpClient" +builder.Services.AddHttpClient("llama32_httpClient") + .ConfigurePrimaryHttpMessageHandler(() => new SocketsHttpHandler + { + // Configure connection pooling to keep connections alive longer for LLM requests + PooledConnectionLifetime = TimeSpan.FromMinutes(10), + PooledConnectionIdleTimeout = TimeSpan.FromMinutes(5) + }) + .ConfigureHttpClient(client => + { + // Set to infinite to let the resilience pipeline handle timeouts + client.Timeout = Timeout.InfiniteTimeSpan; + }) + .AddStandardResilienceHandler(options => + { + // Increase total request timeout to 5 minutes for local LLM inference + options.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(5); + // Increase attempt timeout to 2 minutes, leaving room for retry logic + options.AttemptTimeout.Timeout = TimeSpan.FromMinutes(2); + }); + builder.Services.AddSingleton(sp => { var mcpServerEndpoint = builder.Configuration.GetConnectionString("McpServer")!;