Skip to content
BotServBotServ
Semantic KernelMicrosoftFramework de AgentesPluginsPlanner

Semantic Kernel: Framework de Agentes de Microsoft

Semantic Kernel para agentes de IA. Framework de Microsoft para agentes, plugins, planificador y ejemplos prácticos.

S

schutzgeist

5 min read
Semantic Kernel: Framework de Agentes de Microsoft

Semantic Kernel: Framework de Agentes de Microsoft

Qué cubre este artículo sobre Semantic Kernel

  • Qué es Semantic Kernel y cómo funciona.
  • Cómo construir agentes con Semantic Kernel.
  • Plugins, Planners y Memory para agentes.
  • Casos de uso prácticos para diferentes aplicaciones.
  • Buenas prácticas para integración empresarial y producción.

Introducción: Semantic Kernel explicado

Semantic Kernel es el framework de Microsoft para agentes de IA. Conecta LLMs con plugins (herramientas), planners (orquestación) y memory (contexto). Para aplicaciones empresariales con .NET y Python.

Este artículo está dirigido a desarrolladores que desean construir agentes con Semantic Kernel. Encontrarás fundamentos en Frameworks de Agentes de IA y LangChain.

¿Por qué necesito Semantic Kernel?

Imagina que construyes un agente empresarial: debe usar tu CRM, tu ERP y tus APIs internas. Semantic Kernel ofrece integración empresarial, planners para flujos de trabajo complejos y memory para el contexto. Para el stack de Microsoft, es la opción preferida.

Semantic Kernel en resumen

Semantic Kernel = Framework de agentes de Microsoft. Plugins para herramientas, planners para orquestación, memory para contexto. Para .NET y Python, enfocado en empresas.

La idea central es: integración empresarial para agentes de IA.

¿Para quién es este artículo?

  • Desarrolladores .NET que construyen agentes.
  • Equipos empresariales que utilizan el stack de Microsoft.
  • Desarrolladores Python que usan SK para agentes.
  • DevOps que despliegan agentes en entornos empresariales.

Términos importantes

  • Semantic Kernel - Framework de agentes de Microsoft. Cuándo es útil: para agentes empresariales.
  • Plugin - Herramienta/integración. Cuándo es útil: para funcionalidad.
  • Planner - Orquestación. Cuándo es útil: para flujos de trabajo complejos.
  • Memory - Contexto. Cuándo es útil: para estado.
  • Ollama - Servidor de modelos local. Cuándo es útil: para modelos locales.

Configuración

Python

pip install semantic-kernel
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion

# Crear kernel
kernel = Kernel()

# Añadir LLM (Ollama)
kernel.add_service(OpenAIChatCompletion(
    service_id="ollama",
    ai_model_id="llama3.1",
    endpoint="http://ollama:11434/v1",
    api_key="not-needed"
))

C# / .NET

using Microsoft.SemanticKernel;

// Crear kernel
var kernel = Kernel.CreateBuilder()
    .AddOpenAIChatCompletion(
        modelId: "llama3.1",
        endpoint: new Uri("http://ollama:11434/v1"),
        apiKey: "not-needed")
    .Build();

Caso práctico 1: Crear un plugin

from semantic_kernel.functions import kernel_function

class MyPlugin:
    """Plugin personalizado para Semantic Kernel"""

    @kernel_function(
        name="get_weather",
        description="Obtener el clima"
    )
    def get_weather(self, location: str) -> str:
        """Obtener el clima para una ubicación"""
        # Llamada a API
        return f"Clima en {location}: 22°C, soleado"

    @kernel_function(
        name="send_email",
        description="Enviar correo electrónico"
    )
    def send_email(self, to: str, subject: str, body: str) -> str:
        """Enviar correo electrónico"""
        # Lógica de correo
        return f"Correo enviado a {to}"

# Añadir plugin al kernel
kernel.add_plugin(MyPlugin(), plugin_name="my_plugin")

Caso práctico 2: Planner para flujos de trabajo complejos

from semantic_kernel.planners import SequentialPlanner

# Crear planner
planner = SequentialPlanner(kernel)

# Definir objetivo
goal = "Investiga el tema, analiza los datos y escribe un informe."

# Crear plan
plan = await planner.create_plan_async(goal)

# Ejecutar plan
result = await plan.invoke_async()

Caso práctico 3: Memory para contexto

from semantic_kernel.memory import SemanticTextMemory
from semantic_kernel.connectors.ai.open_ai import OpenAITextEmbedding

