2026 AI 开发分水岭!LangChain 还是 Semantic Kernel?一文讲透 7 大主流框架选型,手把手带你从 0 构建第一个超级 Agent

3 阅读3分钟

一、什么是 AI Agents?

1.1 AI Agent 的定义

AI Agent(AI 代理)是一种能够自主感知环境、做出决策并采取行动以实现特定目标的智能系统。与传统的AI模型不同,AI Agent 具有以下核心特征:

  • 🎯 目标导向性: 能够理解并追求特定目标
  • 🔄 自主性: 能够独立决策,无需人工干预每一步
  • 🌐 环境感知: 能够获取和理解环境信息
  • 🛠️ 工具使用: 能够调用外部工具和API
  • 🧠 推理能力: 能够进行多步骤推理和规划

1.2 AI Agent 的核心组成

graph TB
    A[AI Agent 核心架构] --> B[感知模块 Perception]
    A --> C[决策模块 Reasoning]
    A --> D[执行模块 Action]
    A --> E[记忆模块 Memory]
    
    B --> B1[环境输入]
    B --> B2[用户指令]
    B --> B3[工具反馈]
    
    C --> C1[目标规划]
    C --> C2[任务分解]
    C --> C3[策略选择]
    
    D --> D1[工具调用]
    D --> D2[API执行]
    D --> D3[结果输出]
    
    E --> E1[短期记忆]
    E --> E2[长期记忆]
    E --> E3[情景记忆]
    
    style A fill:#4A90E2,color:#fff
    style B fill:#50C878,color:#fff
    style C fill:#FFB84D,color:#fff
    style D fill:#E74C3C,color:#fff
    style E fill:#9B59B6,color:#fff

1.3 AI Agent 与传统 AI 的区别

特性传统 AI 模型AI Agent
交互方式单次请求-响应多轮对话、持续交互
任务处理单一任务多步骤复杂任务
工具使用可调用外部工具
自主性
记忆能力无状态有状态、可记忆

二、AI Agent 框架选择指南

2.1 主流 AI Agent 框架概览

mindmap
  root((AI Agent 框架))
    通用框架
      LangChain
        成熟生态
        丰富组件
        Python/JS
      LlamaIndex
        专注RAG
        数据连接
        索引优化
      AutoGen
        多Agent协作
        微软开源
        对话模式
    企业级框架
      Semantic Kernel
        微软官方
        .NET/Python
        企业集成
      Azure AI Foundry
        云原生
        托管服务
        生产就绪
    轻量级框架
      CrewAI
        简单易用
        角色定义
        快速原型
      Phidata
        模块化
        工具丰富
        灵活扩展

2.2 框架选择决策树

graph TD
    Start[开始选择框架] --> Q1{是否需要企业级支持?}
    
    Q1 -->|是| Q2{使用哪种技术栈?}
    Q1 -->|否| Q3{项目规模如何?}
    
    Q2 -->|.NET| SK[Semantic Kernel]
    Q2 -->|Python/云服务| Azure[Azure AI Foundry]
    Q2 -->|跨平台| LC[LangChain]
    
    Q3 -->|大型项目| Q4{核心需求是什么?}
    Q3 -->|中小型项目| Q5{快速原型开发?}
    
    Q4 -->|多Agent协作| AG[AutoGen]
    Q4 -->|RAG检索| LI[LlamaIndex]
    Q4 -->|通用能力| LC2[LangChain]
    
    Q5 -->|是| Crew[CrewAI]
    Q5 -->|否| Phi[Phidata]
    
    style Start fill:#4A90E2,color:#fff
    style SK fill:#50C878,color:#fff
    style Azure fill:#50C878,color:#fff
    style LC fill:#50C878,color:#fff
    style AG fill:#FFB84D,color:#fff
    style LI fill:#FFB84D,color:#fff
    style LC2 fill:#FFB84D,color:#fff
    style Crew fill:#E74C3C,color:#fff
    style Phi fill:#E74C3C,color:#fff

2.3 各框架详细对比

🔷 LangChain

适用场景: 需要快速构建原型、丰富的工具集成

优势:

  • ✅ 最成熟的生态系统
  • ✅ 大量预构建组件和集成
  • ✅ 活跃的社区支持
  • ✅ Python 和 JavaScript 双版本

劣势:

  • ❌ 学习曲线较陡
  • ❌ 抽象层次较多
  • ❌ 性能开销相对较大

代码示例:

from langchain.agents import create_openai_functions_agent
from langchain_openai import ChatOpenAI
from langchain.tools import Tool

# 定义工具
tools = [
    Tool(
        name="Calculator",
        func=lambda x: eval(x),
        description="用于数学计算"
    )
]

# 创建Agent
llm = ChatOpenAI(temperature=0)
agent = create_openai_functions_agent(llm, tools)

🔷 Semantic Kernel (Microsoft)

适用场景: 企业级应用、.NET 生态、与Azure深度集成

优势:

  • ✅ 微软官方支持
  • ✅ 企业级稳定性
  • ✅ 与 Azure 无缝集成
  • ✅ 支持 C#、Python、Java

劣势:

  • ❌ 社区规模较小
  • ❌ 学习资源相对较少

代码示例:

