Skip to content

Commit e2c700b

Browse files
committed
Move Ollama-specific HTTP client resiliency configuration out of Extensions.cs in ServiceDefaults
1 parent fe1cc44 commit e2c700b

File tree

2 files changed

+32
-13
lines changed
  • src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData

2 files changed

+32
-13
lines changed

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.ServiceDefaults/Extensions.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,21 +29,8 @@ public static TBuilder AddServiceDefaults<TBuilder>(this TBuilder builder) where
2929
http.RemoveAllResilienceHandlers();
3030
#pragma warning restore EXTEXP0001
3131

32-
#if (IsOllama)
33-
// Turn on resilience by default
34-
http.AddStandardResilienceHandler(config =>
35-
{
36-
// Extend the HTTP Client timeout for Ollama
37-
config.AttemptTimeout.Timeout = TimeSpan.FromMinutes(3);
38-
39-
// Must be at least double the AttemptTimeout to pass options validation
40-
config.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
41-
config.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(10);
42-
});
43-
#else
4432
// Turn on resilience by default
4533
http.AddStandardResilienceHandler();
46-
#endif
4734

4835
// Turn on service discovery by default
4936
http.AddServiceDiscovery();

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/Program.Aspire.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,38 @@
5050
#endif
5151
builder.Services.AddScoped<DataIngestor>();
5252
builder.Services.AddSingleton<SemanticSearch>();
53+
#if (IsOllama)
54+
// Get the IHttpClientBuilder for chat_httpClient
55+
var chatClientBuilder = builder.Services.AddHttpClient("chat_httpClient");
56+
#pragma warning disable EXTEXP0001 // RemoveAllResilienceHandlers is experimental
57+
chatClientBuilder.RemoveAllResilienceHandlers();
58+
#pragma warning restore EXTEXP0001
59+
// Override resilience for this client
60+
chatClientBuilder.AddStandardResilienceHandler(config =>
61+
{
62+
// Extend the HTTP Client timeout for Ollama
63+
config.AttemptTimeout.Timeout = TimeSpan.FromMinutes(3);
64+
// Must be at least double the AttemptTimeout to pass options validation
65+
config.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
66+
config.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(10);
67+
});
68+
chatClientBuilder.AddServiceDiscovery();
69+
// Get the IHttpClientBuilder for embeddings_httpClient
70+
var embeddingsClientBuilder = builder.Services.AddHttpClient("embeddings_httpClient");
71+
#pragma warning disable EXTEXP0001 // RemoveAllResilienceHandlers is experimental
72+
embeddingsClientBuilder.RemoveAllResilienceHandlers();
73+
#pragma warning restore EXTEXP0001
74+
// Override resilience for this client
75+
embeddingsClientBuilder.AddStandardResilienceHandler(config =>
76+
{
77+
// Extend the HTTP Client timeout for Ollama
78+
config.AttemptTimeout.Timeout = TimeSpan.FromMinutes(3);
79+
// Must be at least double the AttemptTimeout to pass options validation
80+
config.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
81+
config.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(10);
82+
});
83+
embeddingsClientBuilder.AddServiceDiscovery();
84+
#endif
5385

5486
var app = builder.Build();
5587

0 commit comments

Comments
 (0)