# Añadir memory
memory = SemanticTextMemory(
    storage=VolatileMemoryStore(),
    embeddings_generator=OpenAITextEmbedding(
        service_id="embeddings",
        ai_model_id="text-embedding-ada-002",
        endpoint="http://ollama:11434/v1",
        api_key="not-needed"
    )
)

# Guardar información
await memory.save_information_async(
    collection="documents",
    text="El cliente Max Mustermann realizó un pedido el 15.03.",
    id="doc1"
)

# Recuperar información
results = await memory.search_async(
    collection="documents",
    query="¿Cuándo hizo Max su pedido?"
)

Caso práctico 4: Agente con plugins y memory

class SemanticKernelAgent:
    """Agente con Semantic Kernel"""

    def __init__(self):
        self.kernel = Kernel()
        self.setup_services()
        self.setup_plugins()
        self.setup_memory()

    async def run(self, task):
        """Bucle del agente"""
        # Recuperar memory (contexto)
        context = await self.memory.search_async(
            collection="context",
            query=task
        )

        # Invocar plugin o LLM directamente
        if self.needs_tool(task):
            result = await self.kernel.invoke_async(
                plugin_name="my_plugin",
                function_name="relevant_function",
                task=task,
                context=context
            )
        else:
            result = await self.llm.complete_async(task, context)

        # Guardar en memory
        await self.memory.save_information_async(
            collection="context",
            text=f"Task: {task}, Result: {result}",
            id=f"task_{datetime.now().isoformat()}"
        )

        return result

Semantic Kernel vs. LangChain

AspectoSemantic KernelLangChain
LenguajeC#, PythonPython, JS
EnfoqueEmpresarialGeneral
PlannerSí, dedicadoNo, manual
MemorySí, dedicadoSí, varios
IntegraciónStack de MicrosoftMuchas integraciones
ComunidadCrecienteComunidad grande
Mejor paraEmpresarial, .NETAgentes generales

Notas de seguridad

  • API Keys: Para APIs de OpenAI, usa variables de entorno para secretos, no en el código.
  • Permisos de plugins: Los plugins deben verificar permisos. Ver Permisos MCP.
  • Seguridad de memory: Memory puede contener datos sensibles. Almacena de forma segura.
  • Auditoría: Registra todas las acciones del agente. Ver Audit Logging.

Trampa típicas

  • Planners complejos: Los planners pueden crear planes complejos y difíciles de entender. Mantén simplicidad.
  • Tamaño de memory: Memory puede crecer. Se necesita una estrategia de limpieza.
  • Dependencias de plugins: Los plugins pueden tener dependencias externas. Documenta.
  • Empresarial vs. Open Source: SK está enfocado en empresas. Para proyectos de código abierto, LangChain o CrewAI podrían ser mejores.
  • .NET vs. Python: SK es más fuerte en .NET. Para solo Python, LangChain podría ser mejor.

Enlaces relacionados

Puntos clave:

  • Semantic Kernel = Framework de agentes empresariales de Microsoft.
  • Plugins para herramientas, planners para orquestación, memory para contexto.
  • Para .NET y Python, enfocado en empresas.
  • Para el stack de Microsoft y aplicaciones empresariales.
  • Para proyectos de código abierto, LangChain o CrewAI podrían ser mejores.

FAQ

¿Qué es Semantic Kernel?

Framework de Microsoft para agentes de IA: plugins para herramientas, planners para orquestación, memory para contexto. Para .NET y Python, enfocado en empresas.

¿Semantic Kernel o LangChain?

SK para empresas y .NET. LangChain para agentes generales y Python. SK tiene planners y memory dedicados, LangChain es más flexible.

¿Qué son los plugins?

Herramientas e integraciones para el agente: CRM, correo, APIs, bases de datos. Los plugins extienden las capacidades del agente.

¿Qué es un Planner?

Orquestación para flujos de trabajo complejos: el planner divide un objetivo en pasos, selecciona plugins y coordina la ejecución.

¿Qué es Memory?

Contexto para el agente: almacena información y la recupera según sea necesario. Para estado y coherencia entre llamadas del agente.

¿Necesito .NET?

No, SK también existe para Python. Pero .NET es el lenguaje principal para SK. Para solo Python, LangChain podría ser mejor.

¿Es SK adecuado para empresas?

Sí, SK está enfocado en empresas: integración con el stack de Microsoft, planners para flujos complejos, memory para contexto, documentación sólida.

¿Cuánto cuesta Semantic Kernel?

Gratuito. SK es de código abierto (licencia MIT). Para Azure OpenAI, pagas por las APIs. Para modelos locales, solo costos de hardware.

Fuentes y lecturas adicionales

Volver al blog
Share:

Entradas relacionadas