using Microsoft.SemanticKernel;

var kernel = Kernel.CreateBuilder()
    .AddAzureOpenAIChatCompletion(deploymentName, endpoint, apiKey)
    .Build();

// 添加插件
kernel.ImportPluginFromType<MathPlugin>();

// 执行
var result = await kernel.InvokePromptAsync(
    "计算 25 * 4 并解释结果"
);

🔷 AutoGen

适用场景: 多Agent协作、复杂对话系统

优势:

  • ✅ 多Agent协作能力强
  • ✅ 灵活的对话模式
  • ✅ 支持人机协作
  • ✅ 微软研究院出品

劣势:

  • ❌ 文档相对不足
  • ❌ 调试复杂度高

🔷 LlamaIndex

适用场景: RAG应用、知识库查询、文档问答

优势:

  • ✅ RAG 领域最专业
  • ✅ 强大的数据连接能力
  • ✅ 优秀的索引优化

劣势:

  • ❌ 专注RAG,通用性较低

三、框架选择实战建议

3.1 场景匹配矩阵

graph LR
    A[应用场景] --> B[聊天机器人]
    A --> C[知识问答]
    A --> D[任务自动化]
    A --> E[多Agent协作]
    A --> F[企业应用]
    
    B --> B1[LangChain<br/>CrewAI]
    C --> C1[LlamaIndex<br/>LangChain]
    D --> D1[LangChain<br/>Phidata]
    E --> E1[AutoGen<br/>CrewAI]
    F --> F1[Semantic Kernel<br/>Azure AI Foundry]
    
    style A fill:#4A90E2,color:#fff
    style B1 fill:#50C878,color:#000
    style C1 fill:#50C878,color:#000
    style D1 fill:#50C878,color:#000
    style E1 fill:#50C878,color:#000
    style F1 fill:#50C878,color:#000

3.2 选择建议流程

  1. 明确需求 → 确定核心功能(RAG/协作/通用)
  2. 评估规模 → 原型/中型/企业级
  3. 技术栈 → Python/JS/.NET
  4. 团队能力 → 学习成本、维护能力
  5. 生态考量 → 社区支持、文档完善度

3.3 快速上手路径

graph TD
    Start[开始学习AI Agent] --> Week1[第1周: 基础概念]
    Week1 --> Week2[第2周: 选择框架]
    Week2 --> Week3[第3周: 实战项目]
    Week3 --> Week4[第4周: 优化部署]
    
    Week1 --> W1T1[理解Agent原理]
    Week1 --> W1T2[学习设计模式]
    
    Week2 --> W2T1[安装框架]
    Week2 --> W2T2[运行示例]
    Week2 --> W2T3[阅读文档]
    
    Week3 --> W3T1[构建简单Agent]
    Week3 --> W3T2[集成工具]
    Week3 --> W3T3[测试优化]
    
    Week4 --> W4T1[性能优化]
    Week4 --> W4T2[部署上线]
    Week4 --> W4T3[监控维护]
    
    style Start fill:#4A90E2,color:#fff
    style Week1 fill:#50C878,color:#fff
    style Week2 fill:#50C878,color:#fff
    style Week3 fill:#50C878,color:#fff
    style Week4 fill:#50C878,color:#fff

四、实战案例:构建第一个 AI Agent

4.1 使用 LangChain 构建简单客服 Agent

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_functions_agent
from langchain.tools import Tool
from langchain.prompts import ChatPromptTemplate, MessagesPlaceholder

# 1. 定义工具
def search_faq(query: str) -> str:
    """搜索FAQ数据库"""
    faq_db = {
        "退货": "退货需要在7天内,商品保持完好",
        "物流": "一般3-5个工作日送达"
    }
    return faq_db.get(query, "未找到相关信息")

tools = [
    Tool(
        name="SearchFAQ",
        func=search_faq,
        description="搜索常见问题库,输入问题关键词"
    )
]

# 2. 创建提示模板
prompt = ChatPromptTemplate.from_messages([
    ("system", "你是一个客服助手,帮助用户解决问题"),
    ("human", "{input}"),
    MessagesPlaceholder(variable_name="agent_scratchpad")
])

# 3. 初始化LLM和Agent
llm = ChatOpenAI(model="gpt-4", temperature=0)
agent = create_openai_functions_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# 4. 执行
result = agent_executor.invoke({
    "input": "如何退货?"
})
print(result["output"])

4.2 使用 Semantic Kernel 构建任务助手

using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;

// 1. 创建Kernel
var builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(
    deploymentName: "gpt-4",
    endpoint: "YOUR_ENDPOINT",
    apiKey: "YOUR_API_KEY"
);
var kernel = builder.Build();

// 2. 定义原生函数
[KernelFunction]
[Description("发送邮件")]
public static string SendEmail(
    [Description("收件人")] string recipient,
    [Description("邮件内容")] string content
)
{
    return $"邮件已发送至 {recipient}";
}

// 3. 导入插件
kernel.ImportPluginFromType<EmailPlugin>();

// 4. 执行Agent
var settings = new OpenAIPromptExecutionSettings 
{ 
    ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions 
};

var result = await kernel.InvokePromptAsync(
    "发送邮件给张三,内容是会议提醒",
    new(settings)
);