React的预构建creat_agent模块详解

京东购书链接

前面我们基于原生LangGraph完成了基础React的设置与使用,从工具定义、节点逻辑到图结构搭建都需要手动配置,可以看到,采用全手动实现虽然能精准控制流程,但步骤相对烦琐。

为我们后续的智能体开发提供了更高效的捷径。而LangGraph中的create_agent模块已封装ReAct模式的核心循环(思考-行动-观察),内置了工具调用、状态管理等关键逻辑,无须再手动定义节点衔接和条件判断,能快速实现具备工具调用能力的智能体,大幅简化开发流程的同时,保留了灵活扩展的特性。

5.3.1 creat_agent的基础使用

在创建和使用上,LangChain的create_agent是构建智能体的核心接口,它封装了大模型与工具调用的联动逻辑,能快速实现"接收指令-分析需求-生成响应"的基础能力。需要注意的是,该接口的完整调用需包含大模型实例、工具列表(可选,无工具时为纯对话智能体)、智能体类型等关键参数,仅传入模型会导致初始化失败。下面我们从基础对话智能体入手,逐步掌握其使用方法。

1. 基础对话智能体:最小化实现

若仅需构建"无工具"的纯对话智能体,需确保传入 model(大模型实例)和 agent_type(智能体类型,指定为纯对话模式)。以下是完整的基础实现代码:

from langchain.agents import create_agent

import bigmodel

agent = create_agent(

model=bigmodel.llm

)

reply = agent.invoke({"messages":"你好"})

print(reply"messages"-1.content)

在以上代码中,我们使用create_agent调用了大模型并进行封装和整合,直接借助大模型的语义理解能力生成回复。

2. 添加工具支持的智能体

除了上面的纯对话智能体外,我们还可以通过对create_agent智能体绑定实用工具(如天气查询、计算器等),让其从"纯对话"升级为"能办事"的智能体。以下是添加"天气查询工具"的完整示例:

from langchain_core.tools import tool

2. 定义工具(Tools)

@tool("get_weather_info")

def get_weather_info(city: str) -> str:

"""

根据城市名称查询当前天气状况

Args:

city (str): 城市的中文全称

"""

weather_data = {

"上海": "城市:上海 | 天气:晴 | 温度:18℃ | 风向:东南风 | 湿度:65%",

"南京": "城市:南京 | 天气:多云 | 温度:15℃ | 风向:北风 | 湿度:70%",

"杭州": "城市:杭州 | 天气:小雨 | 温度:12℃ | 风向:西北风 | 湿度:80%",

}

return weather_data.get(city, f"未查询到{city}的天气信息")

@tool

def get_weather_tips(city: str) -> str:

"""

根据城市名称返回3条天气相关的生活建议

Args:

city (str): 城市的中文全称

"""

tips_data = {

"上海": "天气晴朗,适合户外活动;紫外线较强,注意防晒;早晚温差大",

"南京": "多云天气,适宜出行;风力不大,适合晾晒衣物;空气较干燥",

"杭州": "有小雨,出门记得带伞;路面湿滑,注意行车安全;气温较低,适当添衣",

}

return tips_data.get(city, f"暂无{city}的相关天气建议")

from langchain.agents import create_agent

import bigmodel

agent = create_agent(

model=bigmodel.llm,

system_prompt="你需要回答来自于用户的提问, 在需要的时候还可以使用工具帮助你完成这些任务。",

tools=get_weather_info, get_weather_tips

)

result = agent.invoke({"messages":"上海的天气是什么?"})

result = result"messages"-1.content

print(result)

在以上代码中,我们在使用create_agent时,除了原有的注入模型外,还额外添加了系统定义提示词system_prompt以及tools工具的定义,从而在使用时可以对其进行直接调用,输出结果如下:

上海当前的天气是晴天,气温为18℃,风向为东南风,湿度为65%。

读者可以自行尝试运行。

5.3.2 使用create_agent构建React

在5.2.2节中,我们通过手动定义工具节点、思考节点、条件判断逻辑,完整搭建了一个遵循React模式的智能体------整个过程需要手动串联"接收需求→判断是否调用工具→执行工具→整合结果"的全流程,虽能清晰理解React的核心原理,但开发效率较低。

而LangChain的create_agent接口恰好解决了这一问题:它内置了React模式的核心逻辑,能自动完成"需求分析→工具决策→结果整合"的闭环,我们只需传入大模型、工具列表等核心组件,即可快速构建出具备工具调用能力的React智能体,大幅简化了开发流程。

下面是使用create_agent构建天气查询React智能体的完整实现,代码保留了工具定义与智能体核心配置,可直接用于调试:

from langchain_core.tools import tool

2. 定义工具(Tools)

