in aiplatform/api/AIPlatform.Samples/ControlledGeneration.cs [193:265]
public async Task<string> GenerateContentWithResponseSchema3(
string projectId = "your-project-id",
string location = "us-central1",
string publisher = "google",
string model = "gemini-2.0-flash-001")
{
var predictionServiceClient = new PredictionServiceClientBuilder
{
Endpoint = $"{location}-aiplatform.googleapis.com"
}.Build();
var responseSchema = new OpenApiSchema
{
Type = Type.Object,
Properties =
{
["forecast"] = new()
{
Type = Type.Array,
Items = new()
{
Type = Type.Object,
Properties =
{
["Forecast"] = new() { Type = Type.String },
["Humidity"] = new() { Type = Type.String },
["Temperature"] = new() { Type = Type.Integer },
["Wind Speed"] = new() { Type = Type.Integer }
}
}
}
}
};
string prompt = @"
The week ahead brings a mix of weather conditions.
Sunday is expected to be sunny with a temperature of 77°F and a humidity level of 50%. Winds will be light at around 10 km/h.
Monday will see partly cloudy skies with a slightly cooler temperature of 72°F and humidity increasing to 55%. Winds will pick up slightly to around 15 km/h.
Tuesday brings rain showers, with temperatures dropping to 64°F and humidity rising to 70%. Expect stronger winds at 20 km/h.
Wednesday may see thunderstorms, with a temperature of 68°F and high humidity of 75%. Winds will be gusty at 25 km/h.
Thursday will be cloudy with a temperature of 66°F and moderate humidity at 60%. Winds will ease slightly to 18 km/h.
Friday returns to partly cloudy conditions, with a temperature of 73°F and lower humidity at 45%. Winds will be light at 12 km/h.
Finally, Saturday rounds off the week with sunny skies, a temperature of 80°F, and a humidity level of 40%. Winds will be gentle at 8 km/h.";
var generateContentRequest = new GenerateContentRequest
{
Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
Contents =
{
new Content
{
Role = "USER",
Parts =
{
new Part { Text = prompt }
}
}
},
GenerationConfig = new GenerationConfig
{
ResponseMimeType = "application/json",
ResponseSchema = responseSchema
},
};
GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);
string responseText = response.Candidates[0].Content.Parts[0].Text;
Console.WriteLine(responseText);
return responseText;
}