# 8.5 企业级集成：与现有系统整合

在小团队与大型企业环境中，由于合规、安全、技术栈限制（如必须用 Java/.NET），引入智能体技术往往面临巨大阻力。

一类企业级智能体 SDK 正是为了解决这一问题：它们不是要颠覆现有架构，而是作为 **“AI 编排层”** 平滑嵌入既有系统。

> **重要变化**：Microsoft Agent Framework 已成为 Semantic Kernel 与 AutoGen 之后的统一智能体框架方向。由于 SDK 版本和迁移策略变化很快，本节只保留稳定的架构差异和代码形态；实际项目应以 Microsoft 官方文档和当前 release notes 选择版本。

## 8.5.1 企业级智能体 SDK 的核心理念

这类 SDK 往往采用传统软件工程的抽象方式，把 LLM 能力组织为可组合的构件：

### Kernel（内核对象）

系统的核心对象，负责管理服务、插件和执行上下文。它更适合作为一个轻量的运行时容器按次创建，而不是长期持有的单例；因为插件集合是可变的，官方也更推荐按使用周期创建和释放 Kernel。

### Plugins（插件化业务能力）

很多企业 SDK 倾向于把工具称为 Plugins（插件），强调复用现有业务代码。这体现了它的定位：**将现有的业务代码“插件化”给 AI 使用**。

* 一个 Plugin 就是一个普通的 C#/Python 类。
* 只要给函数加上 `@kernel_function` 装饰器，它就变成了 AI 可调用的技能。

### Function Calling（函数调用编排）

现代企业 SDK 更常把编排建立在 **函数调用（Function Calling）** 上：模型根据用户目标自动选择已注册的插件函数，运行时再负责执行、回填结果与继续推理。相比早期的 Planner 抽象，这种方式更贴近主流模型的原生能力，也更容易跨模型迁移。

### 生态演进

* **Semantic Kernel 1.x 时代**：成熟稳定，适合存量生产环境。
* **Microsoft Agent Framework 时代**（新方向）：统一了 Semantic Kernel 与 AutoGen，提供更强的事件驱动与多智能体协作能力。

## 8.5.2 实战：为 ERP 系统添加 AI 助手

假设有一个传统的 ERP 系统，现在想给它加一个“自然语言查询库存”的功能。

### 步骤 1: 定义插件

你不需要重写业务逻辑，只需要简单封装现有的 API。

```python
from semantic_kernel.functions import kernel_function

class InventoryPlugin:
    @kernel_function(
        description="根据产品ID查询当前库存数量",
        name="GetStockCount"
    )
    def get_stock_count(self, product_id: str) -> int:
        # 这里调用旧系统的 API 或数据库

        print(f"Checking database for {product_id}...")
        return 42

    @kernel_function(
        description="当库存低于阈值时发送补货邮件",
        name="SendRestockEmail"
    )
    def send_restock_email(self, product_id: str, quantity: int) -> str:
        return f"Email sent for {quantity} units of {product_id}"
```

### 步骤 2: 定义语义函数

有些逻辑适合写代码（如查库），有些逻辑适合问 AI（如写邮件）。这类 SDK 允许你把 Prompt 也定义为函数。

```python

# 定义一个写邮件的 Prompt 模板

email_prompt = """
请为产品 {{$product_name}} 写一封补货申请邮件。
当前库存: {{$current_stock}}
建议补货: {{$amount}}
语气: 正式且紧急
"""
```

### 步骤 3: 初始化 Kernel 并运行

以下示例展示了如何初始化 Kernel、注册服务与插件，并启用自动函数调用： 阅读时重点关注“注册服务”与“自动函数调用配置”这两段，它们决定了旧系统能力如何被模型稳定编排。

