public async Task DenseCaptionImage()

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);
    }