5 implementations of IImageGenerator
Microsoft.Extensions.AI.Abstractions (1)
Image\DelegatingImageGenerator.cs (1)
20
public class DelegatingImageGenerator :
IImageGenerator
Microsoft.Extensions.AI.Abstractions.Tests (1)
TestImageGenerator.cs (1)
10
public sealed class TestImageGenerator :
IImageGenerator
Microsoft.Extensions.AI.Integration.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestImageGenerator.cs (1)
10
public sealed class TestImageGenerator :
IImageGenerator
Microsoft.Extensions.AI.OpenAI (1)
OpenAIImageGenerator.cs (1)
25
internal sealed class OpenAIImageGenerator :
IImageGenerator
Microsoft.Extensions.AI.Tests (1)
test\Libraries\Microsoft.Extensions.AI.Abstractions.Tests\TestImageGenerator.cs (1)
10
public sealed class TestImageGenerator :
IImageGenerator
126 references to IImageGenerator
Microsoft.Extensions.AI (39)
Image\ConfigureOptionsImageGenerator.cs (1)
31
public ConfigureOptionsImageGenerator(
IImageGenerator
innerGenerator, Action<ImageGenerationOptions> configure)
Image\ImageGeneratorBuilder.cs (18)
11
/// <summary>A builder for creating pipelines of <see cref="
IImageGenerator
"/>.</summary>
15
private readonly Func<IServiceProvider,
IImageGenerator
> _innerGeneratorFactory;
18
private List<Func<
IImageGenerator
, IServiceProvider,
IImageGenerator
>>? _generatorFactories;
21
/// <param name="innerGenerator">The inner <see cref="
IImageGenerator
"/> that represents the underlying backend.</param>
23
public ImageGeneratorBuilder(
IImageGenerator
innerGenerator)
30
/// <param name="innerGeneratorFactory">A callback that produces the inner <see cref="
IImageGenerator
"/> that represents the underlying backend.</param>
32
public 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>
43
public
IImageGenerator
Build(IServiceProvider? services = null)
46
var
imageGenerator = _innerGeneratorFactory(services);
56
$"Ensure that the callbacks passed to {nameof(Use)} return non-null {nameof(
IImageGenerator
)} instances.");
67
public ImageGeneratorBuilder Use(Func<
IImageGenerator
,
IImageGenerator
> generatorFactory)
78
public 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>
22
public 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>
24
IImageGenerator
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>
37
Func<IServiceProvider,
IImageGenerator
> innerGeneratorFactory,
44
serviceCollection.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>
59
IImageGenerator
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>
74
Func<IServiceProvider,
IImageGenerator
> innerGeneratorFactory,
82
serviceCollection.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>
42
public 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
"/>.
27
protected DelegatingImageGenerator(
IImageGenerator
innerGenerator)
39
/// <summary>Gets the inner <see cref="
IImageGenerator
" />.</summary>
40
protected
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.
55
public 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
"/>,
40
public 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
"/>,
62
public 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
"/>,
86
public static TService GetRequiredService<TService>(this
IImageGenerator
generator, object? serviceKey = null)
108
this
IImageGenerator
generator,
130
this
IImageGenerator
generator,
154
this
IImageGenerator
generator,
181
this
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)
86
var
generator = delegating.GetService<
IImageGenerator
>(expectedKey);
140
private sealed class NoOpDelegatingImageGenerator(
IImageGenerator
innerGenerator)
Image\ImageGenerationOptionsTests.cs (1)
38
Func<
IImageGenerator
, object?> factory = generator => new { Representation = "raw data" };
Microsoft.Extensions.AI.Integration.Tests (2)
ImageGeneratorIntegrationTests.cs (2)
17
private readonly
IImageGenerator
? _generator;
30
protected 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>
163
public 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)
8
protected override
IImageGenerator
? CreateGenerator()
OpenAIImageGeneratorTests.cs (3)
28
IImageGenerator
imageClient = client.GetImageClient(model).AsIImageGenerator();
38
IImageGenerator
imageClient = client.GetImageClient("dall-e-3").AsIImageGenerator();
40
Assert.Same(imageClient, imageClient.GetService<
IImageGenerator
>());
Microsoft.Extensions.AI.Tests (45)
Image\ConfigureOptionsImageGeneratorTests.cs (2)
38
using
IImageGenerator
innerGenerator = new TestImageGenerator
49
using
var
generator = innerGenerator
Image\ImageGeneratorDependencyInjectionPatterns.cs (30)
26
var
instance1 = scope1.ServiceProvider.GetRequiredService<
IImageGenerator
>();
27
var
instance1Copy = scope1.ServiceProvider.GetRequiredService<
IImageGenerator
>();
28
var
instance2 = scope2.ServiceProvider.GetRequiredService<
IImageGenerator
>();
50
var
instance1 = scope1.ServiceProvider.GetRequiredService<
IImageGenerator
>();
51
var
instance1Copy = scope1.ServiceProvider.GetRequiredService<
IImageGenerator
>();
52
var
instance2 = scope2.ServiceProvider.GetRequiredService<
IImageGenerator
>();
73
Assert.Null(services.GetService<
IImageGenerator
>());
75
var
instance1 = scope1.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
76
var
instance1Copy = scope1.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
77
var
instance2 = scope2.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
99
Assert.Null(services.GetService<
IImageGenerator
>());
101
var
instance1 = scope1.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
102
var
instance1Copy = scope1.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
103
var
instance2 = scope2.ServiceProvider.GetRequiredKeyedService<
IImageGenerator
>("mykey");
126
Assert.Equal(typeof(
IImageGenerator
), sd.ServiceType);
148
Assert.Equal(typeof(
IImageGenerator
), sd.ServiceType);
157
public class SingletonMiddleware(
IImageGenerator
inner, IServiceProvider services) : DelegatingImageGenerator(inner)
159
public new
IImageGenerator
InnerGenerator => base.InnerGenerator;
Image\LoggingImageGeneratorTests.cs (13)
31
Assert.Same(innerGenerator, innerGenerator.AsBuilder().UseLogging(NullLoggerFactory.Instance).Build().GetService(typeof(
IImageGenerator
)));
56
using
IImageGenerator
innerGenerator = new TestImageGenerator
64
using
IImageGenerator
generator = innerGenerator
78
entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} invoked:") &&
81
entry => Assert.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} completed:", entry.Message));
86
entry => Assert.True(entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} invoked.") && !entry.Message.Contains("A beautiful sunset")),
87
entry => Assert.True(entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3")));
104
using
IImageGenerator
innerGenerator = new TestImageGenerator
112
using
IImageGenerator
generator = innerGenerator
127
entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} invoked:") &&
130
entry => Assert.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} completed", entry.Message));
135
entry => Assert.True(entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} invoked.") && !entry.Message.Contains("Make it more colorful")),
136
entry => Assert.True(entry.Message.Contains($"{nameof(
IImageGenerator
.GenerateAsync)} completed.") && !entry.Message.Contains("dall-e-3")));