当前位置: 首页 > news >正文

科普:LLM中的网页工具:Fetch与GeneralSearch

为了获得最新信息以及事实信息,LLM需要以工具方式搜索网页,本文给出工具及使用方式。

一、Fetch与GeneralSearch工具对比

基本定位与功能

特性FetchGeneralSearch
核心功能已知URL提取网页内容基于查询关键词搜索相关网页
输入要求完整URL查询字符串(关键词)
输出结果网页内容(HTML转Markdown/结构化数据)相关URL列表及摘要
典型场景精读指定文章、文档发现新信息、多源内容收集

Fetch:“单发手枪”,一次获取一个已知URL的完整内容,将HTML转换为LLM友好格式(如Markdown),专注单页抓取和简单转换。

GeneralSearch:“搜索雷达”,通过关键词在全网范围内发现相关网页,返回URL列表和摘要,供后续Fetch提取详细内容。

工作流程差异

  • Fetch:URL → 内容提取 → 格式转换 → 返回LLM
  • GeneralSearch:查询 → 搜索匹配 → 返回URL列表 → (需配合Fetch获取详情)

技术实现要点

  • Fetch:轻量级解析器,支持基本网页和简单JavaScript渲染内容,专注内容转换
  • GeneralSearch:依赖商业搜索引擎API(如Bing、Google)或自建搜索服务,返回相关性排序的URL结果

使用策略

  • 先GeneralSearch发现相关URL,再用Fetch深度提取具体内容,形成"搜索→阅读→分析"闭环
  • 已知有价值的链接(如权威文章、报告),直接使用Fetch获取内容

二、与传统爬虫的本质区别

1. 设计目标与核心能力

特性LLM网页工具(Fetch/GeneralSearch)传统爬虫(Scrapy/BeautifulSoup)
核心目的增强LLM回答能力,提供实时信息补充数据采集,构建索引或数据集
智能程度高度依赖LLM决策,具有语义理解能力基于预设规则和模式匹配,无理解能力
内容处理自动提取有价值内容(过滤广告、导航)提取所有内容,需人工后续处理
自主性完全由LLM控制,按需调用自主爬行,主动发现内容

2. 工作机制差异

  • LLM工具被动响应LLM请求,不主动爬行,仅在需要时获取指定内容,单次调用处理单个URL或查询
  • 传统爬虫主动发现(遵循robots.txt),按预设策略(广度/深度优先)批量抓取,持续运行,构建完整索引

3. 技术实现对比

方面LLM工具传统爬虫
内容解析LLM驱动语义理解,自适应识别正文、标题等依赖XPath/CSS选择器等固定规则,需人工维护
复杂度轻量级,集成简单,API调用方式复杂配置,处理并发、反爬等问题
灵活性动态适应85%以上网页结构变化,维护成本低遇新网站常需手动调整规则,维护成本高
输出格式直接生成LLM友好格式(Markdown/JSON)原始HTML,需额外解析

4. 应用场景对比

  • LLM工具

    • 回答实时性问题(新闻、天气、价格)
    • 增强RAG系统(检索增强生成),提供最新知识
    • 支持智能体完成复杂任务(如旅游规划、产品比较)
  • 传统爬虫

    • 构建搜索引擎索引(如Google、Bing)
    • 大规模数据采集(市场分析、舆情监测)
    • 内容存档知识库建设

三、三种技术的互补关系

  • GeneralSearch:帮助LLM发现新信息源,解决"不知道该查什么"的问题
  • Fetch:帮助LLM深度理解特定内容,解决"如何获取并处理内容"的问题
  • 传统爬虫:专注大规模数据收集索引构建,适合长期、系统的数据获取

核心区别:LLM工具是LLM能力的延伸,由模型按需调用,注重语义理解内容适配;传统爬虫是独立的数据采集系统,自主运行,注重全面性规模

选择建议

  • 若需快速获取特定网页内容:用Fetch
  • 若需发现未知相关信息:用GeneralSearch+Fetch组合
  • 若需系统性、大规模数据收集:用传统爬虫
  • 若在LLM应用中需补充实时信息:优先使用LLM工具

四、通用调用流程(底层逻辑)

