01- AI Agents 教程 AI Agent 的定义
·
一、什么是 AI Agents?
1.1 AI Agent 的定义
AI Agent(AI 代理)是一种能够自主感知环境、做出决策并采取行动以实现特定目标的智能系统。与传统的AI模型不同,AI Agent 具有以下核心特征:
- 🎯 目标导向性: 能够理解并追求特定目标
- 🔄 自主性: 能够独立决策,无需人工干预每一步
- 🌐 环境感知: 能够获取和理解环境信息
- 🛠️ 工具使用: 能够调用外部工具和API
- 🧠 推理能力: 能够进行多步骤推理和规划
1.2 AI Agent 的核心组成
1.3 AI Agent 与传统 AI 的区别
| 特性 | 传统 AI 模型 | AI Agent |
|---|---|---|
| 交互方式 | 单次请求-响应 | 多轮对话、持续交互 |
| 任务处理 | 单一任务 | 多步骤复杂任务 |
| 工具使用 | 无 | 可调用外部工具 |
| 自主性 | 低 | 高 |
| 记忆能力 | 无状态 | 有状态、可记忆 |
二、AI Agent 框架选择指南
2.1 主流 AI Agent 框架概览
2.2 框架选择决策树
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 场景匹配矩阵
3.2 选择建议流程
- 明确需求 → 确定核心功能(RAG/协作/通用)
- 评估规模 → 原型/中型/企业级
- 技术栈 → Python/JS/.NET
- 团队能力 → 学习成本、维护能力
- 生态考量 → 社区支持、文档完善度
3.3 快速上手路径
四、实战案例:构建第一个 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)
);
更多推荐

所有评论(0)