static async Task RunAgent()

in genai-function-calling/semantic-kernel-dotnet/Program.cs [82:125]


    static async Task RunAgent(KernelPlugin plugin)
    {
        var kernelBuilder = Kernel.CreateBuilder();
        var azureApiKey = Environment.GetEnvironmentVariable("AZURE_OPENAI_API_KEY");
        if (azureApiKey != null) {
            var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")!;
            var deployment = Environment.GetEnvironmentVariable("CHAT_MODEL")!;
            kernelBuilder.AddAzureOpenAIChatCompletion(deployment, endpoint, azureApiKey);
        } else {
            var apiKey = Environment.GetEnvironmentVariable("OPENAI_API_KEY") ?? "your-api-key";
            var model = Environment.GetEnvironmentVariable("CHAT_MODEL") ?? "gpt-4o-mini";
            var baseUrl = Environment.GetEnvironmentVariable("OPENAI_BASE_URL");
            OpenAIClientOptions? options = null;
            if (baseUrl != null) {
                options = new OpenAIClientOptions { Endpoint = new Uri(baseUrl) };
            }
            var openAIClient = new OpenAIClient(new ApiKeyCredential(apiKey), options);
            kernelBuilder.AddOpenAIChatCompletion(model, openAIClient);
        }
        var kernel = kernelBuilder.Build();

        kernel.Plugins.Add(plugin);

        ChatCompletionAgent agent = new()
        {
            Name = "version-agent",
            Kernel = kernel,
            Arguments = new KernelArguments(new OpenAIPromptExecutionSettings()
            {
                FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(),
                Temperature = 0
            }),
        };


        var chatHistory = new ChatHistory();
        chatHistory.AddUserMessage("What is the latest version of Elasticsearch 8?");

        AgentThread? thread = null;
        await foreach (ChatMessageContent response in agent.InvokeAsync(chatHistory, thread))
        {
            Console.WriteLine(response.Content);
        }
    }