Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In deze quickstart maakt u een .NET-console AI-chat-app die verbinding maakt met een AI-model met lokale functieaanroepen ingeschakeld. De app maakt gebruik van de Microsoft.Extensions.AI-bibliotheek, zodat u code kunt schrijven met behulp van AI-abstracties in plaats van een specifieke SDK. Met AI-abstracties kunt u het onderliggende AI-model wijzigen met minimale codewijzigingen.
Voorwaarden
- .NET 8.0 SDK of hoger: Installeer de .NET 8.0 SDK.
- Een API-sleutel van OpenAI, zodat u dit voorbeeld kunt uitvoeren.
Voorwaarden
- .NET 8.0 SDK of hoger: Installeer de .NET 8 SDK.
- Een Azure-abonnement - Maak er gratis één aan.
- Azure Developer CLI (optioneel): de Azure Developer CLI-installeren of bijwerken.
De app maken
Voer de volgende stappen uit om een .NET-console-app te maken om verbinding te maken met een AI-model.
Gebruik in een lege map op uw computer de opdracht
dotnet newom een nieuwe console-app te maken:dotnet new console -o FunctionCallingAIWijzig de map in de app-map:
cd FunctionCallingAIInstalleer de vereiste pakketten:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsdotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsOpen de app in Visual Studio Code of uw editor naar keuze
code .
De AI-service maken
Als u een Azure OpenAI-service en -model wilt inrichten, voert u de stappen in het artikel Een Azure OpenAI-serviceresource maken en implementeren uit.
Navigeer vanuit een terminal of opdrachtprompt naar de hoofdmap van uw projectmap.
Voer de volgende opdrachten uit om uw Azure OpenAI-eindpunt en modelnaam voor de voorbeeld-app te configureren:
dotnet user-secrets init dotnet user-secrets set AZURE_OPENAI_ENDPOINT <your-Azure-OpenAI-endpoint> dotnet user-secrets set AZURE_OPENAI_GPT_NAME <your-Azure-OpenAI-model-name> dotnet user-secrets set AZURE_OPENAI_API_KEY <your-Azure-OpenAI-key>
De app configureren
Navigeer vanuit een terminal of opdrachtprompt naar de hoofdmap van uw .NET-project.
Voer de volgende opdrachten uit om uw OpenAI API-sleutel als geheim te configureren voor de voorbeeld-app:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
De app-code toevoegen
De app maakt gebruik van het Microsoft.Extensions.AI-pakket voor het verzenden en ontvangen van aanvragen naar het AI-model.
Voeg in het bestand Program.cs de volgende code toe om verbinding te maken en te verifiëren bij het AI-model. Het
ChatClientis ook geconfigureerd voor het gebruik van functie-aanroep, waardoor het AI-model .NET-functies in uw code kan aanroepen.IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string endpoint = config["AZURE_OPENAI_ENDPOINT"]; string deployment = config["AZURE_OPENAI_GPT_NAME"]; string apiKey = config["AZURE_OPENAI_API_KEY"]; IChatClient client = new ChatClientBuilder( new AzureOpenAIClient(new Uri(endpoint), new AzureKeyCredential(apiKey)) .GetChatClient(deployment).AsIChatClient()) .UseFunctionInvocation() .Build();using Microsoft.Extensions.AI; using Microsoft.Extensions.Configuration; using OpenAI; IConfigurationRoot config = new ConfigurationBuilder().AddUserSecrets<Program>().Build(); string? model = config["ModelName"]; string? key = config["OpenAIKey"]; IChatClient client = new ChatClientBuilder(new OpenAIClient(key).GetChatClient(model ?? "gpt-4o").AsIChatClient()) .UseFunctionInvocation() .Build();Maak een nieuw
ChatOptions-object dat een inlinefunctie bevat die het AI-model kan aanroepen om het huidige weer op te halen. De functiedeclaratie bevat een gemachtigde voor het uitvoeren van logica en naam- en beschrijvingsparameters om het doel van de functie voor het AI-model te beschrijven.// 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", "Gets the current weather in a given location")] };Voeg een systeemprompt toe aan de
chatHistoryom context en instructies voor het model te bieden. Stuur een gebruikersprompt met een vraag waarvoor het AI-model de geregistreerde functie moet aanroepen om de vraag goed te beantwoorden.// 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()}"); ChatResponse response = await client.GetResponseAsync(chatHistory, chatOptions); Console.WriteLine($"Assistant >>> {response.Text}");Gebruik de opdracht
dotnet runom de app uit te voeren:dotnet runDe app drukt het voltooiingsantwoord van het AI-model af, inclusief gegevens die door de .NET-functie worden geleverd. Het AI-model begreep dat de geregistreerde functie beschikbaar was en noemde deze automatisch om een correct antwoord te genereren.
Middelen opschonen
Als u deze niet meer nodig hebt, verwijdert u de Azure OpenAI-resource en GPT-4-modelimplementatie.
- Navigeer in de Azure Portalnaar de Azure OpenAI-resource.
- Selecteer de Azure OpenAI-resource en selecteer vervolgens verwijderen.