Skip to content

Commit de86a08

Browse files
committed
feat: add image generation configuration support in GenerationConfig and MicrosoftExtensions
1 parent 5f87cba commit de86a08

3 files changed

Lines changed: 39 additions & 0 deletions

File tree

src/GenerativeAI.Microsoft/AdditionalPropertyKeys.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,14 @@ public static class AdditionalPropertiesKeys
1414
/// Key used to indicate the thinking budget in tokens.
1515
/// </summary>
1616
public const string ThinkingBudget = "ThinkingBudget";
17+
18+
/// <summary>
19+
/// Key used to specify response modalities (e.g., text, image).
20+
/// </summary>
21+
public const string ResponseModalities = "ResponseModalities";
22+
23+
/// <summary>
24+
/// Key used to specify the aspect ratio for image generation.
25+
/// </summary>
26+
public const string ImageConfigAspectRatio = "AspectRatio";
1727
}

src/GenerativeAI.Microsoft/Extensions/MicrosoftExtensions.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -337,6 +337,17 @@ private static JsonNode ToJsonNodeResponse(this object? response)
337337
config.ThinkingConfig.IncludeThoughts = includeThoughts;
338338
}
339339

340+
if (options.AdditionalProperties.TryGetValue(AdditionalPropertiesKeys.ResponseModalities, out List<Modality>? modalities))
341+
{
342+
config.ResponseModalities = modalities;
343+
}
344+
345+
if (options.AdditionalProperties.TryGetValue(AdditionalPropertiesKeys.ImageConfigAspectRatio, out string? aspectRatio))
346+
{
347+
config.ImageConfig ??= new ImageConfig();
348+
config.ImageConfig.AspectRatio = aspectRatio;
349+
}
350+
340351
return config;
341352
}
342353

src/GenerativeAI/Types/ContentGeneration/Config/GenerationConfig.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,12 @@ public class GenerationConfig
209209
/// </summary>
210210
[JsonPropertyName("responseJsonSchema")]
211211
public JsonNode? ResponseJsonSchema { get; set; }
212+
213+
/// <summary>
214+
/// Optional. Image generation configuration for models that support image output.
215+
/// </summary>
216+
[JsonPropertyName("imageConfig")]
217+
public ImageConfig? ImageConfig { get; set; }
212218
}
213219

214220

@@ -321,4 +327,16 @@ public class ManualRoutingMode
321327
/// </summary>
322328
[JsonPropertyName("modelName")]
323329
public string? ModelName { get; set; }
330+
}
331+
332+
/// <summary>
333+
/// Configuration for image generation in models that support image output (e.g., gemini-2.5-flash-image).
334+
/// </summary>
335+
public class ImageConfig
336+
{
337+
/// <summary>
338+
/// Optional. The aspect ratio for generated images. Common values: "16:9", "9:16", "1:1", "4:3", "3:4".
339+
/// </summary>
340+
[JsonPropertyName("aspectRatio")]
341+
public string? AspectRatio { get; set; }
324342
}

0 commit comments

Comments
 (0)