Megosztás a következőn keresztül:


.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

Előfeltételek

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.

  1. 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
    
  2. Módosítsa a könyvtárat az alkalmazásmappára:

    cd FunctionCallingAI
    
  3. 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
    
  4. 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.

  1. Egy terminálból vagy parancssorból lépjen a mintaadattár src\quickstarts\azure-openai könyvtárába.

  2. 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

  1. Nyissa meg a .NET-projekt gyökerét egy terminálból vagy parancssorból.

  2. 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.

  1. 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 a Azure 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
    
  2. 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")]
    };
    
  3. 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}");
    
  4. 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

Következő lépések