要在LLM中调用 Fetch(定点提取网页内容)和 GeneralSearch(关键词全网搜索)工具,核心是遵循“LLM决策→工具参数构造→工具执行→结果回传→LLM生成回答”的闭环流程。实际开发中,通常依赖成熟的工具调用框架(如LangChain、LLaMA Index、AutoGPT)简化流程,无需从零开发工具逻辑。

无论使用哪种框架,LLM调用网页工具的核心步骤一致,可分为5步:

  1. 触发判断:LLM分析用户问题,判断是否需要外部信息(如“2024年诺贝尔物理学奖得主”需实时信息,触发工具;“1+1等于几”无需,直接回答)。
  2. 参数构造:LLM根据工具类型,生成符合要求的参数(如Fetch需url,GeneralSearch需query)。
  3. 工具执行:框架将参数传递给工具,执行网络请求(Fetch拉取URL内容,GeneralSearch调用搜索引擎API)。
  4. 结果清洗:工具将原始结果(如HTML、搜索结果JSON)转换为LLM友好格式(Markdown、结构化摘要)。
  5. 回答生成:LLM结合清洗后的工具结果与自身知识,生成最终回答。

五、Fetch工具调用:定点提取已知URL内容

Fetch的核心是“已知URL→提取干净内容”,适合需精读特定网页(如新闻、报告、文档)的场景。以下以最常用的 LangChain框架 为例,结合OpenAI LLM(如GPT-4)演示调用方法。

1. 关键参数(Fetch工具必传)

参数名作用说明示例值
url目标网页的完整URL(必填)https://www.nobelprize.org/prizes/physics/2024/press-release/
render_js是否渲染动态JS(可选,默认False)True(应对需加载JS的网页,如SPA应用)
output_format输出格式(可选,默认Markdown)markdown/plain_text/json

2. 调用示例(LangChain + OpenAI + FetchTool)

步骤1:安装依赖
pip install langchain openai python-dotenv  # langchain框架、OpenAI SDK、环境变量管理
步骤2:编写代码(提取2024诺贝尔物理学奖官网内容)
from langchain.agents import initialize_agent, AgentType
from langchain.tools import FetchTool  # LangChain内置的Fetch工具
from langchain.chat_models import ChatOpenAI
from dotenv import load_dotenv
import os# 1. 加载环境变量(OpenAI API密钥,从.env文件读取)
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")# 2. 初始化LLM(使用GPT-4,需确保API密钥有访问权限)
llm = ChatOpenAI(model_name="gpt-4",temperature=0,  # 降低随机性,确保工具调用逻辑稳定api_key=openai_api_key
)# 3. 初始化Fetch工具(可配置是否渲染JS)
fetch_tool = FetchTool(render_js=True,  # 目标网页若有动态内容,需开启JS渲染output_format="markdown"  # 输出Markdown格式,方便LLM解析
)
tools = [fetch_tool]  # 工具列表(可后续添加其他工具)# 4. 初始化智能体(Agent):负责协调LLM与工具
agent = initialize_agent(tools,llm,agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,  # 适合工具调用的Agent类型verbose=True  # 打印详细流程(便于调试,看到工具调用过程)
)# 5. 触发工具调用:让智能体提取指定URL内容并总结
user_question = "请提取并总结2024年诺贝尔物理学奖官网公告的核心内容:https://www.nobelprize.org/prizes/physics/2024/press-release/"
result = agent.run(user_question)# 6. 输出结果
print("LLM最终回答:")
print(result)

3. 调用流程解析(对应通用步骤)

  • 触发判断:LLM识别到用户提供了具体URL,且需求是“提取总结”,判断需调用Fetch工具。
  • 参数构造:LLM从用户问题中提取url,并默认使用代码中配置的render_js=Trueoutput_format=markdown
  • 工具执行:FetchTool发送HTTP请求,加载目标网页(若需JS渲染,底层用Playwright/BeautifulSoup处理),提取正文(过滤广告、导航栏)。
  • 结果清洗:将HTML转换为Markdown,例如:
    # 2024年诺贝尔物理学奖
    ## 获奖原因
    表彰对“量子纠错与容错量子计算”的突破性贡献,三位获奖者分别是...
    ## 获奖人
    1. John Doe(美国斯坦福大学)
    2. Jane Smith(英国剑桥大学)
    ...
    
  • 回答生成:LLM基于Markdown内容,提炼核心信息(获奖人、贡献、意义),生成自然语言总结。

