in src/AIHub/Controllers/ImageAnalyzerController.cs [44:112]
public async Task<IActionResult> DenseCaptionImage(string image_url, string prompt)
{
string GPT4o_ENDPOINT = $"{AOAIendpoint}openai/deployments/{AOAIDeploymentName}/chat/completions?api-version=2024-02-15-preview";
image_url = image_url + sasUri.Query;
if (string.IsNullOrEmpty(AOAIsubscriptionKey))
{
var credential = new DefaultAzureCredential();
httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", credential.GetToken(new TokenRequestContext(["https://cognitiveservices.azure.com/.default"])).Token);
}
else
{
httpClient.DefaultRequestHeaders.Add("api-key", AOAIsubscriptionKey);
}
var payload = new
{
messages = new object[]
{
new {
role = "system",
content = new object[] {
new {
type = "text",
text = "You are an AI assistant that helps people find information."
}
}
},
new {
role = "user",
content = new object[] {
new {
type = "image_url",
image_url = new {
url = image_url
}
},
new {
type = "text",
text = prompt
}
}
}
},
temperature = 0.7,
top_p = 0.95,
max_tokens = 800,
stream = false
};
Console.WriteLine(JsonConvert.SerializeObject(payload));
var response = await httpClient.PostAsync(GPT4o_ENDPOINT, new StringContent(JsonConvert.SerializeObject(payload), Encoding.UTF8, "application/json"));
if (response.IsSuccessStatusCode)
{
var responseData = JsonConvert.DeserializeObject<dynamic>(await response.Content.ReadAsStringAsync());
// Get the web pages from the response
var response_final = responseData!.choices[0];
string final = response_final.message.content;
model.Message = final;
model.Image = image_url;
}
else
{
var errorContent = await response.Content.ReadAsStringAsync();
Console.WriteLine($"Error after GPT4o: {response.StatusCode}, {errorContent}");
}
return View("ImageAnalyzer", model);
}