Enterprise Plugins and Connectors from Semantic Kernel
Semantic Kernel taught enterprise teams to package capabilities as plugins and to swap connectors for models and services behind a kernel.
Busque em todas as páginas da documentação
Semantic Kernel taught enterprise teams to package capabilities as plugins and to swap connectors for models and services behind a kernel.
Microsoft Agent Framework keeps the capability idea but simplifies the surface: tools attach directly to agents, chat clients replace many connector hierarchies, and optional SK compatibility helpers ease migration.
Map SK plugins to Agent Framework tools (@tool or plain functions), choose a provider chat client (Foundry, Azure OpenAI, OpenAI, and others), attach least-privilege tools per agent, and use middleware plus MCP/hosted tools where SK filters and remote skills used to live.
@tool with clear descriptions.Kernel + service registration with a chat client (FoundryChatClient, OpenAIChatClient, Azure-routed clients - verify names at build).tools=[...] instead of attaching plugins to a kernel.KernelFunction assets via SK compatibility helpers when available (as_agent_framework_tool - requires sufficiently new SK).SK-style plugin class → AF tools on an agent:
from typing import Annotated
from agent_framework import tool
from agent_framework.openai import OpenAIChatClient
class OrdersPlugin:
"""Enterprise-shaped capability group (not an SK Kernel plugin type)."""
def __init__(self, api_client):
self.api = api_client
@tool
def get_order_status(
self,
order_id: Annotated[str, "Customer order id"],
) -> str:
"""Return fulfillment status for an order."""
return self.api.status(order_id)
@tool
def list_open_orders(
self,
customer_id: Annotated[str, "Customer id"],
) -> str:
"""List open orders for a customer."""
return self.api.open_orders(customer_id)
plugin = OrdersPlugin(api_client=...) # inject real client / credentials in host
client = OpenAIChatClient(model="gpt-4o") # verify at build
agent = client.as_agent(
name="OrderSupport",
instructions="Answer order questions using tools. Never invent status.",
tools=[plugin.get_order_status, plugin.list_open_orders],
)Connector choice sketch:
# OpenAI-shaped
from agent_framework.openai import OpenAIChatClient
client = OpenAIChatClient(model="gpt-4o")
# Foundry-shaped
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
client = FoundryChatClient(
project_endpoint=ENDPOINT,
model=DEPLOYMENT,
credential=AzureCliCredential(),
)| Semantic Kernel | Agent Framework |
|---|---|
Kernel hosts plugins and services | Chat client + agent hold tools and options |
[KernelFunction] / @kernel_function | Plain functions or @tool |
| Plugin collections on the kernel | tools=[...] on agent or per-run |
| Filters | Middleware (agent / function / chat) |
| Many agent subclasses per host | Unified Agent + provider clients |
You still group related methods on a class for DI and shared clients. The framework no longer requires that class to be a formal kernel plugin to be useful.
| Category | Examples | Notes |
|---|---|---|
| Function tools | CRUD wrappers, calculators, internal APIs | Default path for enterprise logic |
| Hosted tools | Code interpreter, file search, web search | Provider-dependent matrix - verify |
| MCP tools | Local stdio or HTTP MCP servers | Shared tool servers across apps |
| Foundry toolboxes / connectors | Bing grounding, Azure AI Search, SharePoint, Fabric (preview flags vary) | Great for Microsoft estates; check preview status |
| Agent-as-tool | Specialist agents exposed as functions | Hierarchical skills without SK plugin nesting hacks |
SK connector configuration moves into chat client constructors and environment settings. Agent Framework documents first-party paths for Foundry, Azure OpenAI, OpenAI, and expanding provider coverage (Anthropic, Bedrock, Gemini, Ollama - treat availability as version-sensitive).
Pick clients by:
Official SK → AF guides show converting KernelFunction instances to Agent Framework tools with helpers such as .as_agent_framework_tool(...) on sufficiently new Semantic Kernel versions.
Use that bridge for gradual cuts, not as a permanent dual-runtime architecture.
Vector store search functions created in SK can often be adapted the same way for hybrid retrieval while you re-home agents.
__init__; never prompt the model for keys.approval_mode patterns (verify defaults at build).| Approach | When to use | Trade-off |
|---|---|---|
Native AF @tool functions | New code, cleanest API | Rewrite SK attributes |
SK KernelFunction compatibility bridge | Incremental migration | Temporary dual dependency |
| MCP shared servers | Cross-team reusable tools | Network and server ops |
| Foundry hosted tools/toolboxes | Azure-standardized estates | Provider lock-in and preview flags |
| Agent-as-tool | Multi-skill products | Nested cost and latency |
Not for new Agent Framework agents. Prefer chat clients and tools. Keep SK only while bridging legacy functions.
Each model-callable method becomes a tool. Grouping methods on a class is optional packaging, not a required plugin type.
Yes. Agent Framework allows tools on construction and additional tools at run time depending on API - verify keyword parameters at build.
Middleware at agent, function, and chat layers. See the governance page in this section for patterns.
Inject one API client into a tools class, or expose Orders via MCP, then attach the same tool surface with different allowlists per agent.
No, but they accelerate Microsoft-centric integration (search, SharePoint, Fabric). Non-Azure enterprises can stay on function tools and MCP.
Semantic version the shared package or MCP server. Log tool name + version in traces. Avoid silent breaking schema changes.
Yes via agent-as-tool. Keep depth shallow and log the chain for cost control.
Prompt-templated kernel functions can be bridged in some migration paths, but long term prefer explicit agents or plain code for maintainability.
Do not attach admin tools to user-facing agents. Enforce allowlists in middleware and separate privileged agents behind human approval.
Enterprise OpenAPI → tools pipelines vary by version and sample. Prefer maintained generators or hand-written thin wrappers with validated schemas - verify current samples at build.
Put endpoints, deployments, and auth mode in config/env. Keep client construction in a small factory module shared by agents and workflows.
Stack versions: Pins from the category manifest (verify at build): OpenRouter (~315+ models, July 2026 pricing/fees); LangGraph 1.0+; CrewAI 1.14+; Microsoft Agent Framework 1.0; Vercel AI SDK 6; Pydantic AI (latest); LlamaIndex (latest); OpenAI Agents SDK (latest + MCP); MCP (Linux Foundation governance); A2A (HTTP+SSE+JSON-RPC 2.0); Solana
@solana/web3.js+@solana/spl-token.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026