LangChain核心组件-Agents

Agents (智能体)

  • 具备推理和决策能力的自主AI系统
  • Agents是LangChain最强大的组件,让LLM从被动回答升级为主动的决策和执行,Agent具备推理能力,能够自主分析问题、制定计划、选择工具并执行任务。
  • Agent基于ReAct(Reasoning + Acting) 模式工作

核心概念

  • 推理循环:思考(Reason) → 行动(Act) → 观察(Observe) → 再思考(Reason)
  • 工具使用:根据任务选择并调用合适的工具
  • 自主决策:决定何时完成任务或继续探索

示例

from langchain.agents import initialize_agent, Tool
from langchain.agents import AgentType

# 定义工具
tools = [
Tool(
name="搜索",
func=search_tool.run,
description="用于搜索最新信息"
),
Tool(
name="计算器",
func=calculator.run,
description="用于数学计算"
)
]

# 初始化Agent
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
verbose=True,
handle_parsing_errors=True
)

# 执行复杂任务
result = agent.run(
"找出特斯拉当前股价,计算如果投资10000美元可以买多少股"
)

Agent类型

  • ReAct Agent:最常用的推理+行动模式
  • Plan-and-Execute:先制定计划再执行
  • Self-Ask:通过自问自答分解复杂问题

8.4. 工具tools

  • 扩展LLM能力边界的外部功能接口
from langchain.agents import tool
from datetime import datetime

# 自定义工具
@tool
def get_current_time(timezone: str = "Asia/Shanghai") -> str:
"""获取指定时区的当前时间"""
now = datetime.now()
return f"当前时间:{now.strftime('%Y-%m-%d %H:%M:%S')}"

@tool
def query_database(query: str) -> str:
"""执行数据库查询"""
# 实际的数据查询逻辑
return f"查询结果:{query}"

# 工具注册
tools = [get_current_time, query_database]

# 在Agent中使用
agent = initialize_agent(tools, llm, agent=AgentType.ZERO_SHOT_REACT_DESCRIPTION)