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);
}
}