5 implementations of IImageGenerator
Microsoft.Extensions.AI.Abstractions (1)
Image\DelegatingImageGenerator.cs (1)
20public class DelegatingImageGenerator : IImageGenerator
Microsoft.Extensions.AI.Abstractions.Tests (1)
TestImageGenerator.cs (1)
10public sealed class TestImageGenerator : IImageGenerator
Microsoft.Extensions.AI.Integration.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestImageGenerator.cs (1)
10public sealed class TestImageGenerator : IImageGenerator
Microsoft.Extensions.AI.OpenAI (1)
OpenAIImageGenerator.cs (1)
24internal sealed class OpenAIImageGenerator : IImageGenerator
Microsoft.Extensions.AI.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestImageGenerator.cs (1)
10public sealed class TestImageGenerator : IImageGenerator
135 references to IImageGenerator
Microsoft.Extensions.AI (41)
ChatCompletion\OpenTelemetryImageGenerator.cs (2)
40/// <param name="innerGenerator">The underlying <see cref="IImageGenerator"/>.</param> 44public OpenTelemetryImageGenerator(IImageGenerator innerGenerator, ILogger? logger = null, string? sourceName = null)
Image\ConfigureOptionsImageGenerator.cs (1)
31public ConfigureOptionsImageGenerator(IImageGenerator innerGenerator, Action<ImageGenerationOptions> configure)
Image\ImageGeneratorBuilder.cs (18)
11/// <summary>A builder for creating pipelines of <see cref="IImageGenerator"/>.</summary> 15private readonly Func<IServiceProvider, IImageGenerator> _innerGeneratorFactory; 18private List<Func<IImageGenerator, IServiceProvider, IImageGenerator>>? _generatorFactories; 21/// <param name="innerGenerator">The inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 23public ImageGeneratorBuilder(IImageGenerator innerGenerator) 30/// <param name="innerGeneratorFactory">A callback that produces the inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 32public ImageGeneratorBuilder(Func<IServiceProvider, IImageGenerator> innerGeneratorFactory) 37/// <summary>Builds an <see cref="IImageGenerator"/> that represents the entire pipeline. Calls to this instance will pass through each of the pipeline stages in turn.</summary> 39/// The <see cref="IServiceProvider"/> that should provide services to the <see cref="IImageGenerator"/> instances. 42/// <returns>An instance of <see cref="IImageGenerator"/> that represents the entire pipeline.</returns> 43public IImageGenerator Build(IServiceProvider? services = null) 46var imageGenerator = _innerGeneratorFactory(services); 56$"Ensure that the callbacks passed to {nameof(Use)} return non-null {nameof(IImageGenerator)} instances."); 67public ImageGeneratorBuilder Use(Func<IImageGenerator, IImageGenerator> generatorFactory) 78public ImageGeneratorBuilder Use(Func<IImageGenerator, IServiceProvider, IImageGenerator> generatorFactory)
Image\ImageGeneratorBuilderImageGeneratorExtensions.cs (2)
10/// <summary>Provides extension methods for working with <see cref="IImageGenerator"/> in the context of <see cref="ImageGeneratorBuilder"/>.</summary> 22public static ImageGeneratorBuilder AsBuilder(this IImageGenerator innerGenerator)
Image\ImageGeneratorBuilderServiceCollectionExtensions.cs (15)
11/// <summary>Provides extension methods for registering <see cref="IImageGenerator"/> with a <see cref="IServiceCollection"/>.</summary> 15/// <summary>Registers a singleton <see cref="IImageGenerator"/> in the <see cref="IServiceCollection"/>.</summary> 17/// <param name="innerGenerator">The inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 24IImageGenerator innerGenerator, 28/// <summary>Registers a singleton <see cref="IImageGenerator"/> in the <see cref="IServiceCollection"/>.</summary> 30/// <param name="innerGeneratorFactory">A callback that produces the inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 37Func<IServiceProvider, IImageGenerator> innerGeneratorFactory, 44serviceCollection.Add(new ServiceDescriptor(typeof(IImageGenerator), builder.Build, lifetime)); 48/// <summary>Registers a keyed singleton <see cref="IImageGenerator"/> in the <see cref="IServiceCollection"/>.</summary> 51/// <param name="innerGenerator">The inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 59IImageGenerator innerGenerator, 63/// <summary>Registers a keyed singleton <see cref="IImageGenerator"/> in the <see cref="IServiceCollection"/>.</summary> 66/// <param name="innerGeneratorFactory">A callback that produces the inner <see cref="IImageGenerator"/> that represents the underlying backend.</param> 74Func<IServiceProvider, IImageGenerator> innerGeneratorFactory, 81serviceCollection.Add(new ServiceDescriptor(typeof(IImageGenerator), serviceKey, factory: (services, serviceKey) => builder.Build(services), lifetime));
Image\LoggingImageGenerator.cs (3)
18/// The provided implementation of <see cref="IImageGenerator"/> is thread-safe for concurrent use so long as the 38/// <param name="innerGenerator">The underlying <see cref="IImageGenerator"/>.</param> 41public LoggingImageGenerator(IImageGenerator innerGenerator, ILogger logger)
Microsoft.Extensions.AI.Abstractions (28)
Image\DelegatingImageGenerator.cs (5)
13/// Provides an optional base class for an <see cref="IImageGenerator"/> that passes through calls to another instance. 16/// This is recommended as a base type when building generators that can be chained in any order around an underlying <see cref="IImageGenerator"/>. 27protected DelegatingImageGenerator(IImageGenerator innerGenerator) 39/// <summary>Gets the inner <see cref="IImageGenerator" />.</summary> 40protected IImageGenerator InnerGenerator { get; }
Image\IImageGenerator.cs (2)
27/// <summary>Asks the <see cref="IImageGenerator"/> for an object of the specified type <paramref name="serviceType"/>.</summary> 33/// The purpose of this method is to allow for the retrieval of strongly typed services that might be provided by the <see cref="IImageGenerator"/>,
Image\ImageGenerationOptions.cs (5)
42/// The underlying <see cref="IImageGenerator" /> implementation can have its own representation of options. 43/// When <see cref="IImageGenerator.GenerateAsync" /> is invoked with an <see cref="ImageGenerationOptions" />, 45/// the operation. For situations where a consumer knows which concrete <see cref="IImageGenerator" /> is being used 47/// callback for the <see cref="IImageGenerator" /> implementation to use instead of creating a new instance. 55public Func<IImageGenerator, object?>? RawRepresentationFactory { get; set; }
Image\ImageGeneratorExtensions.cs (14)
14/// <summary>Provides extension methods for <see cref="IImageGenerator"/>.</summary> 30/// <summary>Asks the <see cref="IImageGenerator"/> for an object of type <typeparamref name="TService"/>.</summary> 37/// The purpose of this method is to allow for the retrieval of strongly typed services that may be provided by the <see cref="IImageGenerator"/>, 40public static TService? GetService<TService>(this IImageGenerator generator, object? serviceKey = null) 48/// Asks the <see cref="IImageGenerator"/> for an object of the specified type <paramref name="serviceType"/> 59/// The purpose of this method is to allow for the retrieval of services that are required to be provided by the <see cref="IImageGenerator"/>, 62public static object GetRequiredService(this IImageGenerator generator, Type serviceType, object? serviceKey = null) 73/// Asks the <see cref="IImageGenerator"/> for an object of type <typeparamref name="TService"/> 83/// The purpose of this method is to allow for the retrieval of strongly typed services that are required to be provided by the <see cref="IImageGenerator"/>, 86public static TService GetRequiredService<TService>(this IImageGenerator generator, object? serviceKey = null) 108this IImageGenerator generator, 130this IImageGenerator generator, 154this IImageGenerator generator, 181this IImageGenerator generator,
Image\ImageGeneratorMetadata.cs (2)
9/// <summary>Provides metadata about an <see cref="IImageGenerator"/>.</summary> 39/// This value can be <see langword="null"/> if no default model is set on the corresponding <see cref="IImageGenerator"/>.
Microsoft.Extensions.AI.Abstractions.Tests (4)
Image\DelegatingImageGeneratorTests.cs (3)
86var generator = delegating.GetService<IImageGenerator>(expectedKey); 140private sealed class NoOpDelegatingImageGenerator(IImageGenerator innerGenerator)
Image\ImageGenerationOptionsTests.cs (1)
38Func<IImageGenerator, object?> factory = generator => new { Representation = "raw data" };
Microsoft.Extensions.AI.Integration.Tests (2)
ImageGeneratorIntegrationTests.cs (2)
17private readonly IImageGenerator? _generator; 30protected abstract IImageGenerator? CreateGenerator();
Microsoft.Extensions.AI.OpenAI (4)
OpenAIClientExtensions.cs (3)
157/// <summary>Gets an <see cref="IImageGenerator"/> for use with this <see cref="ImageClient"/>.</summary> 159/// <returns>An <see cref="IImageGenerator"/> that can be used to generate images via the <see cref="ImageClient"/>.</returns> 162public static IImageGenerator AsIImageGenerator(this ImageClient imageClient) =>
OpenAIImageGenerator.cs (1)
23/// <summary>Represents an <see cref="IImageGenerator"/> for an OpenAI <see cref="OpenAIClient"/> or <see cref="ImageClient"/>.</summary>
Microsoft.Extensions.AI.OpenAI.Tests (4)
OpenAIImageGeneratorIntegrationTests.cs (1)
8protected override IImageGenerator? CreateGenerator()
OpenAIImageGeneratorTests.cs (3)
28IImageGenerator imageClient = client.GetImageClient(model).AsIImageGenerator(); 38IImageGenerator imageClient = client.GetImageClient("dall-e-3").AsIImageGenerator(); 40Assert.Same(imageClient, imageClient.GetService<IImageGenerator>());
Microsoft.Extensions.AI.Tests (52)
Image\ConfigureOptionsImageGeneratorTests.cs (2)
38using IImageGenerator innerGenerator = new TestImageGenerator 49using var generator = innerGenerator
Image\ImageGeneratorBuilderTests.cs (5)
61Assert.Throws<ArgumentNullException>("innerGenerator", () => new ImageGeneratorBuilder((IImageGenerator)null!)); 62Assert.Throws<ArgumentNullException>("innerGenerator", () => ((IImageGenerator)null!).AsBuilder()); 68Assert.Throws<ArgumentNullException>("innerGeneratorFactory", () => new ImageGeneratorBuilder((Func<IServiceProvider, IImageGenerator>)null!)); 99private sealed class InnerGeneratorCapturingImageGenerator(string name, IImageGenerator innerGenerator) : DelegatingImageGenerator(innerGenerator) 104public new IImageGenerator InnerGenerator => base.InnerGenerator;
Image\ImageGeneratorDependencyInjectionPatterns.cs (31)
26var instance1 = scope1.ServiceProvider.GetRequiredService<IImageGenerator>(); 27var instance1Copy = scope1.ServiceProvider.GetRequiredService<IImageGenerator>(); 28var instance2 = scope2.ServiceProvider.GetRequiredService<IImageGenerator>(); 50var instance1 = scope1.ServiceProvider.GetRequiredService<IImageGenerator>(); 51var instance1Copy = scope1.ServiceProvider.GetRequiredService<IImageGenerator>(); 52var instance2 = scope2.ServiceProvider.GetRequiredService<IImageGenerator>(); 73Assert.Null(services.GetService<IImageGenerator>()); 75var instance1 = scope1.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 76var instance1Copy = scope1.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 77var instance2 = scope2.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 99Assert.Null(services.GetService<IImageGenerator>()); 101var instance1 = scope1.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 102var instance1Copy = scope1.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 103var instance2 = scope2.ServiceProvider.GetRequiredKeyedService<IImageGenerator>("mykey"); 126Assert.Equal(typeof(IImageGenerator), sd.ServiceType); 148Assert.Equal(typeof(IImageGenerator), sd.ServiceType); 164Assert.Equal(typeof(IImageGenerator), sd.ServiceType); 173public class SingletonMiddleware(IImageGenerator inner, IServiceProvider services) : DelegatingImageGenerator(inner) 175public new IImageGenerator InnerGenerator => base.InnerGenerator;
Image\LoggingImageGeneratorTests.cs (13)
30Assert.Same(innerGenerator, innerGenerator.AsBuilder().UseLogging(NullLoggerFactory.Instance).Build().GetService(typeof(IImageGenerator))); 55using IImageGenerator innerGenerator = new TestImageGenerator 63using IImageGenerator generator = innerGenerator 77entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked:") && 80entry => Assert.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed:", entry.Message)); 85entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked.") && !entry.Message.Contains("A beautiful sunset")), 86entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3"))); 103using IImageGenerator innerGenerator = new TestImageGenerator 111using IImageGenerator generator = innerGenerator 126entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked:") && 129entry => Assert.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed", entry.Message)); 134entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked.") && !entry.Message.Contains("Make it more colorful")), 135entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3")));
Image\OpenTelemetryImageGeneratorTests.cs (1)
63using var g = innerGenerator