六、GeneralSearch工具调用:关键词全网搜索

GeneralSearch的核心是“关键词→获取相关URL列表+摘要”,适合“未知信息源”场景(如“2024年AI领域重大突破”“最新iPhone 16发布时间”)。实际调用需依赖 搜索引擎API(如Bing Search API、SerpAPI),以下仍以LangChain为例。

1. 关键参数(GeneralSearch工具必传)

参数名作用说明示例值
query搜索关键词(必填,需精准)2024 AI领域重大突破 权威报告
num_results返回结果数量(可选,默认5)10
search_type搜索类型(可选,如新闻、学术)news(仅搜索新闻)/scholar(学术)
api_key搜索引擎API密钥(必填,如SerpAPI)sk_xxxxxx(需自行申请)

2. 调用示例(LangChain + SerpAPI + GeneralSearch)

步骤1:准备前置条件
  • 申请 SerpAPI密钥(免费额度足够测试,官网:https://serpapi.com/),用于调用Google搜索结果。
  • 安装依赖(若未安装):
    pip install langchain-openai serpapi  # serpapi是LangChain依赖的搜索API库
    
步骤2:编写代码(搜索“2024年AI领域重大突破”)
from langchain.agents import initialize_agent, AgentType
from langchain.tools import SerpAPIQueryRun  # 基于SerpAPI的GeneralSearch工具
from langchain.chat_models import ChatOpenAI
from dotenv import load_dotenv
import os# 1. 加载环境变量(OpenAI API密钥 + SerpAPI密钥)
load_dotenv()
openai_api_key = os.getenv("OPENAI_API_KEY")
serpapi_api_key = os.getenv("SERPAPI_API_KEY")# 2. 初始化LLM(GPT-4)
llm = ChatOpenAI(model_name="gpt-4",temperature=0,api_key=openai_api_key
)# 3. 初始化GeneralSearch工具(SerpAPIQueryRun)
general_search = SerpAPIQueryRun(api_key=serpapi_api_key,params={"q": "",  # 搜索关键词留空,由LLM动态生成"num": 5,  # 返回5条结果"hl": "en",  # 搜索语言(en=英文,zh-CN=中文)"tbm": "nws"  # 搜索类型:nws=新闻,默认是web(全网)}
)
tools = [general_search]# 4. 初始化智能体
agent = initialize_agent(tools,llm,agent=AgentType.CHAT_ZERO_SHOT_REACT_DESCRIPTION,verbose=True  # 打印调试信息,查看搜索过程
)# 5. 触发工具调用:让智能体搜索并总结
user_question = "2024年AI领域有哪些重大技术突破?请基于权威新闻来源总结。"
result = agent.run(user_question)# 6. 输出结果
print("LLM最终回答:")
print(result)

3. 调用流程解析

  • 触发判断:LLM识别到问题涉及“2024年”(时效性强,自身知识截止后无法覆盖),且无具体URL,判断需调用GeneralSearch工具。
  • 参数构造:LLM将用户问题优化为精准搜索关键词(如“2024 AI 重大技术突破 权威新闻来源”),传递给query参数。
  • 工具执行:SerpAPI调用Google新闻搜索,返回5条结果,格式如下(结构化摘要):
    [{"title": "2024年AI突破性进展:多模态大模型实现实时物理模拟","link": "https://example.com/ai-breakthrough-2024","snippet": "MIT团队于2024年3月发布的多模态模型PhysAI,可实时模拟流体、力学运动,精度达工业级...","source": "MIT Technology Review"},{"title": "OpenAI发布GPT-5:支持100种语言实时翻译与逻辑推理","link": "https://example.com/gpt-5-2024","snippet": "2024年6月,OpenAI推出GPT-5,在医学、法律领域的推理准确率超过人类专家...","source": "TechCrunch"}
    ]
    
  • 结果清洗:工具将JSON结果转换为LLM易读的文本格式(如分点列出标题、来源、摘要)。
  • 回答生成:LLM筛选权威来源(如MIT Tech Review、TechCrunch),整合各突破点,生成结构化总结(分技术领域、时间、贡献方)。

七、注意事项(实际开发避坑)

  1. API密钥管理:GeneralSearch依赖第三方API(如SerpAPI、Bing API),需妥善存储密钥(用dotenv或环境变量,避免硬编码)。
  2. 动态网页处理:若Fetch提取的网页是动态加载(如Vue/React构建),需开启render_js=True(底层依赖Playwright,需提前安装浏览器驱动:playwright install)。
  3. 结果过滤:工具返回的内容可能包含广告、无效链接,需在代码中添加过滤逻辑(如筛选域名后缀为.edu/.gov的权威来源)。
  4. 工具配合使用:复杂场景需“GeneralSearch + Fetch”联动——先通过GeneralSearch找到相关URL,再用Fetch提取每个URL的详细内容(LangChain Agent会自动完成这种联动,无需手动干预)。

七、不同框架的支持情况

除了LangChain,其他主流LLM开发框架也支持Fetch/GeneralSearch调用,核心逻辑一致,仅API细节不同:

框架Fetch工具实现GeneralSearch工具实现
LLaMA IndexWebBaseLoader(支持URL列表)BingSearchReader/SerpAPISearchReader
AutoGPTfetch_url函数(内置)google_search模块(调用Google API)
Qwen-AgentWebFetcher(支持JS渲染)SearchTool(对接百度/必应搜索)

八、Fetch与GeneralSearch的配合场景

需求类型工具选择流程示例
精读单篇已知网页单独使用Fetch用户提供报告URL → Fetch提取内容 → LLM总结核心观点
获取时效性/未知信息单独使用GeneralSearch用户问“最新新能源汽车政策” → 搜索获取政策摘要 → LLM解读
深度调研(多源整合)GeneralSearch + Fetch搜索“2024碳中和进展” → 获10个权威URL → Fetch逐个提取 → LLM整合分析

通过以上方法,可让LLM具备“实时获取外部信息”的能力,突破自身知识截止日期的限制,适用于RAG系统、智能问答机器人、AI助手等场景。

http://www.dtcms.com/a/611040.html

相关文章:

  • 第2章 Hello World
  • js语法js语法js语法
  • 如何在三维空间中生成任意方向的矩形内部点位坐标
  • 微信如何做网站西安网站制作托
  • 石家庄网站服务万维网的网站
  • leetcode 387. 字符串中的第一个唯一字符 python
  • 基于深度学习的磁共振图像膝关节损伤多标签识别系统研究
  • 网站制作工作室24小时接单微信小游戏源码
  • 做网站会出现什么问题wordpress如何更改上传文件大小
  • vue3 组合式 API 详解
  • C++从入门到实战----类和对象(上)
  • 多维度表征(下)|用扫描电镜,CT 与仿真“看透“再生碳纤维复合材料
  • 电商网站 收费与免费wordpress阿里云图片不显示不出来
  • 易语言模块反编译为源码 | 深入分析与实战教程
  • 在高速公路或交通工程领域中,OD 是 Origin-Destination 的缩写,中文通常称为“起讫点”或“出行起止点”。
  • 诏安建设局网站常德网站seo
  • 牛商网做的网站怎么样仓库进销存软件
  • Windows 7 运行 .NET 应用时报错“hostfxr.dll 加载失败 (HRESULT: 0x80070057)”的彻底解决指南
  • 免费手机网站系统WordPress使用中文链接好吗
  • 深入理解 C++ vector 源码与迭代器失效问题
  • 服务器主板选用网络变压器及参数配置HX82409S
  • 厦门网站建设企业网站的邀请怎么做的
  • 单独Docker部署和Docker Compose部署
  • 推动“AI+ 网络安全”深度融合与创新发展
  • 个人网站开发技术网站如何做免费推广
  • 网站建设惠州房屋室内设计用什么软件
  • oracle 12c查看执行过的sql及当前正在执行的sql
  • bulk转录组测序分析之数据清洗
  • 深圳网站的公司做网站大概需要多少钱
  • 建立门户公司网站郑州 网站建设