SEO基础

SEO基础

Products

当前位置:首页 > SEO基础 >

LangChain 1.0:工具与控制台赋予Agent行动能力?

96SEO 2026-08-01 17:11 0


一、本章导学

在前几章中,我们已经能够调用大模型完成对话和文本生成。但大模型有一个根本性的局限:它只能生成文本。它不能上网搜索、不能做精确计算、不能读写文件、不能调用 API。它就像一个博学但被锁在房间里的人——什么都懂,却什么都做不了。

说到使用者痛点。想让 AI 直接获取实时信息、执行计算或与业务程序交互,却被模型的“无手无眼”限制住。

LangChain 1.0:工具与控制台赋予Agent行动能力?

Tool就是给 AI 装上的“双手和眼睛”。按理说,、读写数据库、发送邮件,或者调用任何业务程序中的 API。而 Agent 之所以能“自主决策”何时调用哪个工具,背后靠的是 ReAct循环模式和 Tool-Calling 机制。

本章将程序讲解四大主要主题:

  • @tool 装饰器的定义与使用
  • Agent 工作原理
  • MCP 协议入门
  • 多工具 Agent 的综合实战

flowchart TD
A --> B
A --> C
A --> D
A --> E
B --> C --> E
D --> E
style A fill:#e1f5fe。stroke:#01579b
style C fill:#fff3e0,stroke:#e65100

二、@tool 装饰器:定义工具

基础用法

@tool 装饰器是 LangChain 中定义工具最简单的方式。它将普通 Python 函数转换为 Agent 可调用的 Tool 对象:


from langchain.tools import tool
# 示例代码
@tool
def hello -> str:
"""向指定的人打招呼。至于Args,name: 要打招呼的人的名字
"""
return f"你好,{name}!欢迎来到 AI 的世界,"
print
print

再看运行结果,

hello 向指定的人打招呼。

就这几行代码,你就创建了一个可被 Agent 使用的工具。@tool 装饰器的工作过程是:函数签名中的类型注解用于生成 JSON Schema,docstring 作为工具描述传递给模型。

docstring 设计原则

docstring 是模型理解工具的唯一信息来源。写好 docstring 很关键,因为它直接决定了 Agent 能否正确使用你定义的工具。

  • 第一句话说明用途和使用场景
  • 明确说明什么时候该用、什么时候不该用
  • 参数描述包含取值范围和格式
  • 保持简洁但完整

from langchain.tools import tool
# 不好的 docstring
@tool
def search -> str:
"""搜索"""
...
# 好的 docstring
@tool
def search_product_reviews -> str:
"""搜索指定商品的使用者评价。当使用者想了解某款产品的口碑或使用体验时使用此工具。不要用于搜索商品价格或库存信息。再看Args,product_name: 商品名称或型号,越具体越好
min_rating: 最低评分筛选,-5分。默认0表示不筛选
"""
...

参数类型注解

类型注解不仅仅是代码规范,它直接决定了工具能否正确工作。LangChain 需要将工具信息转换为 JSON Schema 格式发送给模型,缺少类型注解会导致模型不知道该传什么类型的参数。

支持基本类型和复杂类型:


from typing import List,Dict。Literal
@tool
def filter_products(
categories: List,price_range: Dict,sort_by: Literal,) -> str:
"""搜索和筛选商品。
 Args:
categories: 商品类别列表,如
price_range: 价格范围,格式为{"min": 最低价,"max": 最高价}
sort_by: 排序方式

""" return ( f"筛选条件这方面,类别={categories}," f"价格范围={pricerange}-{pricerange}," f"排序={sort_by}" )

from pydantic import BaseModel。Field

class FlightSearchInput: """航班搜索的输入参数"""

origin: str = Field")
destination: str = Field
departure_date: str = Field
passengers: int = Field(default=1,ge=1,le=10,description="乘客人数")

@tool def searchflights(origin:str,destination:str,departuredate:str,passengers:int =1) -> str: """搜索航班信息。当使用者需要查询机票时使用。""" return f"搜索航班:{origin} → {destination},出发:{departure_date}。{passengers}人"

返回值处理

工具的返回值必须是字符串。返回有意义的错误信息比抛异常更友好——因为 Agent 需要将错误信息返回给模型,让模型决定如何处理:


@tool
def divide_numbers->str:
"""将两个数相除。
 Args:
a 被除数
b 除数

""" if b==0: return "错误:除数不能为零。请提供一个非零除数," return f"{a} ÷ {b} = {a / b}"

# 异步工具示例


import httpx
@tool
async def fetch_webpage->str:
"""异步获取网页内容。
 Args:
url 要获取的网址

""" async with httpx.AsyncClient as client: response=await client.get response.raiseforstatus return response.text