```python

# Semantic Kernel 1.x 示例：初始化 Kernel、注册服务与插件，并启用自动函数调用

import os
from semantic_kernel import Kernel
from semantic_kernel.connectors.ai.open_ai import OpenAIChatCompletion
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.prompt_execution_settings import PromptExecutionSettings

async def main():
    # 1. 初始化 Kernel

    kernel = Kernel()

    # 2. 配置 AI 服务（具体方法名请按当前 release notes 核对）

    service_id = "default"
    kernel.add_service(
        OpenAIChatCompletion(
            service_id=service_id,
            ai_model_id="gpt-5.5",
            api_key=os.getenv("OPENAI_API_KEY"),
        )
    )

    # 3. 注册插件

    # 导入原生插件

    kernel.import_plugin_from_object(InventoryPlugin(), "Inventory")

    # 导入语义插件 (Prompt)

    kernel.add_function(
        plugin_name="Office",
        function_name="WriteEmail",
        prompt=email_prompt
    )

    # 4. 启用自动函数调用
    settings = PromptExecutionSettings()
    settings.function_choice_behavior = FunctionChoiceBehavior.Auto()

    # 用户的模糊指令
    goal = "查询某产品的库存，如果低于阈值，就生成一封补货申请邮件。"

    # 模型会在对话循环中自动选择 Inventory 与 Office 函数
    result = await kernel.invoke_prompt(goal, settings=settings)

    print(result)

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())
```

> **API 变更说明**：
>
> * `add_model_service()` 已改为 `add_service()`（请以当前 Semantic Kernel release notes 为准）
> * `FunctionChoiceBehavior` 保持稳定，支持 `Auto()`、`Required()` 与 `None()` 三种模式
> * `create_function_from_prompt()` 已改为 `add_function()`

## 8.5.3 企业级特性

### 多语言与技术栈适配

企业级 SDK 往往提供多语言绑定或多运行时支持，便于在既有技术栈内落地。Semantic Kernel 提供 Python、.NET（C#）与 JavaScript 支持，Microsoft Agent Framework 进一步统一跨语言体验。

### 过滤器：类似 AOP 的机制

这类 SDK 常支持类似切面编程（AOP）的过滤器机制：你可以在任何函数被调用前后插入审计、鉴权、脱敏等逻辑。

* **审计**：记录谁在什么时间调用了什么插件。
* **鉴权**：在调用敏感插件前，检查用户权限。
* **脱敏**：在把数据传给 LLM 前，自动掩盖 PII 信息。

### 连接器生态

企业落地的关键不只是“能调用工具”，而是能否与身份、权限、审计、数据源连接器体系集成。常见连接器类型包括：

* 结构化数据源（数据库、数据仓库）
* 文档系统与知识库
* 工单/协作系统
* 向量存储与检索服务

### Microsoft Agent Framework 的新增能力

Microsoft Agent Framework 在 Semantic Kernel 基础上增强了：

* **事件驱动架构**：支持更复杂的多智能体协作与实时反馈。
* **统一的中间层**：无缝整合了原 AutoGen 的群聊编排与 Semantic Kernel 的函数调用。
* **Model Context Protocol (MCP) 支持**：与开源生态的标准交互能力。
* **Agent-to-Agent (A2A) 消息传递**：跨系统的智能体通信。

## 8.5.4 企业落地常见挑战

企业部署智能体时，难点往往集中在工程与治理，而不是“能不能对话”：

* **与现有系统集成**：身份、权限、数据访问与审计如何统一？
* **数据访问与质量**：数据是否可用、可解释、可追责？
* **变更管理**：流程如何改造、岗位如何协同、如何培训与验收？
* **风险控制**：越权调用、提示词注入、数据泄露如何防护与回溯？

## 8.5.5 小结与迁移路径

企业级智能体 SDK 往往没有“炫技式”的 Demo，但更擅长把智能体能力嵌入现有 IT 架构。

它没有试图重造轮子，而是把 AI 变成了一个可以被标准软件工程调用的 **组件**。对于正在进行数字化转型的传统企业，这类 SDK 往往更适合作为“可治理、可审计、可集成”的智能体基座。

**2026 年的选择指南**：

* **维持现状**：如果已采用 Semantic Kernel 1.x，继续维护至少 1 年无压力，建议定期审视新特性。
* **逐步迁移**：考虑在新项目中试用 Microsoft Agent Framework（RC → GA），体验统一的编排模型。
* **长期规划**：Microsoft Agent Framework 代表未来方向，建议在技术选型时纳入评估。

下一节将探讨平台级智能体产品形态，重点对比平台接口与开源框架在能力边界与适用场景上的差异。

***

**下一节**: [8.6 平台级产品：接口原语与托管运行时](/agentic_ai_guide/di-san-bu-fen-gong-cheng-shi-jian-yu-luo-di/08_frameworks/8.6_platforms.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yeasy.gitbook.io/agentic_ai_guide/di-san-bu-fen-gong-cheng-shi-jian-yu-luo-di/08_frameworks/8.5_enterprise.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
