Allow an HttpClientFactory to be assigned to OpenAIAPI by babrekel · Pull Request #103 · OkGoDoIt/OpenAI-API-dotnet

This change aims to enable consumers to use IHttpClientFactory and apply resiliency best practices described in this document without a breaking change. Consumers can now implement non-functional requirements such as:

  • Configuring retry policies to the outgoing HTTP requests.
  • Logging and telemetry instrumentation to outgoing HTTP calls.
  • Mocking the HTTP responses for integration testing scenarios

Implementation wise, I opted not to modify the constructor as it takes an optional parameter. Adding another optional parameter is a breaking change, and mixing optional parameters with overloaded constructors is not generally recommended. Effectively seeking to minimize change.

Package wise, the dependency on Microsoft.Extensions.Http is no longer private.

I used Moq in the unit tests to mock an HTTP Client and ensure the right client is used in the right place.

Related issues that could be addressed with this change (or at least allow a workaround):
#102
#100
#91
#41
#28