Semantic Kernel

微软开源的多语言 SDK,用于构建与编排 AI 智能体及多智能体系统。

Star 数
★ 29k
最近更新
今天
License
MIT
主语言
C#

30 秒速览

运行形态
代码库 / SDK开发框架
可在哪里用
通用 · 跨平台OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Python 3.10+.NET 10.0+JDK 17+Azure OpenAI API 密钥或 OpenAI API 密钥Shell / 命令行网络访问本地文件系统
典型场景
企业开发团队在现有 .NET 或 Python 后端中加入能调用内部业务函数的对话助手
不适合
  • 希望长期投入维护的团队:官方已宣布以 Microsoft Agent Framework 作为继任者,需要评估迁移成本
  • 只想开箱即用、不愿写代码的最终用户

这个 Agent 能做什么,适合哪些场景?

Semantic Kernel 是微软以 MIT 许可证开源的模型无关 SDK,帮助开发者在自己的应用中集成大模型能力并构建 AI 智能体。它提供 Python、.NET 与 Java 三个版本,核心抽象包括 Kernel、ChatCompletionAgent、插件(kernel_function / KernelFunction)以及多智能体编排。开发者可以为智能体挂载原生函数、提示模板、OpenAPI 规范或 MCP 服务,并接入 Azure AI Search、Elasticsearch、Chroma 等向量库做记忆检索。它同时支持文本、视觉与音频输入,也能通过 Ollama、LMStudio 或 ONNX 在本地运行。需要注意的是,README 已声明 Semantic Kernel 由 Microsoft Agent Framework 接棒,后者已发布 1.0 正式版,官方提供了迁移指南。

开发者先通过 Kernel.CreateBuilder() 或直接实例化 ChatCompletionAgent 构建智能体,并配置 AzureChatCompletion、OpenAIChatCompletion 等连接器选择底层模型。智能体可加载插件:用 @kernel_function 装饰的 Python 方法或被 [KernelFunction] 标注的 .NET 方法会把本地能力暴露给模型,模型据此决定调用哪个函数,PromptExecutionSettings 中的 FunctionChoiceBehavior.Auto() 负责自动选择。多智能体场景下,可以把 BillingAgent、RefundAgent 等专用智能体作为插件挂到 TriageAgent 上,由后者评估用户请求并转交处理。运行结果通过 agent.get_response() 或 InvokeAsync() 返回 ChatMessageContent,并借助 ChatHistoryAgentThread 保持多轮上下文。整个流程以库的形式嵌入调用方进程,模型调用经由配置的云端或本地端点发出。

  1. 企业开发团队在现有 .NET 或 Python 后端中加入能调用内部业务函数的对话助手
  2. 需要把用户请求按主题分派给不同专职智能体(如计费、退款)的客服系统
  3. 希望用向量数据库(Azure AI Search、Elasticsearch、Chroma)为智能体增加记忆与知识检索的应用
  4. 需要同时支持文本、图像、语音输入的多模态应用开发
  5. 出于合规要求需要用 Ollama、LMStudio 或 ONNX 在本地部署模型的团队
  6. 已在用 Semantic Kernel 并计划按官方迁移指南过渡到 Microsoft Agent Framework 的团队

如何安装或部署这个 Agent?

先设置模型服务的环境变量。Azure OpenAI:

export AZURE_OPENAI_API_KEY=AAA....

或直接使用 OpenAI:

export OPENAI_API_KEY=sk-...

Python 安装(要求 Python 3.10+):

pip install semantic-kernel

.NET 安装(要求 .NET 10.0+):

dotnet add package Microsoft.SemanticKernel
dotnet add package Microsoft.SemanticKernel.Agents.Core

Java 需参照 semantic-kernel-java 仓库中的 BUILD.md 构建,要求 JDK 17+。支持 Windows、macOS 与 Linux。

如何使用这个 Agent?

用 Python 创建一个最小可运行的对话智能体:

import asyncio
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion

async def main():
    agent = ChatCompletionAgent(
        service=AzureChatCompletion(),
        name="SK-Assistant",
        instructions="You are a helpful assistant.",
    )

    response = await agent.get_response(messages="Write a haiku about Semantic Kernel.")
    print(response.content)

