Skip to content

智能体框架一览

课程视频预览

点击上方图片可观看原课程视频。

智能体框架是帮助开发者更简单地创建、部署和管理智能体的工具集合,通常提供现成的组件、抽象和调试能力,使复杂的多智能体系统更易落地。

学习目标

  • 理解智能体框架在 AI 开发流程中的角色。
  • 学会利用框架快速构建、迭代和优化智能体。
  • 了解 AutoGen、Semantic Kernel、Azure AI Agent Service 三者的侧重点与差异。
  • 明白这些框架如何与现有 Azure 生态或其他工具集成。

智能体框架能带来什么

传统的 AI 框架可以帮助应用完成:

  • 个性化:分析用户行为与偏好,提供个性化推荐与内容。
  • 自动化与效率:处理重复任务、优化流程,释放人工投入。
  • 更好的交互体验:通过语音识别、自然语言处理等能力提升用户体验。

智能体框架则在此基础上进一步提供:

  • 智能体协同:快速构建多个智能体协作的系统,支持通信与协调。
  • 任务编排与管理:封装多步骤任务的分配、反馈与异常处理。
  • 上下文理解与自适应:让智能体能够读懂场景变化并作出响应。

换言之,智能体框架让自动化迈入“可适应”“可协作”的阶段。

如何快速原型、迭代与优化

多数框架都会提供三类能力,帮助你快速验证想法:

  • 模块化组件:SDK 内置模型连接器、记忆模块、函数调用、提示模板等,可直接拼装。如下例所示,利用 Semantic Kernel 的自动函数调用,就能构建旅行助手原型。
python
# Semantic Kernel Python 示例

import asyncio
from typing import Annotated

from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.contents import ChatHistory
from semantic_kernel.functions import kernel_function
from semantic_kernel.kernel import Kernel

chat_history = ChatHistory()
chat_history.add_user_message("I'd like to go to New York on January 1, 2025")


class BookTravelPlugin:
    """示例旅行预订插件"""

    @kernel_function(name="book_flight", description="Book travel given location and date")
    async def book_flight(
        self, date: Annotated[str, "The date of travel"], location: Annotated[str, "The location to travel to"]
    ) -> str:
        return f"Travel was booked to {location} on {date}"

kernel = Kernel()
kernel.add_plugin(BookTravelPlugin(), plugin_name="book_travel")

chat_service = AzureChatCompletion(
    deployment_name="YOUR_DEPLOYMENT_NAME",
    api_key="YOUR_API_KEY",
    endpoint="https://<your-resource>.azure.openai.com/",
)

request_settings = AzureChatPromptExecutionSettings(function_choice_behavior=FunctionChoiceBehavior.Auto())


async def main():
    response = await chat_service.get_chat_message_content(
        chat_history=chat_history, settings=request_settings, kernel=kernel
    )
    assert response is not None

    print(f"{response}")
    chat_history.add_assistant_message(response.content)


if __name__ == "__main__":
    asyncio.run(main())
csharp
// Semantic Kernel C# 示例

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.ChatCompletion;
using System.ComponentModel;
using Microsoft.SemanticKernel.Connectors.AzureOpenAI;

ChatHistory chatHistory = [];
chatHistory.AddUserMessage("I'd like to go to New York on January 1, 2025");

var kernelBuilder = Kernel.CreateBuilder();
kernelBuilder.AddAzureOpenAIChatCompletion(
    deploymentName: "NAME_OF_YOUR_DEPLOYMENT",
    apiKey: "YOUR_API_KEY",
    endpoint: "YOUR_AZURE_ENDPOINT"
);
kernelBuilder.Plugins.AddFromType<BookTravelPlugin>("BookTravel");
var kernel = kernelBuilder.Build();

var settings = new AzureOpenAIPromptExecutionSettings()
{
    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
};

var chatCompletion = kernel.GetRequiredService<IChatCompletionService>();

var response = await chatCompletion.GetChatMessageContentAsync(chatHistory, settings, kernel);

Console.WriteLine(response.Content);
chatHistory.AddMessage(response!.Role, response!.Content!);

public class BookTravelPlugin
{
    [KernelFunction("book_flight")]
    [Description("Book travel given location and date")]
    public async Task<string> BookFlight(DateTime date, string location)
    {
        return await Task.FromResult($"Travel was booked to {location} on {date}");
    }
}

上述示例展示了如何依靠框架提供的解析能力,从用户输入中提取地点与日期,完成一次自动订票任务。

  • 协作工具:诸如 AutoGen、Semantic Kernel、CrewAI 等框架支持多智能体协作。你可以为每个智能体预设专长,让它们轮流处理任务。
python
# AutoGen 示例:定义多智能体并轮询执行

agent_retrieve = AssistantAgent(
    name="dataretrieval",
    model_client=model_client,
    tools=[retrieve_tool],
    system_message="Use tools to solve tasks."
)

agent_analyze = AssistantAgent(
    name="dataanalysis",
    model_client=model_client,
    tools=[analyze_tool],
    system_message="Use tools to solve tasks."
)

termination = TextMentionTermination("APPROVE")

user_proxy = UserProxyAgent("user_proxy", input_func=input)

team = RoundRobinGroupChat([agent_retrieve, agent_analyze, user_proxy], termination_condition=termination)

stream = team.run_stream(task="Analyze data", max_turns=10)
await Console(stream)
  • 实时学习:通过反馈循环让智能体根据用户反馈或环境数据迭代策略,实现持续优化。

AutoGen:事件驱动的多智能体实验场

