@@ -16,7 +16,6 @@ sealed class GrokImageGenerator : IImageGenerator
1616 readonly ImageGeneratorMetadata metadata ;
1717 readonly ImageClient imageClient ;
1818 readonly string defaultModelId ;
19- readonly GrokClientOptions clientOptions ;
2019
2120 internal GrokImageGenerator ( GrpcChannel channel , GrokClientOptions clientOptions , string defaultModelId )
2221 : this ( new ImageClient ( channel ) , clientOptions , defaultModelId )
@@ -32,7 +31,6 @@ internal GrokImageGenerator(ImageClient imageClient, string defaultModelId)
3231 GrokImageGenerator ( ImageClient imageClient , GrokClientOptions clientOptions , string defaultModelId )
3332 {
3433 this . imageClient = imageClient ;
35- this . clientOptions = clientOptions ;
3634 this . defaultModelId = defaultModelId ;
3735 metadata = new ImageGeneratorMetadata ( "xai" , clientOptions . Endpoint , defaultModelId ) ;
3836 }
@@ -63,9 +61,8 @@ public async Task<ImageGenerationResponse> GenerateAsync(
6361 }
6462
6563 // Handle image editing if original images are provided
66- if ( request . OriginalImages is not null && request . OriginalImages . Any ( ) )
64+ if ( request . OriginalImages ? . FirstOrDefault ( ) is { } originalImage )
6765 {
68- var originalImage = request . OriginalImages . FirstOrDefault ( ) ;
6966 if ( originalImage is DataContent dataContent )
7067 {
7168 var imageUrl = dataContent . Uri ? . ToString ( ) ;
@@ -91,7 +88,7 @@ public async Task<ImageGenerationResponse> GenerateAsync(
9188
9289 var response = await imageClient . GenerateImageAsync ( protocolRequest , cancellationToken : cancellationToken ) . ConfigureAwait ( false ) ;
9390
94- return ToImageGenerationResponse ( response , options ? . MediaType ) ;
91+ return ToImageGenerationResponse ( response ) ;
9592 }
9693
9794 /// <inheritdoc />
@@ -103,18 +100,14 @@ public async Task<ImageGenerationResponse> GenerateAsync(
103100 } ;
104101
105102 /// <inheritdoc />
106- void IDisposable . Dispose ( )
107- {
108- // Nothing to dispose. Implementation required for the IImageGenerator interface.
109- }
103+ void IDisposable . Dispose ( ) { }
110104
111105 /// <summary>
112106 /// Converts an xAI <see cref="ImageResponse"/> to a <see cref="ImageGenerationResponse"/>.
113107 /// </summary>
114- static ImageGenerationResponse ToImageGenerationResponse ( ImageResponse response , string ? mediaType )
108+ static ImageGenerationResponse ToImageGenerationResponse ( ImageResponse response )
115109 {
116110 var contents = new List < AIContent > ( ) ;
117- var contentType = mediaType ?? DefaultOutputContentType ; // xAI returns JPG by default
118111
119112 foreach ( var image in response . Images )
120113 {
@@ -123,12 +116,12 @@ static ImageGenerationResponse ToImageGenerationResponse(ImageResponse response,
123116 case GeneratedImage . ImageOneofCase . Base64 :
124117 {
125118 var imageBytes = Convert . FromBase64String ( image . Base64 ) ;
126- contents . Add ( new DataContent ( imageBytes , contentType ) ) ;
119+ contents . Add ( new DataContent ( imageBytes , DefaultOutputContentType ) ) ;
127120 break ;
128121 }
129122 case GeneratedImage . ImageOneofCase . Url :
130123 {
131- contents . Add ( new UriContent ( new Uri ( image . Url ) , contentType ) ) ;
124+ contents . Add ( new UriContent ( new Uri ( image . Url ) , DefaultOutputContentType ) ) ;
132125 break ;
133126 }
134127 default :
0 commit comments