asyncio.run(main())

为智能体添加插件并启用自动函数调用,可将插件作为参数传入:

from semantic_kernel.functions import kernel_function, KernelArguments
from semantic_kernel.connectors.ai.open_ai import OpenAIChatPromptExecutionSettings

class MenuPlugin:
    @kernel_function(description="Provides a list of specials from the menu.")
    def get_specials(self) -> str:
        return "Special Soup: Clam Chowder"

agent = ChatCompletionAgent(
    service=AzureChatCompletion(),
    name="SK-Assistant",
    instructions="You are a helpful assistant.",
    plugins=[MenuPlugin()],
    arguments=KernelArguments(OpenAIChatPromptExecutionSettings()),
)

出错时先检查 API 密钥环境变量是否正确、Azure OpenAI 部署或 OpenAI 模型是否有访问权限。

这个 Agent 有哪些优点和局限?

优点
  • 模型无关:内置 OpenAI、Azure OpenAI、Hugging Face、NVidia 等连接器,并可通过 Ollama、LMStudio、ONNX 本地运行
  • 插件体系成熟:支持原生代码函数、提示模板、OpenAPI 规范与 MCP 多种扩展方式
  • 多智能体编排是一等能力,可将专用智能体直接作为插件挂载到调度智能体上
  • 提供 Python、.NET、Java 多语言 SDK,并有独立的 C# 与 Python API 参考文档
  • MIT 许可证,可用于商业项目
局限
  • 官方已声明 Microsoft Agent Framework 为其继任者,长期投入存在迁移成本
  • 接入云模型需自备 Azure OpenAI 或 OpenAI 密钥并按用量付费
  • 三个语言 SDK 的 API 存在差异,示例与文档需分别查阅
  • 多智能体与插件自动调用会增加模型调用次数,进而影响延迟与成本

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Semantic Kernel 当前 51 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 29k 今天 C# OpenAI API
MassGen 多智能体协作系统 51 · 缺口较多 命令行工具免费 + 模型费 ★ 1.1k 4 个月前 Python Codex · Claude Code · OpenAI API · Claude API
Polter 多终端智能体监督器 80 · 表现良好 桌面应用免费 + 模型费 ★ 20 今天 Zig Claude Code
Spring AI Alibaba 53 · 缺口较多 开发框架免费 + 模型费 ★ 11k 13 天前 Java —

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
51/ 100 五分制 2.6 / 5
信任安全 12/29
可靠稳定 9/14
适用触发 10/18
规范维护 10/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全12 / 29 · 2.1/5

信任维度证据有限。least_privilege 得 2:CI 工作流中 GitHub App 令牌按 permission profile 细分(issues/pull-requests/team-check 等),测试显示未知 profile 在签名前被拒绝,体现最小权限设计;但这是仓库自身 CI 的权限,而非 Agent 产品运行时对用户数据的权限控制。user_confirmation 得 1:README 示例中插件(如 MenuPlugin)被自动调用(FunctionChoiceBehavior.Auto),未见对工具调用的确认机制说明。data_flow_transparency 得 1:README 仅说明连接 OpenAI/Azure 等,未描述数据流向、日志或遥测。sensitive_data_handling 得 1:仅提示用环境变量存放 API key,无脱敏、存储或保留策略说明。dependency_security 得 1:无依赖清单或漏洞扫描证据,SECURITY.md 仅提供漏洞上报渠道。external_effects 得 1:插件可执行本地代码与外部 API 调用,但无副作用边界说明。rollback 得 1:无回滚或撤销机制描述。source_attribution 得 2:MIT 许可证与 Microsoft 版权声明清晰,SECURITY.md 与行为准则齐全。

可靠稳定9 / 14 · 3.2/5

self_consistency 得 2:README 的 Python/.NET 示例结构一致,ADR 文档对 API 变更做了权衡分析。dependency_availability 得 2:给出 PyPI/NuGet 包名与安装命令,Java 指向独立仓库构建说明。failure_messages 得 2:README 故障排查列出认证错误与模型可用性问题,CI 测试显示对 403/404、空签名、空令牌等错误有明确报错;但产品运行时错误处理细节未在证据中展开。

适用触发10 / 18 · 2.8/5

