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)
25internal sealed class OpenAIImageGenerator : IImageGenerator
Microsoft.Extensions.AI.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestImageGenerator.cs (1)
10public sealed class TestImageGenerator : IImageGenerator
126 references to IImageGenerator
Microsoft.Extensions.AI (39)
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, 82serviceCollection.Add(new ServiceDescriptor(typeof(IImageGenerator), serviceKey, factory: (services, serviceKey) => builder.Build(services), lifetime));
Image\LoggingImageGenerator.cs (3)
19/// The provided implementation of <see cref="IImageGenerator"/> is thread-safe for concurrent use so long as the 39/// <param name="innerGenerator">The underlying <see cref="IImageGenerator"/>.</param> 42public 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 may 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>Extensions 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)
158/// <summary>Gets an <see cref="IImageGenerator"/> for use with this <see cref="ImageClient"/>.</summary> 160/// <returns>An <see cref="IImageGenerator"/> that can be used to generate images via the <see cref="ImageClient"/>.</returns> 163public static IImageGenerator AsIImageGenerator(this ImageClient imageClient) =>
OpenAIImageGenerator.cs (1)
24/// <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 (45)
Image\ConfigureOptionsImageGeneratorTests.cs (2)
38using IImageGenerator innerGenerator = new TestImageGenerator 49using var generator = innerGenerator
Image\ImageGeneratorDependencyInjectionPatterns.cs (30)
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); 157public class SingletonMiddleware(IImageGenerator inner, IServiceProvider services) : DelegatingImageGenerator(inner) 159public new IImageGenerator InnerGenerator => base.InnerGenerator;
Image\LoggingImageGeneratorTests.cs (13)
31Assert.Same(innerGenerator, innerGenerator.AsBuilder().UseLogging(NullLoggerFactory.Instance).Build().GetService(typeof(IImageGenerator))); 56using IImageGenerator innerGenerator = new TestImageGenerator 64using IImageGenerator generator = innerGenerator 78entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked:") && 81entry => Assert.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed:", entry.Message)); 86entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked.") && !entry.Message.Contains("A beautiful sunset")), 87entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3"))); 104using IImageGenerator innerGenerator = new TestImageGenerator 112using IImageGenerator generator = innerGenerator 127entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked:") && 130entry => Assert.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed", entry.Message)); 135entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} invoked.") && !entry.Message.Contains("Make it more colorful")), 136entry => Assert.True(entry.Message.Contains($"{nameof(IImageGenerator.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3")));