@tool 装饰器流程图


flowchart LR
subgraph INPUT
FN
DS
AN
end 

INPUT --| "@tool 装饰器"| TOOL

TOOL -- NAME TOOL -- DESC TOOL -- SCHEMA

SCHEMA -- PROMPT

三、Agent 工作原理:ReAct 循环

Chain vs Agent

C​hain 就像工厂流水线——每一步做什么按什么顺序执行,都在写代码时确定;而 Agent 就像自动驾驶——你只告诉它目的地,它自己决定怎么走。

Tip: 如果任务逻辑固定,用 Chain;如果任务需要灵活决策,用 Agent。
示例链式流程: python from langchain_core.prompts import ChatPromptTemplate from langchain_core.output_parsers import StrOutputParser from langchain.chat_models import init_chat_model model = init_chat_model( model=os.getenv,api_key=os.getenv,base_url=os.getenv。model_provider='openai' ) prompt = ChatPromptTemplate.from_template( "将下面内容翻译成{language}: {text}" ) chain = prompt | model | StrOutputParser result = chain.invoke print 至于**输出**,`Today is a good day.` 示例代理流程: python from langchain.agents import create_agent agent=create_agent result=agent.invoke]}) print 至于**输出**,`北京今天晴朗温度25°C空气质量良好` ### ReAct 模式详解 ReAct 是目前最主流 agent 架构模式,它让模型交替进行 **思考** 与 **行动**,形成 Think → Act → Observe 的闭环。mermaid flowchart TD START-->T1-->A1-->O1-->T2-->A2... 以“北京天气怎么样”为例: mermaid sequenceDiagram participant U as 使用者 participant A as Agent participant L as LLM participant T as Tool U->-A 提问 A->-L 问题+Tool 列表 L-->A 返回 tool_calls A->-T 执行 get_wear T-->A 工具结果 A->-L 返回最终回答 A-->U 回答结束 #### 完整可运行 Demo python # -*- encoding:utf- -*- """react_demo.py""" from dotenv import load_dotenv;怎么说呢,load_dotenv import os from langchain.chat_models import init_chat_model from langchain.tools import tool from langchain.agents import create_agent # 定义 Tools ---------------------------------------------- @tool def get_wear->str:"""查询指定城市当前天气。 Args这方面,city 城市名称""" wear_db={"北京":"晴,25°C","上海":"多云。28°C"} return wear_db.get @tool def get_distance->str:"""查询两个城市距离。Args这方面,city_a 第一个城市 city_b 第二个城市""" distances={:1200} return distances.get,f"{city_a}-{city_b}未找到距离") model=init_chat_model( model=os.getenv。api_key=os.getenv,base_url=os.getenv,model_provider='openai' ) agent=create_agent(model,system_prompt=""" 你是智能助手擅长天气及距离查询。""") question ="我计划从北京去上海出差。请告诉我这两个城市今天天气,还有它们之间距离。" res=agent.invoke]}) for msg in res: if hasattr: print elif hasattr: print else : pass **运行结果示例** text ============================================= 从使用者来看。我计划从北京去上海出差,请告诉我这两个城市今天天气,还有它们之间距离。============================================= 我需要查询信息 调用 get_wear 晴,25°C 我需要再查询上海 ... 北京今天天气晴朗25°C;上海多云28°C,老实说,两地距离约1200公里…### Tool‑Calling 技术细节 | 步骤 | 内容 | |------|------| | 注入 | 框架把名称、描述与 JSON Schema 注入 Prompt | | 决策 | 模型分析问题并决定是否调用;若需则返回 `tool_calls` | | 执行 | 框架解析 `tool_calls` 并调用对应 Python 函数 | | 反馈 | 将结果作为 `ToolMessage` 加入消息列表,交由 LLM | **Agent 消息流示意** mermaid sequenceDiagram participant S as SystemMessage participant H as HumanMessage participant AM as AIMessage participant TM as ToolMessage AM-->S ... AM-->TM ... TM-->AM ... AM--> U 返回答案 --- ### 常见陷阱 & 调试技巧 #### 工具不被调用?老实说,* docstring 不够清晰导致模型无法识别;* 模型不支持 Function Calling,需要 GPT‑4o/Claude 等;按理说,* 问题本身不需外部数据。#### 无限循环,* 设置 `recursion_limit`;* 检查 docstring 是否含歧义。#### 错误选择,* 合并功能相近且命名相似;* 精细化 DocString 与 Pydantic 校验;#### 打印完整历史调试: python for msg in result: if isinstance: print elif hasattr: print elif hasattr: print ---