audience_and_scenarios 得 2:面向开发者,覆盖单 Agent、多 Agent、插件、向量库、多模态等场景。capability_boundaries 得 2:README 明确系统要求(Python 3.10+、.NET 10+、JDK 17+)与支持模型/本地部署选项。trigger_precision 得 1:Agent 触发依赖 LLM 函数选择,未见对触发条件的精确控制说明。environment_fit 得 2:支持 Windows/macOS/Linux 与 Ollama/LMStudio/ONNX 本地部署。

规范维护10 / 18 · 2.8/5

information_architecture 得 2:README 结构清晰,含安装、快速开始、故障排查、社区、许可证。install_notes 得 2:给出 pip/dotnet 安装与环境变量设置,Java 指向外部构建文档。naming_stability 得 1:README 顶部声明项目已由 Microsoft Agent Framework 接替,存在迁移与命名演进风险,API 稳定性承诺指向后继项目。examples_and_faq 得 2:提供多语言示例与 FAQS.md(夜间构建获取)。known_limitations 得 1:仅提及认证与模型可用性两类问题,未系统列出限制。license 得 3:LICENSE 文件为完整 MIT 文本,版权归属明确。versioning_changelog 得 1:无 CHANGELOG,仅徽章显示包版本,FAQ 提及 nightly 版本格式。maintenance_responsibility 得 2:Microsoft 官方组织维护,SECURITY.md 与贡献指南明确,但项目处于向 MAF 迁移的过渡期。

有效结果7 / 13 · 2.7/5

output_usability 得 2:示例可直接复制运行,含预期输出。marginal_value 得 2:作为模型无关的 Agent 编排 SDK 提供插件、多 Agent、向量库等集成价值。cost_benefit 得 1:未提供令牌消耗、延迟或成本相关说明,ADR 仅讨论 token usage 数据结构而非成本控制。

证据核验3 / 8 · 1.9/5

claim_traceability 得 1:README 的“企业级可靠性”等主张缺少仓库内可核验依据,多为指向外部文档的链接。cross_source_corroboration 得 1:README、ADR、FAQ、SECURITY 之间主题相关但未相互印证具体主张。fact_inference_separation 得 1:README 将营销性描述与事实性说明混排,未区分已验证与推断内容。

风险与缓解建议
  • README 声明项目已由 Microsoft Agent Framework 接替,长期维护与 API 稳定性可能转移至后继项目,采用前应评估迁移成本。
  • 示例中插件被自动调用(FunctionChoiceBehavior.Auto),未见工具调用确认或权限边界说明,接入敏感操作时需自行加确认层。
  • 未提供依赖清单或漏洞扫描证据,SECURITY.md 仅为漏洞上报渠道,需自行审计依赖。
  • 无成本、令牌消耗或延迟说明,生产使用前应自行评估成本。
  • 本评估为静态源码审阅,置信度低,未执行任何代码或测试。
证据充分度:低 评估于 2026年10月20日 审查版本 7a92cd4e7c27
查看完整评分方法 →

常见问题

使用 Semantic Kernel 需要付费吗?
SDK 本身以 MIT 许可证免费开源。但默认示例连接 Azure OpenAI 或 OpenAI,需要自备 API 密钥并按用量付费;若改用 Ollama、LMStudio 或 ONNX 在本地运行模型,则模型成本取决于本地算力。
现在开始新项目还应该选 Semantic Kernel 吗?
README 明确说明 Semantic Kernel 已由 Microsoft Agent Framework 接棒,MAF 已发布 1.0 正式版并提供稳定 API 与长期支持承诺。新项目宜先评估 MAF;已有 SK 项目可参考官方提供的迁移指南。
它支持哪些编程语言和运行环境?
提供 Python、.NET 和 Java 三类 SDK,系统要求分别为 Python 3.10+、.NET 10.0+、JDK 17+,操作系统支持 Windows、macOS 和 Linux。
智能体如何访问本地代码或外部服务?
通过插件机制:Python 中用 @kernel_function 装饰方法,.NET 中用 [KernelFunction] 标注并注册到 kernel.Plugins;也可接入 OpenAPI 规范或 MCP 服务。配合 FunctionChoiceBehavior.Auto(),模型会自行决定调用哪个函数。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents