// Copyright (c) Microsoft. All rights reserved. using Microsoft.SemanticKernel; using Resources; namespace PromptTemplates; /// /// This example demonstrates how to use ChatPrompt XML format with Audio content types. /// The new ChatPrompt parser supports <audio> tags for various audio formats like WAV, MP3, etc. /// public class OpenAI_ChatPromptWithAudio(ITestOutputHelper output) : BaseTest(output) { /// /// Demonstrates using audio content in ChatPrompt XML format with data URI. /// [Fact] public async Task ChatPromptWithAudioContentDataUri() { // Load an audio file and convert to base64 data URI var audioBytes = await EmbeddedResource.ReadAllAsync("test_audio.wav"); var audioBase64 = Convert.ToBase64String(audioBytes.ToArray()); var dataUri = $"data:audio/wav;base64,{audioBase64}"; var chatPrompt = $""" You are a helpful assistant that can analyze audio content. Please transcribe and analyze this audio file. """; var kernel = Kernel.CreateBuilder() .AddOpenAIChatCompletion( modelId: "gpt-4o-audio-preview", // Use audio-capable model apiKey: TestConfiguration.OpenAI.ApiKey) .Build(); var chatFunction = kernel.CreateFunctionFromPrompt(chatPrompt); var result = await kernel.InvokeAsync(chatFunction); Console.WriteLine("=== ChatPrompt with Audio Content (Data URI) ==="); Console.WriteLine("Prompt:"); Console.WriteLine(chatPrompt); Console.WriteLine("\nResult:"); Console.WriteLine(result); } /// /// Demonstrates a conversation flow using ChatPrompt with audio content across multiple messages. /// [Fact] public async Task ChatPromptConversationWithAudioContent() { var audioBytes = await EmbeddedResource.ReadAllAsync("test_audio.wav"); var audioBase64 = Convert.ToBase64String(audioBytes.ToArray()); var audioDataUri = $"data:audio/wav;base64,{audioBase64}"; var chatPrompt = $""" You are a helpful assistant that specializes in audio analysis and transcription. I have an audio recording that I need help with. Can you analyze it? I can help you analyze this audio recording. Let me transcribe and examine its content for you. What specific information are you looking for from this audio? Can you provide a full transcription and also identify any background sounds or audio quality issues? """; var kernel = Kernel.CreateBuilder() .AddOpenAIChatCompletion( modelId: "gpt-4o-audio-preview", // Use audio-capable model apiKey: TestConfiguration.OpenAI.ApiKey) .Build(); var chatFunction = kernel.CreateFunctionFromPrompt(chatPrompt); var result = await kernel.InvokeAsync(chatFunction); Console.WriteLine("=== ChatPrompt Conversation with Audio Content ==="); Console.WriteLine("Prompt (showing conversation flow):"); Console.WriteLine(chatPrompt[..Math.Min(800, chatPrompt.Length)] + "..."); Console.WriteLine("\nResult:"); Console.WriteLine(result); } }