Semantic Kernel: orquestrar agentes de IA com .NET e Python
João Barros
26 de December de 2025
2 min de leitura
O Semantic Kernel é o SDK open-source da Microsoft para construir aplicações de IA que combinam LLMs com código nativo, plugins, memória semântica e orquestração de agentes. É a fundação técnica por baixo do Microsoft Copilot.
Conceitos fundamentais
Kernel → motor central que coordena tudo
Plugin → colecção de funções (nativas ou semânticas)
KernelFunction → função individual (nativa em C#/Python ou prompt template)
Memory → contexto vectorial persistente (RAG interno)
Planner → selecciona e encadeia funções automaticamente para cumprir um objectivo
Criar kernel e chamar LLM
import asyncio
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
kernel = Kernel()
kernel.add_service(AzureChatCompletion(
deployment_name="gpt-4o",
endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=os.environ["AZURE_OPENAI_KEY"]
))
# Função semântica inline
resposta = await kernel.invoke_prompt(
"Traduz este texto para inglês formal: {{$input}}",
input="O relatório de vendas está pronto para revisão."
)
print(resposta)
Plugin nativo — expor código ao LLM
from semantic_kernel.functions import kernel_function
class VendasPlugin:
@kernel_function(description="Retorna vendas totais de um mês")
def get_vendas_mes(self, mes: str, ano: str) -> str:
# Lógica real: query SQL, API, etc.
return f"Vendas de {mes}/{ano}: 125.430€"
kernel.add_plugin(VendasPlugin(), plugin_name="vendas")
# O LLM pode agora chamar esta função automaticamente quando relevante
resposta = await kernel.invoke_prompt(
"Qual foi o total de vendas em Março de 2024?",
# O planner decide chamar get_vendas_mes(mes='Março', ano='2024')
)
Memória semântica
from semantic_kernel.memory import SemanticTextMemory
memory = SemanticTextMemory(storage=..., embeddings_generator=...)
await memory.save_information("politicas", id="ferias", text="Os colaboradores têm 22 dias de férias por ano...")
# Recuperar contexto relevante
results = await memory.search("politicas", "quantos dias de férias tenho?")
print(results[0].text)
Conclusão
O Semantic Kernel é o SDK mais maduro para construir assistentes empresariais com LLMs na stack Microsoft. A abstracção de plugins permite que o LLM chame código real (queries SQL, APIs) em vez de apenas gerar texto — isso é o que diferencia um chatbot de um agente útil.