Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Ebben a rövid útmutatóban egy .NET-konzol AI-csevegőalkalmazást hoz létre, amely helyi függvényhívást engedélyezve csatlakozik egy AI-modellhez. Az alkalmazás a Microsoft.Extensions.AI kódtárat használja, hogy egy adott SDK helyett AI-absztrakciók használatával írjon kódot. Az AI-absztrakciók segítségével minimális kódmódosításokkal módosíthatja a mögöttes AI-modellt.
Előfeltételek
- .NET 8.0 SDK vagy újabb – Telepítse a .NET 8.0 SDK.
- Az OpenAI API-kulcsa a minta futtatásához.
Előfeltételek
- .NET 8.0 SDK vagy újabb – Telepítse a .NET 8 SDK-t.
- Azure-előfizetés – Hozzon létre egyet ingyenes.
- Azure Developer CLI (nem kötelező) – Az Azure Developer CLItelepítése vagy frissítése.
Az alkalmazás létrehozása
Az alábbi lépéseket követve hozzon létre egy .NET-konzolalkalmazást egy AI-modellhez való csatlakozáshoz.
A számítógép üres könyvtárában a
dotnet newparanccsal hozzon létre egy új konzolalkalmazást:dotnet new console -o FunctionCallingAIMódosítsa a könyvtárat az alkalmazásmappára:
cd FunctionCallingAITelepítse a szükséges csomagokat:
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.UserSecretsdotnet add package Microsoft.Extensions.AI dotnet add package Microsoft.Extensions.AI.OpenAI dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecretsAz alkalmazás megnyitása a Visual Studio Code-ban vagy a választott szerkesztőben
code .
Az AI-szolgáltatás létrehozása
Azure OpenAI-szolgáltatás és -modell kiépítéséhez végezze el az Azure OpenAI-szolgáltatás erőforrás-cikkének létrehozását és üzembe helyezését .
Egy terminálból vagy parancssorból navigáljon a projektkönyvtár gyökeréhez.
Futtassa a következő parancsokat az Azure OpenAI-végpont és a mintaalkalmazás modellnevének konfigurálásához:
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>
Az alkalmazás konfigurálása
Nyissa meg a .NET-projekt gyökerét egy terminálból vagy parancssorból.
Futtassa a következő parancsokat az OpenAI API-kulcs titkos kódként való konfigurálásához a mintaalkalmazáshoz:
dotnet user-secrets init dotnet user-secrets set OpenAIKey <your-OpenAI-key> dotnet user-secrets set ModelName <your-OpenAI-model-name>
Az alkalmazáskód hozzáadása
Az alkalmazás a Microsoft.Extensions.AI csomag használatával küld és fogad kéréseket az AI-modellnek.
A Program.cs fájlban adja hozzá a következő kódot az AI-modellhez való csatlakozáshoz és hitelesítéshez. A
ChatClientfüggvényhívás használatára is konfigurálva van, amely lehetővé teszi, hogy az AI-modell meghívja a .NET-függvényeket a kódban.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-5").AsIChatClient()) .UseFunctionInvocation() .Build();Hozzon létre egy új
ChatOptionsobjektumot, amely tartalmaz egy beágyazott függvényt, amelyet az AI-modell meghívhat az aktuális időjárás lekéréséhez. A függvénydeklaráció tartalmaz egy delegáltat a logika futtatásához, valamint a név- és leírásparamétereket a függvény AI-modellben való céljának leírásához.// 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")] };Adjon hozzá egy rendszerpromptot a
chatHistory-hez, hogy kontextust és utasításokat adjon a modellnek. Küldjön egy felhasználónak egy kérdést, amely megköveteli, hogy az AI-modell meghívja a regisztrált függvényt a kérdés megfelelő megválaszolásához.// 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}");Az alkalmazás futtatásához használja a
dotnet runparancsot:dotnet runAz alkalmazás kinyomtatja az AI-modell befejezési válaszát, amely tartalmazza a .NET függvény által megadott adatokat. Az AI-modell megértette, hogy a regisztrált függvény elérhető, és automatikusan meghívta a megfelelő válasz létrehozásához.
Erőforrások törlése
Ha már nincs rájuk szüksége, törölje az Azure OpenAI-erőforrást és a GPT-4 modell üzembe helyezését.
- Az Azure Portalon keresse meg az Azure OpenAI-erőforrást.
- Válassza ki az Azure OpenAI-erőforrást, majd válassza a Törléslehetőséget.