1. LangChain Agent API 核心概念解析
在传统LangChain的"链"式结构中,开发者常遇到一个典型困境:当用户输入超出预设工具范围时(比如天气查询链遇到机器学习问题),整个执行流程就会陷入尴尬境地。这种刚性架构迫使开发者要么构建大量分支链,要么在链中增加复杂的条件判断——这两种方案都会显著增加系统复杂度和维护成本。
Agent架构的诞生正是为了解决这一核心痛点。与固定顺序的Chain不同,Agent本质上是一个由大语言模型驱动的动态调度系统。它具备三个关键能力:
- 意图识别:自动分析用户输入的语义意图
- 工具编排:动态选择需要调用的工具序列
- 结果合成:将多个工具的执行结果整合成自然语言响应
这种架构带来的直接优势是:
- 处理未知请求时不会崩溃,而是尝试用已有工具组合解决
- 新增工具时无需重构整体流程
- 支持复杂的串并联工具调用模式
技术细节:LangChain Agent内部使用ReAct(Reasoning + Acting)框架,通过特殊的prompt设计让LLM在"思考-行动-观察"的循环中自主决策工具调用顺序。这也是为什么提示模板中必须包含
{agent_scratchpad}占位符——它用于记录LLM的推理过程。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 零基础搭建首个智能体实战
2.1 环境准备与依赖安装
推荐使用Python 3.9+环境,首先安装核心依赖:
bash复制pip install langchain-core==0.1.0 langchain-community==0.0.1
对于需要联网搜索的案例,额外安装:
bash复制pip install langchain-tavily==0.0.3 requests==2.31.0
2.2 天气查询工具封装
完整工具函数应该包含以下关键要素:
python复制import requests
from typing import Annotated
from langchain.tools import tool
@tool
def get_weather(
loc: Annotated[str, "城市名称,如'北京'或'New York'"]
) -> str:
"""获取指定城市的实时天气数据(温度/湿度/天气状况)"""
url = "https://api.seniverse.com/v3/weather/now.json"
params = {
"key": "your_api_key", # 替换为实际API密钥
"location": loc,
"language": "zh-Hans",
"unit": "c"
}
try:
response = requests.get(url, params=params, timeout=10)
response.raise_for_status()
data =
