Ejercicio: invocación automática de funciones
El SDK de kernel semántico permite coordinar automáticamente las funciones y avisos a los que se hace referencia en el kernel. En lugar de invocar manualmente funciones y mensajes, esta herramienta le ayudará a ahorrar tiempo y hará que las aplicaciones sean más inteligentes. ¡Pruébelo!
Preparación del entorno de desarrollo
Para estos ejercicios, hay disponible un proyecto de inicio para su uso. Siga estos pasos para configurar el proyecto de inicio:
Importante
Debe tener Instalado Visual Studio Code y .NET Framework 8.0 para completar estos pasos. Es posible que también tenga que instalar la extensión Dev Kit de C# de Visual Studio Code.
Abra Visual Studio Code.
En la sección Inicio de Visual Studio Code, seleccione Clonar repositorio de Git.
En la barra de direcciones URL, escriba
https://github.com/MicrosoftLearning/MSLearn-Develop-AI-Agents-with-Azure-OpenAI-and-Semantic-Kernel-SDK.gitEn el Explorador de archivos, cree una nueva carpeta en una ubicación que sea fácil de encontrar y recordar, como una carpeta en el escritorio.
Haga clic en el botón Seleccionar como destino del repositorio .
Debe iniciar sesión en GitHub para clonar correctamente el proyecto.
Apertura del proyecto en Visual Studio Code
En el Explorador, haga clic con el botón derecho en la carpeta M05-auto-invoke-functions/M05-Project y haga clic en Abrir en terminal integrado.
Expanda la carpeta M05-auto-invoke-functions/M05-Project
Debería ver un archivo "Program.cs".
Abra el archivo Program.cs y actualice las siguientes variables con el nombre de implementación de Azure OpenAI Services, la clave de API y el punto de conexión.
string yourDeploymentName = ""; string yourEndpoint = ""; string yourAPIKey = "";
Ya está listo para comenzar el ejercicio. Buena suerte.
Sugerir conciertos al usuario
En la carpeta "Complementos", cree un nuevo archivo denominado "MusicConcertPlugin.cs"
En el archivo "MusicConcertPlugin", agregue el código siguiente:
using System.ComponentModel; using Microsoft.SemanticKernel; public class MusicConcertPlugin { [KernelFunction, Description("Get a list of upcoming concerts")] public static string GetTours() { string dir = Directory.GetCurrentDirectory(); string content = File.ReadAllText($"{dir}/data/concertdates.txt"); return content; } }La función
GetTourslee un archivo denominado "concertdates.txt" y devuelve el contenido. Esta función se usará para recuperar una lista de próximos conciertos.A continuación, cree un mensaje para pedir al LLM que sugiera un concierto basado en la música reproducida recientemente del usuario.
En la carpeta "Solicitudes", cree una carpeta denominada "SuggestConcert"
Cree un archivo "config.json" en la carpeta "SuggestConcert" con el siguiente contenido:
{ "schema": 1, "type": "completion", "description": "Suggest a concert to the user", "execution_settings": { "default": { "max_tokens": 4000, "temperature": 0 } }, "input_variables": [ { "name": "upcomingConcerts", "description": "A list of artist's upcoming concerts", "required": true }, { "name": "recentlyPlayedSongs", "description": "A list of songs recently played by the user", "required": true }, { "name": "location", "description": "The user's location", "required": true } ] }Cree un archivo "skprompt.txt" en la carpeta "SuggestConcert" con el siguiente contenido:
Based on the user's recently played songs: {{$recentlyPlayedSongs}} And a list of upcoming concerts: {{$upcomingConcerts}} Suggest an upcoming concert. The user lives in {{$location}}, please recommend a relevant concert that is close to their location.Este mensaje pide al LLM que sugiera un concierto basado en las canciones y la ubicación que ha reproducido recientemente el usuario. A continuación, habilitará la configuración de llamada automática de funciones.
Abra el archivo
Program.csy la siguiente instrucción using:using Microsoft.SemanticKernel.Connectors.OpenAI;Este paquete le permitirá usar la configuración de llamada automática de funciones.
Actualice el archivo
Program.cscon el código siguiente:kernel.ImportPluginFromType<MusicLibraryPlugin>(); kernel.ImportPluginFromType<MusicConcertPlugin>(); kernel.ImportPluginFromPromptDirectory("Prompts"); OpenAIPromptExecutionSettings settings = new() { ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions }; string prompt = @"I live in Portland OR USA. Based on my recently played songs and a list of upcoming concerts, which concert do you recommend?"; var result = await kernel.InvokePromptAsync(prompt, new(settings)); Console.WriteLine(result);Escriba
dotnet runen el terminalLa sugerencia generada debe recomendar un concierto basado en las canciones reproducidas recientemente y la ubicación. La salida podría ser similar a la siguiente respuesta:
Based on your recently played songs and your location in Portland, OR, I would recommend attending the upcoming concert of Lisa Taylor. She will be performing in Portland on April 16, 2024. This concert would be a great opportunity for you to enjoy live music and experience Lisa Taylor' beautiful songs.El kernel semántico detecta automáticamente la función de complemento adecuada para usar y pasa los parámetros correctos. Puede intentar modificar la ubicación para ver cómo cambia la recomendación. También puede intentar cambiar el mensaje para indicar al LLM que sugiera una canción de la biblioteca.
La configuración AutoInvokeKernelFunctions permite al kernel semántico llamar automáticamente a funciones y avisos que se agregan al kernel. Esta herramienta permite crear aplicaciones dinámicas y sólidas con menos código.