四、MCP 协议入门

### MCP 架构概述 MCP 为大模型与外部应用之间提供标准化接口,让不同网站提供能力成为“一键插拔”。再看三层角色,* **Host ** - LangChain 服务端;* **Client** - 在 LangChain 内部跑,实现连接管理;老实说,* **Server** - 真正提供功能。例如高德地图、Slack 通知等。### 与 @tool 的对比 " />
MCP协议特性 @tool 
位置 & 调度方式 \ 本地 Python 函数\ 跨进程\ 复用性仅限当前应用\ 任何 Client 均可接入\ 适用于私有小规模服务\ 易部署。但需额外服务进程 \ 维护成本较高  \ \t\t\t\t\t\t\t\t\t\t\t\r\r\r\r\r\r\r\r\r\r\r\r\r \ \r \ ", 位置 & 调度方式 \ 同进程内实现\ 快速响应,无网络延迟\ 复用性仅限当前脚本\ 仅适合一次性脚本或测试场景\ 易于快速开发与测试\ 无须额外部署服务进程 \ // 小规模内部插件就可以。\t\t\t\t","
### 基础 MCP Server 搭建 安装 SDK: bash uv add mcp 创建最简服务器: python # math_server.py from mcp.server.fastmcp import FastMCP mcp = FastMCP @mcp.tool def add->int:"""计算两个整数之和."""return a+b @mcp.tool def multiply->int:"""计算乘积."""return a*b if __name__=="__main__": mcp.run 在 LangChain 内部加载并使用: python from mcp.client.fastmcp_client import FastMCPClient async def main: model=model_init async with FastMCPClientas client: tools=list) agent=create_agent res=agent.invoke]}) for msg in res: if msg.type=='ai' and msg.content : print asyncio.run) ---

五、多工具Agent 实战案例

定义本地 & MCP 工具: python # multi_tool_agent.py from dotenv import load_dotenv;load_dotenv import os,asyncio from langchain.chat_models import init_chat_model from langchain.tools import tool from lib.mcp_client.fastmcp_client import FastMCPClient # 本地 tools ------------------------------------------------------------ @tool def get_stock_price->str:"""获取股票当前价格。当询问某只股票价格时使用""" prices={'AAPL':'$140','TSLA':'$650'} return prices.get,f"{symbol} 未找到") @tool def convert_currency->str:"""汇率换算""" rates={'USD':1。'CNY':6.7} if currency_from.upper not in rates or currency_to.upper not in rates:return 'unsupported' return f"{amount}{currency_from}->{amount*rates/rates}{currency_to}" # MCP 工具 ------------------------------------------------------------ async def main: local= async with FastMCPClientas client : tools=list) + local model=model_init agent=create_agent res_1=agent.invoke ]}) for m in res_1: if hasattr:print res_2=agent.invoke ]}) for m in res_2: if hasattr:print asyncio.run) --- ### 概念图解释 --- ## 六常见陷阱与调试技巧
  • **文档不足导致不可调用** – 清晰编写 DocString 与参数校验。
  • \r
  • **无 Function Calling 模型** – 必须启用 GPT‑4o / Claude 等支持结构化输出的大语言模 型。\r
  • **死循环陷阱** – 设置最大迭代次数还有明确错误处理方法。\r
  • **多重功能冲突** – 合并重叠功能或添加标签区分不同场景。\r

七、本章小结

  • @@tool装饰器 – 把普通 Python 函数包装成可被 agent 使用的数据接口 – DocString 是关键。
  • \r
  • ReAct 循环 – 思考→行动→观察 的闭环,使 agent 能自主规划任务步骤 – Tool‑Calling 是其技术实现。
  • \r
  • MCP 协议 – 统一标准让不同网站提供能力成为“一键插拔” – 可与 @to­ol 混合使用。
  • \r
  • 多‑Tool Agent – 把内置 tools 与远程 MCP tools 合并到同一列表,让 agent 按需选择最合适方案。
  • \r


八 阅读

  • \r a href='#'>https://github.com/mcprotocol/spec?utmsource=mcmc&utmmedium=social&utmcampaign=mcmc ' target='blank' rel='noopener noreferrer'>https://github.com/mcprotocol/spec?utmsource=mcmc&utmmedium=social&utmcampaign=mcmc'


标签: 第五篇

SEO优化服务概述

作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。

百度官方合作伙伴 白帽SEO技术 数据驱动优化 效果长期稳定

SEO优化核心服务

