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

Előfeltételek

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
    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
    
  4. Az alkalmazás megnyitása a Visual Studio Code-ban vagy a választott szerkesztőben

    code .
    

Az AI-szolgáltatás létrehozása

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

  2. Egy terminálból vagy parancssorból navigáljon a projektkönyvtár gyökeréhez.

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

  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, 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();
    
  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é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")]
    };
    
  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 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.

  1. Az Azure Portalon keresse meg az Azure OpenAI-erőforrást.
  2. Válassza ki az Azure OpenAI-erőforrást, majd válassza a Törléslehetőséget.

Következő lépések