
GPT Academic 联网搜索SearXNG 检索、网页正文提取与 AI 综合回答的实现原理与配置实战【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic大语言模型的知识存在训练数据截止日期的天然限制面对最新技术动态、近期论文、实时数据这类时效性问题时模型可能给出过时甚至错误的回答。GPT Academic 的联网搜索功能通过搜索引擎检索 → 逐网页正文提取 → LLM 综合作答的三阶段流水线解决这一问题并以函数插件的形式集成在对话界面中。读完本文你将掌握联网搜索的完整使用流程搜索分类、搜索引擎选择、搜索优化三档配置、SEARXNG_URLS与JINA_API_KEY两项关键配置方法以及 Internet_GPT.py 中检索词优化、并行抓取、Token 裁剪等底层实现机制。功能原理联网搜索的工作流程分为三个阶段对应源码 Internet_GPT.py 中连接网络回答问题生成器的三大步骤检索系统将你的问题发送到 SearXNG 搜索聚合服务获取相关网页列表抓取系统依次访问搜索结果中的网页提取其中的正文内容默认最多 5 个网页增强模式下 8 个综合AI 综合分析所有抓取到的网页内容抽取与问题最相关的信息进行回答。这种方式的优势在于AI 不仅能获取最新信息还能通过交叉验证多个来源来提高回答的可靠性。对于时效性强的问题如某某公司最新的财报数据、今天的热点新闻联网搜索能显著提升回答质量。从源码结构看依次访问在实现层面并非串行阻塞连接网络回答问题使用ThreadPoolExecutor(max_workers5)线程池并发提交scrape_text任务Internet_GPT.py每份网页加载完成即刷新一次界面对话区会以可折叠的detailsHTML 块实时展示每个搜索结果的标题、URL 和正文摘要截断到前 1000 字符。基础使用联网搜索作为一个函数插件提供注册于 crazy_functional.py 的插件表中按钮名为查互联网后回答归属对话分组查互联网后回答: { Group: 对话, Color: stop, AsButton: True, # 加入下拉菜单中 Function: HotReload(连接网络回答问题), Class: NetworkGPT_Wrap # 新一代插件需要注册Class },发起搜索在输入框中输入您想要查询的问题无需刻意添加搜索、查找等关键词直接用自然语言描述即可。例如Claude 3.5 Sonnet 的性能表现如何接下来在界面上方的函数插件区找到对话分类然后点击查互联网后回答按钮。系统会开始执行搜索流程对话区会实时显示搜索进度和访问的网页列表。搜索完成后AI 会基于收集到的网页内容给出综合回答。系统提示词明确要求模型从给定的若干条搜索结果中抽取信息对最相关的两个搜索结果进行总结然后回答问题Internet_GPT.py因此回答通常会聚焦于最相关的来源并给出依据。查看搜索详情在 AI 给出最终回答之前对话区会以可折叠的形式显示每个搜索结果的详情。点击展开可以查看原始网页内容的摘要、来源网站和原文链接。如果您对 AI 的总结不满意可以直接点击链接查看原文。从源码可见每个折叠块的标题格式为第 N 份搜索结果 [源自 X 搜索]网页标题其中 X 是该网页命中的搜索引擎如 bing、google 等正文区展示抓取文本的前 1000 字符Internet_GPT.py。高级选项点击查互联网后回答按钮时系统会弹出一个二级配置面板。该面板由 Internet_GPT_Wrap.py 中NetworkGPT_Wrap.define_arg_selection_menu方法定义包含以下五个字段字段类型默认值说明输入问题文本框空自动读取输入框内容搜索分类下拉菜单网页网页 / 学术论文选择搜索引擎下拉菜单googleMixed / bing / google / duckduckgo搜索优化下拉菜单关闭关闭 / 开启 / 开启(增强)Searxng服务地址文本框随机取自 SEARXNG_URLS可单独指定本次使用的 SearXNG 实例搜索分类搜索分类决定了使用哪类搜索引擎索引选项说明适用场景网页使用通用网页搜索新闻、博客、技术文章、产品信息学术论文使用学术搜索引擎论文、研究报告、学术资源如果您的问题涉及学术研究选择学术论文分类可以获得更专业的搜索结果。从源码看该分类在NetworkGPT_Wrap.execute中会被翻译为 SearXNG 的内部类别值Internet_GPT_Wrap.py网页 → general、学术论文 → science。而searxng_request对两类请求的构造方式略有不同Internet_GPT.pygeneral类别携带engines参数即你选择的搜索引擎会生效science类别则固定附带categoriesscience直接走 SearXNG 的学术索引通道。两类请求都固定formatjson、languagezh因此搜索结果以结构化 JSON 返回字段包括标题、摘要、链接和命中的引擎。搜索引擎你可以指定使用的搜索引擎Internet_GPT_Wrap.py 中选项为Mixed、bing、google、duckduckgo默认googleMixed混合使用多个搜索引擎结果更全面google谷歌搜索覆盖面广需要网络条件支持bing微软必应搜索duckduckgo隐私保护搜索引擎不同搜索引擎的结果可能有所差异如果某个引擎的结果不理想可以尝试切换到其他引擎。实现上的细节是当选项为Mixed时searxng_request会将engines置为None由 SearXNG 自行调度其配置的全部引擎Internet_GPT.py选择具体引擎时该引擎名会作为engines查询参数发送给 SearXNG。搜索优化搜索优化功能可以提升搜索质量但会消耗更多的 Token选项说明关闭直接使用原始问题进行搜索开启AI 会先优化搜索关键词生成多个搜索查询开启(增强)更深度的优化会结合对话历史生成搜索策略并访问更多网页对于简单直接的问题关闭即可满足需求。对于复杂或模糊的问题开启优化可以获得更精准的搜索结果。!!! tip Token 消耗 搜索优化功能会额外调用 AI 来分析和改写您的问题这会产生额外的 Token 消耗。如果您对成本敏感建议在简单问题上保持关闭状态。三档优化在源码中对应不同的处理路径详见后文搜索优化器实现一节开启生成 3 组检索词开启(增强)生成 4 组检索词并携带最近 8 轮对话历史history[:-8]保留更靠前的历史供优化器参考实际参与优化的是其之前的历史轮次且增强模式将网页抓取上限从 5 提升到 8。配置搜索服务联网搜索功能依赖 SearXNG 搜索聚合服务。GPT Academic 默认配置了公共的 SearXNG 实例托管于 HuggingFace 空间的实例但在高峰期可能会遇到访问限制。如果您需要更稳定的搜索服务可以自行部署 SearXNG 实例或配置其他地址。配置 SearXNG 地址在 config.py 或config_private.py中找到SEARXNG_URLS配置项# Searxng互联网检索服务这是一个huggingface空间请前往huggingface复制该空间然后把自己新的空间地址填在这里 SEARXNG_URLS [ fhttps://kaletianlre-beardvs{i}dd.hf.space/ for i in range(1,5) ]你可以将其替换为自行部署的实例地址也支持配置多个地址SEARXNG_URLS [ https://your-searxng-instance.example.com/, # 可以配置多个地址实现负载均衡 ]系统会随机从列表中选择一个地址发起搜索请求searxng_request中url random.choice(urls)Internet_GPT.py。配置多个地址可以提高可用性。此外插件二级面板中的 Searxng服务地址 字段允许你在单次调用中覆盖这一默认选择面板打开时会自动预填随机选出的实例地址。配置 Jina API可选Jina Reader API 可以提供更高质量的网页内容提取特别是对于结构复杂的网页。如果你有 Jina API Key可以在 config.py 中添加# 在互联网搜索组件中负责将搜索结果整理成干净的Markdown JINA_API_KEY 配置后系统会优先使用 Jina 服务提取网页内容提取失败时自动回退到默认方法。具体逻辑在scrape_text中Internet_GPT.py# 首先采用Jina进行文本提取 if get_conf(JINA_API_KEY): try: return jina_scrape_text(url) except: logger.debug(Jina API 请求失败回到旧方法)源码级实现解析SearXNG 请求与错误处理searxng_requestInternet_GPT.py向 SearXNG 实例发起 POST 请求请求头中附带了X-Forwarded-For/X-Real-IP字段——IP 值由get_auth_ip()通过check_proxy探测获得带lru_cache缓存探测失败时退化为随机生成的114.114.114.x地址用于模拟来自不同客户端的请求、缓解共享实例上的限流。对 HTTP 状态码的处理与文档中的常见问题一一对应429抛出Searxng在线搜索服务当前使用人数太多请稍后。—— 即界面中提示使用人数太多的来源其他非 200抛出包含状态码与响应体的错误信息若某轮所有搜索查询全部失败search_optimizer会汇总异常并抛出在线搜索失败。测试用例 tests/test_searxng.py 演示了如何用本地 SearXNG 实例http://localhost:50001/验证该请求流程包括general/science两类参数的构造方式便于自行部署后做连通性自检。搜索优化器实现search_optimizerInternet_GPT.py负责生成多组检索词 → 逐组请求 → 结果合并去重其容错设计值得注意两级降级重试先用temperature0.8调用 LLM 生成检索词 JSON若 JSON 解析失败则以temperature0.4重试一次再次失败则放弃优化直接回退为[原始问题]单组检索——即优化器永远不会导致整个搜索流程崩溃分类相关的提示词general使用SearchOptimizerPromptscience使用SearchAcademicOptimizerPromptprompts/internet.py。学术版提示词额外引导模型生成中英双语检索词如 Deep Learning Model Convergence Issue Solution Paper提升学术库召回交错合并去重多组检索结果通过zip_longest交错取每组的前两名并集再用seen_links集合按 URL 去重保证来源的多样性。网页正文抓取策略scrape_textInternet_GPT.py的默认路径requests.get超时 8 秒→ 编码为 ISO-8859-1 时自动改用apparent_encoding探测 →BeautifulSoup移除script/style标签 → 按换行与双空格切分、清理空行后返回纯文本。任何请求异常都会返回无法连接到该网页这一友好提示而不会中断线程池中的其他抓取任务。配置 Jina 后则改走jina_scrape_textInternet_GPT.py通过https://r.jina.ai/前缀代理请求获得 Markdown 化的正文。综合回答与 Token 裁剪进入第 3 步综合之前系统会用input_clipping对问题 全部网页正文的 history 做 Token 裁剪防止超出模型上下文窗口Internet_GPT.pyi_say, history input_clipping( inputsi_say, historyhistory, max_token_limitmin(model_info[llm_kwargs[llm_model]][max_token]*3//4, 8192) )即上限取当前模型最大上下文长度的 3/4与 8192 两者中的较小值裁剪策略是从最长的条目开始削减。开启(增强)模式还会多走一步两阶段综合Internet_GPT.py第一步先让模型从搜索结果中抽取与问题相关的信息并对最相关的三个搜索结果做总结该总结会写入对话历史第二步再基于总结回答原始问题。这样后续轮次的常规对话也能读取到这份有效的检索摘要形成可延续的上下文。使用技巧明确时间范围如果您需要特定时间段的信息在问题中明确说明。例如2024年发布的 Python 3.12 有哪些新特性比Python 最新版本有什么特性能获得更精准的结果。避免过于宽泛的问题搜索引擎对具体问题的响应更好。机器学习这样的宽泛主题会返回太多无关结果而BERT 模型的预训练方法则能获得更有针对性的信息。结合对话上下文开启搜索优化(增强)后系统会参考之前的对话内容来优化搜索。从源码看SearchOptimizerPrompt内嵌了多组原问题很简短如怎么下载但结合历史能还原出精确检索词的示例prompts/internet.py这正是增强模式能处理指代性提问的机制。如果您正在讨论某个特定话题后续的搜索问题可以更简洁系统会自动补充上下文。常见问题Q: 搜索结果提示使用人数太多这是因为公共 SearXNG 实例达到了请求限制对应 SearXNG 返回 429 状态码见 Internet_GPT.py。您可以等待几分钟后重试切换到不同的搜索引擎选项自行部署 SearXNG 实例并配置到SEARXNG_URLSQ: 某些网页无法提取内容部分网站会阻止自动化访问或者需要登录才能查看内容。这类网页会显示无法连接到该网页的提示scrape_text请求异常时的固定返回值。AI 会基于其他成功获取的网页来回答问题。Q: 搜索结果与问题不相关尝试开启搜索优化功能让 AI 帮助改写搜索关键词。您也可以在问题中加入更多具体的关键词或背景信息帮助搜索引擎理解您的真实需求。相关文档基础操作 — 了解 GPT Academic 的基础使用方式配置详解 — 查看所有配置选项多模型询问 — 同时询问多个 AI 模型虚空终端 — 用自然语言调用各种插件【免费下载链接】gpt_academic为GPT/GLM等LLM大语言模型提供实用化交互接口特别优化论文阅读/润色/写作体验模块化设计支持自定义快捷按钮函数插件支持Python和C等项目剖析自译解功能PDF/LaTex论文翻译总结功能支持并行问询多种LLM模型支持chatglm3等本地模型。接入通义千问, deepseekcoder, 讯飞星火, 文心一言, llama2, rwkv, claude2, moss等。项目地址: https://gitcode.com/GitHub_Trending/gp/gpt_academic创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考