.NET-függvények meghívása AI-modell használatával
Ebben a rövid útmutatóban egy .NET-konzol AI-csevegőalkalmazást hoz létre egy AI-modellhez való csatlakozáshoz, amelyen engedélyezve van a helyi függvényhívás. 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.
Jegyzet
A Microsoft.Extensions.AI
kódtár jelenleg előzetes verzióban érhető el.
Előfeltételek
- .NET 8.0 SDK vagy újabb – Telepítse a .NET 8.0 SDK.
- OpenAI API-kulcs szükséges 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.
- Hozzáférés Azure OpenAI szolgáltatáshoz.
- Azure Developer CLI (nem kötelező) – Az Azure Developer CLItelepítése vagy frissítése.
Jegyzet
A cikkben szereplő feladatok elvégzéséhez használhatja Szemantikus kernel is. A Szemantic Kernel egy egyszerű, nyílt forráskódú SDK, amellyel AI-ügynököket hozhat létre, és integrálhatja a legújabb AI-modelleket a .NET-alkalmazásokba.
A mintaadattár klónozása
Létrehozhat saját alkalmazást az alábbi szakaszok lépéseivel, vagy klónozhatja az összes gyorsútmutatóhoz tartozó kész mintaalkalmazásokat tartalmazó GitHub-adattárat. Ha az Azure OpenAI használatát tervezi, a minta adattár az Azure Developer CLI sablonjaként is strukturálva van, amely kiépítheti az Azure OpenAI-erőforrást.
git clone https://github.com/dotnet/ai-samples.git
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 new
paranccsal hozzon létre egy új konzolalkalmazást:dotnet new console -o FunctionCallingAI
Módosítsa a könyvtárat az alkalmazásmappára:
cd FunctionCallingAI
Telepítse a szükséges csomagokat:
dotnet add package Azure.Identity dotnet add package Azure.AI.OpenAI dotnet add package Microsoft.Extensions.AI --prerelease dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
dotnet add package Microsoft.Extensions.AI --prerelease dotnet add package Microsoft.Extensions.AI.OpenAI --prerelease dotnet add package Microsoft.Extensions.Configuration dotnet add package Microsoft.Extensions.Configuration.UserSecrets
Nyissa meg az alkalmazást a Visual Studio code-ban vagy a választott szerkesztőben
code .
Az AI-szolgáltatás létrehozása
A GitHub-mintaadattár Azure Developer CLI (azd
) sablonként van felépítve, amelyet azd
használni lehet az Azure OpenAI szolgáltatás és modell az Ön számára történő kiépítéséhez.
Egy terminálból vagy parancssorból lépjen a mintaadattár
src\quickstarts\azure-openai
könyvtárába.Futtassa a
azd up
parancsot az Azure OpenAI-erőforrások kiépítéséhez. Az Azure OpenAI szolgáltatás létrehozása és a modell üzembe helyezése több percet is igénybe vehet.azd up
azd
a mintaalkalmazáshoz szükséges felhasználói titkos kódokat is konfigurálja, például az Azure OpenAI-végpontot és a modell nevét.
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
ChatClient
függvényhívás használatára is konfigurálva van, így a kódban lévő .NET-függvényeket az AI-modell meghívhatja.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));
Jegyzet
DefaultAzureCredential a helyi eszközökből keres hitelesítési adatokat. Ha nem a
azd
sablont használja az Azure OpenAI-erőforrás kiépítéséhez, hozzá kell rendelnie aAzure AI Developer
szerepkört ahhoz a fiókhoz, amelyet a Visual Studióba vagy az Azure CLI-be való bejelentkezéshez használt. További információért lásd: Az Azure AI-szolgáltatásokhoz való hitelesítés .NET-tel.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).AsChatClient(model ?? "gpt-4o")) .UseFunctionInvocation() .Build(); // Add a new plugin with a local .NET function
Hozzon létre egy új
ChatOptions
objektumot, 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ény deklarációja tartalmaz egy delegáltat a logikai és a név- és leírási paraméterek futtatásához, hogy leírja a függvény célját az AI-modell számára.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")] };
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 run
parancsot:dotnet run
Az alkalmazás a .NET függvény által megadott adatokat tartalmazó AI-modellből nyomtatja ki a befejezési választ. 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 szüksége a mintaalkalmazásra vagy erőforrásokra, távolítsa el a megfelelő üzembe helyezést és az összes erőforrást.
azd down