Se você trabalha com .NET e quer construir agentes de IA no Azure, o Semantic Kernel é a escolha natural da Microsoft. Não porque é a única opção, mas porque a integração com Azure OpenAI, autenticação via Managed Identity e o ecossistema .NET é nativa.
A curva de aprendizado é real. Vale o investimento para quem já está no ecossistema .NET corporativo. (com suporte também a Python e Java). Ele orquestra chamadas a LLMs, gerencia plugins (funções que o modelo pode chamar), memória e planejamento. Para equipes .NET que adotam Azure OpenAI, é a opção mais integrada ao ecossistema Microsoft.
Setup básico
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Azure.Identity;
// Criar o kernel com Azure OpenAI
var builder = Kernel.CreateBuilder();
// Com Managed Identity (recomendado para produção)
var credential = new DefaultAzureCredential();
builder.AddAzureOpenAIChatCompletion(
deploymentName: "gpt4o-prod",
endpoint: "https://oai-producao.openai.azure.com",
credentials: credential
);
var kernel = builder.Build();
Plugins: funções que o modelo pode chamar
public class AzurePlugin
{
[KernelFunction("get_resource_info")]
[Description("Obtém informações sobre um recurso Azure pelo nome")]
public async Task<string> GetResourceInfo(
[Description("Nome do recurso Azure")] string resourceName,
[Description("Resource Group")] string resourceGroup)
{
// Chamar Azure Resource Manager API
var client = new ResourcesManagementClient(new DefaultAzureCredential());
// ... implementação
return $"Recurso {resourceName} no grupo {resourceGroup}: ativo, região Brazil South";
}
}
// Registrar o plugin no kernel
kernel.Plugins.AddFromObject(new AzurePlugin(), "AzureTools");
Invocação com auto-invocação de funções
// O modelo decide quando chamar o plugin baseado na pergunta
var settings = new OpenAIPromptExecutionSettings
{
ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
};
var response = await kernel.InvokePromptAsync(
"Qual é o status da VM 'vm-producao' no Resource Group 'rg-app'?",
new KernelArguments(settings)
);
Console.WriteLine(response.ToString());
// O modelo chamará automaticamente get_resource_info e incorporará o resultado
Memória com Azure AI Search
// Adicionar memória com Azure AI Search como backend
builder.AddAzureAISearchVectorStore(
new Uri("https://search-ia-prod.search.windows.net"),
new DefaultAzureCredential()
);
// Uso
var memory = kernel.GetRequiredService<IVectorStore>();
// Salvar memória
await memory.GetCollection<string, TextSnippet>("conversas")
.UpsertAsync(new TextSnippet { Key = "conv-1", Text = "usuário preferiu respostas curtas" });
Conclusão
O Semantic Kernel oferece uma abstração de alto nível para orquestração de IA em .NET, com integração nativa com Azure OpenAI, AI Search e outros serviços cognitivos. Para equipes que já trabalham com .NET e Azure, é a escolha natural.