AutoGen 由微软研究院团队开源,强调事件驱动、分布式的智能体应用,适合多个 LLM/SLM 与工具配合,探索多智能体设计模式。

其核心概念包括:

  • 智能体:基于 Actor Model,可通过消息通信、维护自身状态并执行动作。
  • 消息与对话图:智能体之间以消息异步协作,支持灵活的对话流程。
  • 运行时:提供独立与分布式两种运行模式,负责身份、生命周期与安全隔离。
  • 多智能体协作:支持注册多种角色,如写手、审校、用户等,由 GroupChatManager 统筹。

AutoGen 常用于代码生成、数据分析、研究型助手等场景,适合快速试验多智能体策略。

Semantic Kernel:企业级编排与插件体系

Semantic Kernel 是微软推出的 AI 编排 SDK,包含智能体框架、记忆体系和丰富的插件机制,适合需要可观测、可扩展的企业级应用。

常用组件包括:

  • AI 连接器:在 Python/C# 中快速接入外部模型和数据源。
python
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
from semantic_kernel.kernel import Kernel

kernel = Kernel()
kernel.add_service(
    AzureChatCompletion(
        deployment_name="your-deployment-name",
        api_key="your-api-key",
        endpoint="your-endpoint",
    )
)
csharp
using Microsoft.SemanticKernel;

var builder = Kernel.CreateBuilder();
builder.Services.AddAzureOpenAIChatCompletion(
    "your-resource-name",
    "your-endpoint",
    "your-resource-key",
    "deployment-model");
var kernel = builder.Build();
  • 插件与提示函数:将业务逻辑封装为可调用函数,由模型在对话中按需触发。
python
from semantic_kernel.connectors.ai.open_ai.services.azure_chat_completion import AzureChatCompletion


async def main():
    from semantic_kernel.functions import KernelFunctionFromPrompt
    from semantic_kernel.kernel import Kernel

    kernel = Kernel()
    kernel.add_service(AzureChatCompletion())

    user_input = input("User Input:> ")

    kernel_function = KernelFunctionFromPrompt(
        function_name="SummarizeText",
        prompt="""
        Summarize the provided unstructured text in a sentence that is easy to understand.
        Text to summarize: {{$user_input}}
        """,
    )

    response = await kernel_function.invoke(kernel=kernel, user_input=user_input)
    print(f"Model Response: {response}")


if __name__ == "__main__":
    import asyncio
    asyncio.run(main())
csharp
var userInput = Console.ReadLine();

string skPrompt = @"Summarize the provided unstructured text in a sentence that is easy to understand.
                    Text to summarize: {{$userInput}}";

KernelFunction summarizeFunc = kernel.CreateFunctionFromPrompt(
    promptTemplate: skPrompt,
    functionName: "SummarizeText"
);

kernel.ImportPluginFromFunctions("SemanticFunctions", [summarizeFunc]);
  • 原生函数:可直接调用 C# 方法处理文件、数据库等本地资源。
csharp
public class NativeFunctions {

    [SKFunction, Description("Retrieve content from local file")]
    public async Task<string> RetrieveLocalFile(string fileName, int maxSize = 5000)
    {
        string content = await File.ReadAllTextAsync(fileName);
        if (content.Length <= maxSize) return content;
        return content.Substring(0, maxSize);
    }
}

kernel.ImportPluginFromType<NativeFunctions>();
  • 记忆体系:通过向量存储管理长期上下文,把需要让模型“记住”的事实写入记忆。

Semantic Kernel 既可用于实验多智能体流程,也适合构建生产级智能体服务。

Azure AI Agent Service:部署与运维平台

Azure AI Agent Service 是 Azure Foundry 中面向智能体的托管平台,提供模型托管、工具调用、日志与安全能力。它的优势在于:

  • 可直接接入 Azure OpenAI、Azure AI Search、Bing Search、Azure Functions 等服务。
  • 平台级别的身份、安全、监控能力,便于大规模上线。
  • 与 AutoGen、Semantic Kernel 有良好兼容性,可作为它们的运行与发布平台。

在设计落地方案时,可将其视为“部署层”,而不是唯一选择。

如何选择框架

  • AutoGen:擅长事件驱动、分布式的多智能体实验与快速迭代。
  • Semantic Kernel:提供企业级编排与插件体系,兼顾实验与生产。
  • Azure AI Agent Service:关注部署、运维与生态整合,适合作为云端承载环境。

若只想快速体验,可先用 Semantic Kernel 完成原型,再结合 Azure AI Agent Service 部署;需要探索复杂多智能体交互时,可引入 AutoGen 的协作模式。

框架关注点核心要素典型场景
AutoGen事件驱动、多智能体实验智能体、角色设定、函数与数据代码生成、数据分析、研究工具
Semantic Kernel语言理解与生成、插件体系智能体、模块化组件、协作企业知识助手、内容生产
Azure AI Agent Service模型管理、安全合规、流程编排模块化、协作、部署管控云端发布与配套服务整合

与 Azure 生态的集成方式

  • Azure AI Agent Service 原生支持多种 Azure 服务,适合直接组合使用。
  • AutoGen、Semantic Kernel 也能通过 Azure SDK 或 REST API 访问这些服务,只是需要在代码中手动编排。
  • 你还可以让 Azure AI Agent Service 作为编排层,调用用 AutoGen 或 Semantic Kernel 实现的智能体逻辑。
延伸阅读

上一篇

01 智能体概念与应用场景

下一篇

03 智能体设计模式解析