Appeler des fonctions .NET à l’aide d’un modèle IA
Dans ce guide de démarrage rapide, vous allez créer une application de conversation AI console .NET pour vous connecter à un modèle IA avec l’appel de fonction locale activé. L’application utilise la bibliothèque pour vous permettre d’écrire du Microsoft.Extensions.AI
code à l’aide d’abstractions IA plutôt que d’un KIT de développement logiciel (SDK) spécifique. Les abstractions IA vous permettent de modifier le modèle IA sous-jacent avec des modifications de code minimales.
Remarque
La Microsoft.Extensions.AI
bibliothèque est actuellement en préversion.
Prérequis
- SDK .NET 8.0 ou version ultérieure - Installez le SDK .NET 8.0.
- Une clé API d’OpenAI pour pouvoir exécuter cet échantillon.
Prérequis
- SDK .NET 8.0 ou version ultérieure - Installer le SDK .NET 8.
- Un abonnement Azure : créez-en un gratuitement.
- Accès auprès d’Azure OpenAI Service.
- Azure Developer CLI (facultatif) : installez ou mettez à jour Azure Developer CLI.
Remarque
Vous pouvez également utiliser le noyau sémantique pour accomplir les tâches de cet article. Le noyau sémantique est un SDK open source léger qui vous permet de créer des agents IA et d’intégrer les derniers modèles IA à vos applications .NET.
Clonez l’exemple de dépôt
Vous pouvez créer votre propre application à l’aide des étapes décrites dans les sections à l’avance, ou vous pouvez cloner le dépôt GitHub qui contient les exemples d’applications terminés pour tous les guides de démarrage rapide. Si vous envisagez d’utiliser Azure OpenAI, l’exemple de dépôt est également structuré en tant que modèle Azure Developer CLI qui peut approvisionner une ressource Azure OpenAI pour vous.
git clone https://github.com/dotnet/ai-samples.git
Créer l’application
Effectuez les étapes suivantes pour créer une application console .NET pour vous connecter à un modèle IA.
Dans un répertoire vide sur votre ordinateur, utilisez la
dotnet new
commande pour créer une application console :dotnet new console -o FunctionCallingAI
Modifiez le répertoire dans le dossier de l’application :
cd FunctionCallingAI
Installez les packages nécessaires :
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Ouvrez l’application dans Visual Studio Code ou votre éditeur de votre choix
code .
Créer le service IA
- Azure Developer CLI
- Azure CLI
- Portail Azure
L’exemple de référentiel GitHub est structuré en tant que modèle Azure Developer CLI (azd
), que azd
peut utiliser pour approvisionner le service et le modèle Azure OpenAI pour vous.
À partir d’un terminal ou d’une invite de commandes, accédez au
src\quickstarts\azure-openai
répertoire de l’exemple de dépôt.Exécutez la commande
azd up
pour approvisionner les ressources Azure OpenAI. La création du service Azure OpenAI et le déploiement du modèle peuvent prendre plusieurs minutes.azd up
azd
configure également les secrets utilisateur requis pour l’exemple d’application, comme le point de terminaison Azure OpenAI et le nom du modèle.
Configurer l’application
Accédez à la racine de votre projet .NET à partir d’un terminal ou d’une invite de commandes.
Exécutez les commandes suivantes pour configurer votre clé API OpenAI en tant que secret pour l’exemple d’application :
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-openai-key> dotnet user-secrets set ModelName <your-openai-model-name>
Ajouter le code de l’application
L’application utilise le Microsoft.Extensions.AI
package pour envoyer et recevoir des demandes au modèle IA.
Dans le fichier Program.cs , ajoutez le code suivant pour vous connecter et vous authentifier auprès du modèle IA. Il
ChatClient
est également configuré pour utiliser l’appel de fonction, ce qui permet aux fonctions .NET dans votre code d’être appelées par le modèle IA.using Microsoft.Extensions.Configuration; using Microsoft.Extensions.AI; using Azure.AI.OpenAI; using Azure.Identity; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; IChatClient client = new ChatClientBuilder() .UseFunctionInvocation() .Use( new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential()) .AsChatClient(deployment));
Remarque
DefaultAzureCredential recherche les informations d’identification d’authentification à partir de vos outils locaux. Si vous n’utilisez pas le
azd
modèle pour approvisionner la ressource Azure OpenAI, vous devez attribuer leAzure AI Developer
rôle au compte que vous avez utilisé pour vous connecter à Visual Studio ou à Azure CLI. Pour plus d’informations, consultez S’authentifier auprès des services Azure AI avec .NET.using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; var config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string model = config["ModelName"]; string key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder() .UseFunctionInvocation() .Use( new OpenAIClient(key) .AsChatClient(model));
Créez un
ChatOptions
objet qui contient une fonction inline que le modèle IA peut appeler pour obtenir le temps actuel. La déclaration de fonction inclut un délégué pour exécuter des paramètres de logique et de nom et de description pour décrire l’objectif de la fonction au modèle IA.// Add a new plugin with a local .NET function that should be available to the AI model var chatOptions = new ChatOptions { Tools = [AIFunctionFactory.Create((string location, string unit) => { // Here you would call a weather API to get the weather for the location return "Periods of rain or drizzle, 15 C"; }, "get_current_weather", "Get the current weather in a given location")] };
Ajoutez une invite système pour
chatHistory
fournir un contexte et des instructions au modèle. Envoyez une invite utilisateur avec une question qui nécessite que le modèle IA appelle la fonction inscrite pour répondre correctement à la question.// System prompt to provide context List<ChatMessage> chatHistory = [new(ChatRole.System, """ You are a hiking enthusiast who helps people discover fun hikes in their area. You are upbeat and friendly. """)]; // Weather conversation relevant to the registered function chatHistory.Add(new ChatMessage(ChatRole.User, "I live in Montreal and I'm looking for a moderate intensity hike. What's the current weather like? ")); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}"); var response = await client.CompleteAsync(chatHistory, chatOptions); chatHistory.Add(new ChatMessage(ChatRole.Assistant, response.Message.Contents)); Console.WriteLine($"{chatHistory.Last().Role} >>> {chatHistory.Last()}");
Utilisez la commande
dotnet run
pour exécuter l’application :dotnet run
L’application imprime une réponse d’achèvement du modèle IA qui inclut les données fournies par la fonction .NET. Le modèle IA a compris que la fonction inscrite était disponible et l’appelait automatiquement pour générer une réponse appropriée.
Nettoyer les ressources
Lorsque vous n’avez plus besoin de l’exemple d’application ou de ressources, supprimez le déploiement correspondant et toutes les ressources.
azd down