@tool("get_weather_info")

def get_weather_info(city: str) -> str:

"""

根据城市名称查询当前天气状况

Args:

city (str): 城市的中文全称

"""

weather_data = {

"上海": "城市:上海 | 天气:晴 | 温度:18℃ | 风向:东南风 | 湿度:65%",

"南京": "城市:南京 | 天气:多云 | 温度:15℃ | 风向:北风 | 湿度:70%",

"杭州": "城市:杭州 | 天气:小雨 | 温度:12℃ | 风向:西北风 | 湿度:80%",

}

return weather_data.get(city, f"未查询到{city}的天气信息")

@tool

def get_weather_tips(city: str) -> str:

"""

根据城市名称返回3条天气相关的生活建议

Args:

city (str): 城市的中文全称

"""

tips_data = {

"上海": "天气晴朗,适合户外活动;紫外线较强,注意防晒;早晚温差大",

"南京": "多云天气,适宜出行;风力不大,适合晾晒衣物;空气较干燥",

"杭州": "有小雨,出门记得带伞;路面湿滑,注意行车安全;气温较低,适当添衣",

}

return tips_data.get(city, f"暂无{city}的相关天气建议")

from langchain.agents import create_agent

import bigmodel

agent = create_agent(

model=bigmodel.llm,

system_prompt="你是一个智能体,可以使用工具完成任务,现在处理发来的信息内容。在需要的时候可以使用工具,在获得答案时需要对信息进行进一步处理。",

tools=get_weather_info, get_weather_tips

)

result = agent.invoke({"messages":"上海天气怎么样,有什么生活建议吗?"})

result = result"messages"-1.content

print(result)

对比5.2.2节的手动实现示例,本示例中create_agent的价值主要体现在以下三点:

  1. 无须手动定义思考节点:智能体自动封装大模型的"思考逻辑",无须像手动实现时那样编写run_llm函数判断工具调用时机。
  2. 自动管理工具调用流程:支持多工具联动调用,无须手动编写工具执行后的跳转逻辑(如5.2.2节的should_continue条件函数)。
  3. 结果整合更智能:大模型会根据system_prompt的要求,将多个工具的返回结果整合为连贯的自然语言,无须手动处理结果拼接。

输出结果如下:

上海当前天气晴朗,气温为18℃,东南风,湿度65%。以下是几条生活建议:

  1. 适合户外活动:天气晴好,可以安排散步、运动或郊游。

  2. 注意防晒:紫外线较强,外出时建议涂抹防晒霜、戴帽子或太阳镜。

  3. 应对温差:早晚温差较大,建议适当增减衣物,避免着凉。

希望这些建议对您有帮助!

create_agent构建的智能体在使用中还需要注意以下两点。

  • 消息格式规范:代码中直接传入字符串"上海天气怎么样......"不符合LangChain规范,会导致报错。正确用法是将其封装为HumanMessage对象,即{"messages": HumanMessage(content="上海天气怎么样,有什么生活建议吗?")},这样才能被智能体正确识别为用户需求。
  • 内置的React循环:调用后智能体会自动完成React流程------先分析需求(用户需要上海的天气和建议,需调用两个工具),再依次调用工具获取结果,最后整合结果生成自然语言回复,整个过程无须手动干预。
相关推荐
social-man3 分钟前
开源渗透测试 AI 助手 ComPilot Scan:LangGraph + 终端 + Playwright + 知识库一体化
人工智能·开源
工业胶粘剂技术3 分钟前
东莞市科耀新材料有限公司工业胶粘剂产品矩阵:电机专用胶、结构胶、三防漆技术选型
人工智能·物联网·矩阵
一只fish4 分钟前
Oracle官方文档翻译《Database Concepts 26ai》第21章-Oracle AI 数据库中的AI
数据库·人工智能·oracle
Kobebryant-Manba5 分钟前
下载李沐老师动手深度学习源码
人工智能·深度学习
莫宰特5 分钟前
NNMind:像搭积木一样设计神经网络
人工智能·python·深度学习·从零训练
极客侃科技6 分钟前
能接通飞书的AI主机:联想AI主机Mini适配主流IM办公场景
人工智能·飞书
黎阳之光7 分钟前
流域面源污染防控+生态屏障数字化落地:黎阳之光以视频孪生守护南水北调水源安全
人工智能·物联网·算法·安全·数字孪生
黄啊码8 分钟前
【黄啊码】用 AI 聊天?不如用它在高考前多捞分
人工智能
小丶舟9 分钟前
微软Build 2026:自研MAI模型+Project Polaris终结OpenAI依赖
人工智能·microsoft·开源
txg66610 分钟前
机器人领域简报(2026年5月29日—6月4日)
人工智能·机器人·自动化