网站技术SEO

  • 网站结构优化 - 提升网站爬虫可访问性
  • 页面速度优化 - 缩短加载时间,提高用户体验
  • 移动端适配 - 确保移动设备友好性
  • HTTPS安全协议 - 提升网站安全性与信任度
  • 结构化数据标记 - 增强搜索结果显示效果

内容优化服务

  • 关键词研究与布局 - 精准定位目标关键词
  • 高质量内容创作 - 原创、专业、有价值的内容
  • Meta标签优化 - 提升点击率和相关性
  • 内容更新策略 - 保持网站内容新鲜度
  • 多媒体内容优化 - 图片、视频SEO优化

外链建设策略

  • 高质量外链获取 - 权威网站链接建设
  • 品牌提及监控 - 追踪品牌在线曝光
  • 行业目录提交 - 提升网站基础权威
  • 社交媒体整合 - 增强内容传播力
  • 链接质量分析 - 避免低质量链接风险

SEO服务方案对比

服务项目 基础套餐 标准套餐 高级定制
关键词优化数量 10-20个核心词 30-50个核心词+长尾词 80-150个全方位覆盖
内容优化 基础页面优化 全站内容优化+每月5篇原创 个性化内容策略+每月15篇原创
技术SEO 基本技术检查 全面技术优化+移动适配 深度技术重构+性能优化
外链建设 每月5-10条 每月20-30条高质量外链 每月50+条多渠道外链
数据报告 月度基础报告 双周详细报告+分析 每周深度报告+策略调整
效果保障 3-6个月见效 2-4个月见效 1-3个月快速见效

SEO优化实施流程

我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:

1

网站诊断分析

全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。

2

关键词策略制定

基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。

3

技术优化实施

解决网站技术问题,优化网站结构,提升页面速度和移动端体验。

4

内容优化建设

创作高质量原创内容,优化现有页面,建立内容更新机制。

5

外链建设推广

获取高质量外部链接,建立品牌在线影响力,提升网站权威度。

6

数据监控调整

持续监控排名、流量和转化数据,根据效果调整优化策略。

SEO优化常见问题

SEO优化一般需要多长时间才能看到效果?
SEO是一个渐进的过程,通常需要3-6个月才能看到明显效果。具体时间取决于网站现状、竞争程度和优化强度。我们的标准套餐一般在2-4个月内开始显现效果,高级定制方案可能在1-3个月内就能看到初步成果。
你们使用白帽SEO技术还是黑帽技术?
我们始终坚持使用白帽SEO技术,遵循搜索引擎的官方指南。我们的优化策略注重长期效果和可持续性,绝不使用任何可能导致网站被惩罚的违规手段。作为百度官方合作伙伴,我们承诺提供安全、合规的SEO服务。
SEO优化后效果能持续多久?
通过我们的白帽SEO策略获得的排名和流量具有长期稳定性。一旦网站达到理想排名,只需适当的维护和更新,效果可以持续数年。我们提供优化后维护服务,确保您的网站长期保持竞争优势。
你们提供SEO优化效果保障吗?
我们提供基于数据的SEO效果承诺。根据服务套餐不同,我们承诺在约定时间内将核心关键词优化到指定排名位置,或实现约定的自然流量增长目标。所有承诺都会在服务合同中明确约定,并提供详细的KPI衡量标准。

SEO优化效果数据

基于我们服务的客户数据统计,平均优化效果如下:

+85%
自然搜索流量提升
+120%
关键词排名数量
+60%
网站转化率提升
3-6月
平均见效周期

行业案例 - 制造业

  • 优化前:日均自然流量120,核心词无排名
  • 优化6个月后:日均自然流量950,15个核心词首页排名
  • 效果提升:流量增长692%,询盘量增加320%

行业案例 - 电商

  • 优化前:月均自然订单50单,转化率1.2%
  • 优化4个月后:月均自然订单210单,转化率2.8%
  • 效果提升:订单增长320%,转化率提升133%

行业案例 - 教育

  • 优化前:月均咨询量35个,主要依赖付费广告
  • 优化5个月后:月均咨询量180个,自然流量占比65%
  • 效果提升:咨询量增长414%,营销成本降低57%

为什么选择我们的SEO服务

专业团队

  • 10年以上SEO经验专家带队
  • 百度、Google认证工程师
  • 内容创作、技术开发、数据分析多领域团队
  • 持续培训保持技术领先

数据驱动

  • 自主研发SEO分析工具
  • 实时排名监控系统
  • 竞争对手深度分析
  • 效果可视化报告

透明合作

  • 清晰的服务内容和价格
  • 定期进展汇报和沟通
  • 效果数据实时可查
  • 灵活的合同条款

我们的SEO服务理念

我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。

提交需求或反馈

Demand feedback