[原创]openwebui解决searxng通过接口请求不成功问题
openwebui 对接 searxng 时 无法查询到联网信息,使用bing搜索,每次返回json是正常的

神秘代码:
http://172.30.254.200:8080/search?q=北京市天气&format=json&language=zh&time_range=&safesearch=0&language=zh&locale=zh-Hans-CN&autocomplete=&favicon_resolver=&image_proxy=0&method=POST&safesearch=0&theme=simple&results_on_new_tab=0&doi_resolver=oadoi.org&simple_style=auto¢er_alignment=0&advanced_search=0&query_in_title=0&infinite_scroll=0&search_on_category_select=1&hotkeys=default&url_formatting=pretty&disabled_plugins=&enabled_plugins=&tokens=&categories=general&disabled_engines="wikipedia__general\054currency__general\054wikidata__general\054duckduckgo__general\054google__general\054lingva__general\054qwant__general\054startpage__general\054dictzone__general\054mymemory translated__general\054brave__general"&enabled_engines=bing__general
官方教程是这样设置的 非常不稳定,经常搜索不到结果



searxng.py 源码 调整前
import logging
from typing import Optionalimport requests
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
from open_webui.env import SRC_LOG_LEVELSlog = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])def search_searxng(query_url: str,query: str,count: int,filter_list: Optional[list[str]] = None,**kwargs,
) -> list[SearchResult]:"""Search a SearXNG instance for a given query and return the results as a list of SearchResult objects.The function allows passing additional parameters such as language or time_range to tailor the search result.Args:query_url (str): The base URL of the SearXNG server.query (str): The search term or question to find in the SearXNG database.count (int): The maximum number of results to retrieve from the search.Keyword Args:language (str): Language filter for the search results; e.g., "en-US". Defaults to an empty string.safesearch (int): Safe search filter for safer web results; 0 = off, 1 = moderate, 2 = strict. Defaults to 1 (moderate).time_range (str): Time range for filtering results by date; e.g., "2023-04-05..today" or "all-time". Defaults to ''.categories: (Optional[list[str]]): Specific categories within which the search should be performed, defaulting to an empty string if not provided.Returns:list[SearchResult]: A list of SearchResults sorted by relevance score in descending order.Raise:requests.exceptions.RequestException: If a request error occurs during the search process."""# Default values for optional parameters are provided as empty strings or None when not specified.language = kwargs.get("language", "en-US")safesearch = kwargs.get("safesearch", "1")time_range = kwargs.get("time_range", "")categories = "".join(kwargs.get("categories", []))params = {"q": query,"format": "json","pageno": 1,"safesearch": safesearch,"language": language,"time_range": time_range,"categories": categories,"theme": "simple","image_proxy": 0,}# Legacy query formatif "<query>" in query_url:# Strip all query parameters from the URLquery_url = query_url.split("?")[0]log.debug(f"searching {query_url}")response = requests.get(query_url,headers={"User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot","Accept": "text/html","Accept-Encoding": "gzip, deflate","Accept-Language": "en-US,en;q=0.5","Connection": "keep-alive",},params=params,)response.raise_for_status() # Raise an exception for HTTP errors.json_response = response.json()results = json_response.get("results", [])sorted_results = sorted(results, key=lambda x: x.get("score", 0), reverse=True)if filter_list:sorted_results = get_filtered_results(sorted_results, filter_list)return [SearchResult(link=result["url"], title=result.get("title"), snippet=result.get("content"))for result in sorted_results[:count]]
调整后
import logging
from typing import Optionalimport requests
from open_webui.retrieval.web.main import SearchResult, get_filtered_results
from open_webui.env import SRC_LOG_LEVELSlog = logging.getLogger(__name__)
log.setLevel(SRC_LOG_LEVELS["RAG"])def search_searxng(query_url: str,query: str,count: int,filter_list: Optional[list[str]] = None,**kwargs,
) -> list[SearchResult]:"""Search a SearXNG instance for a given query and return the results as a list of SearchResult objects.The function allows passing additional parameters such as language or time_range to tailor the search result.Args:query_url (str): The base URL of the SearXNG server.query (str): The search term or question to find in the SearXNG database.count (int): The maximum number of results to retrieve from the search.Keyword Args:language (str): Language filter for the search results; e.g., "en-US". Defaults to an empty string.safesearch (int): Safe search filter for safer web results; 0 = off, 1 = moderate, 2 = strict. Defaults to 1 (moderate).time_range (str): Time range for filtering results by date; e.g., "2023-04-05..today" or "all-time". Defaults to ''.categories: (Optional[list[str]]): Specific categories within which the search should be performed, defaulting to an empty string if not provided.Returns:list[SearchResult]: A list of SearchResults sorted by relevance score in descending order.Raise:requests.exceptions.RequestException: If a request error occurs during the search process."""# Default values for optional parameters are provided as empty strings or None when not specified.language = kwargs.get("language", "zh")safesearch = kwargs.get("safesearch", "1")time_range = kwargs.get("time_range", "")categories = "".join(kwargs.get("categories", []))params = {"q": query,"format": "json","pageno": 1,"safesearch": safesearch,"language": language,"time_range": time_range,"categories": categories,"theme": "simple","image_proxy": 0,"locale":"zh-Hans-CN", "disabled_engines":"wikipedia__general\054currency__general\054wikidata__general\054duckduckgo__general\054google__general\054lingva__general\054qwant__general\054startpage__general\054dictzone__general\054mymemory translated__general\054brave__general","enabled_engines":"bing__general"}# Legacy query formatif "<query>" in query_url:# Strip all query parameters from the URLquery_url = query_url.split("?")[0]log.debug(f"searching {query_url}")response = requests.get(query_url,headers={"User-Agent": "Open WebUI (https://github.com/open-webui/open-webui) RAG Bot","Accept": "text/html","Accept-Encoding": "gzip, deflate","Accept-Language": "en-US,en;q=0.5","Connection": "keep-alive",},params=params,)response.raise_for_status() # Raise an exception for HTTP errors.json_response = response.json()results = json_response.get("results", [])sorted_results = sorted(results, key=lambda x: x.get("score", 0), reverse=True)if filter_list:sorted_results = get_filtered_results(sorted_results, filter_list)return [SearchResult(link=result["url"], title=result.get("title"), snippet=result.get("content"))for result in sorted_results[:count]]
改完 看到请求参数

总结 openwebui 对接SearXNG 有bug 我修不来 ,提出的关键词就会被修改掉为什么呢?
接着搞,把搜索关键字写死


出结果了
实际搜索到网页是正确的,结果就 是不行,是模型问题还是openwebui问题?
搞不来了,放弃
相关文章:
[原创]openwebui解决searxng通过接口请求不成功问题
openwebui 对接 searxng 时 无法查询到联网信息,使用bing搜索,每次返回json是正常的 神秘代码: http://172.30.254.200:8080/search?q北京市天气&formatjson&languagezh&time_range&safesearch0&languagezh&locale…...
Jmeter聚合报告导出log文档,Jmeter聚合报告导出到CSV
Jmeter聚合报告导出log文档 在Filename中输入 EKS_perf_log\\${type}_log\\${__P(UNIQUEID,${__time(YMDHMS)})}\all-graph-results-log.csv 可以得到执行的log,文件夹包含时间戳 Jmeter聚合报告导出到CSV 点击Save Table Data,保存到CSV文件中...
mysqldump 参数详解
mysqldump 是一个用于备份 MySQL 数据库的工具。它可以生成一组 SQL 语句,这些语句可以用来重现原始数据库对象定义和表数据。以下是一些常用的 mysqldump 参数及其详细解释: 常用参数 基本参数 --host=host_name, -h host_name: 指定 MySQL 数据库主机地址,默认为 localh…...
DeepSeek R1 简易指南:架构、本地部署和硬件要求
DeepSeek 团队近期发布的DeepSeek-R1技术论文展示了其在增强大语言模型推理能力方面的创新实践。该研究突破性地采用强化学习(Reinforcement Learning)作为核心训练范式,在不依赖大规模监督微调的前提下显著提升了模型的复杂问题求解能力。 …...
基于 MySQL 数据库对三级视图(用户视图、DBA视图、内部视图)的详细解释
基于 MySQL 数据库对三级视图(用户视图、DBA视图、内部视图)的详细解释,结合理论与实际操作说明: 一、三级视图核心概念 数据库的三级视图是 ANSI/SPARC 体系结构的核心思想,MySQL 的实现逻辑如下: …...
[Web 信息收集] Web 信息收集 — 手动收集 IP 信息
关注这个专栏的其他相关笔记:[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01:通过 DNS 服务获取域名对应 IP DNS 即域名系统,用于将域名与 IP 地址相互映射,方便用户访问互联网。对于域名到 IP 的转换过程则可以参考下面这篇…...
跨AWS账户共享SQS队列以实现消息传递
在现代分布式系统中,不同的服务和组件通常需要进行通信和协作。Amazon Simple Queue Service (SQS)提供了一种可靠、可扩展且完全托管的消息队列服务,可以帮助您构建分布式应用程序。本文将介绍如何在一个AWS账户(账户A)中创建SQS队列,并授权另一个AWS账户(账户B)中的用户和角色…...
DeepSeek 202502 开源周合集
DeepSeek 本周的开源项目体现了其在 AI 技术栈中的深厚积累,从硬件协同优化(FlashMLA)、通信库(DeepEP)、核心计算(DeepGEMM)到推理模型(DeepSeek-R1),覆盖了…...
springai系列(二)从0开始搭建和接入azure-openai实现智能问答
文章目录 前言1.从0开始搭建项目2.进入微软openai申请key3.配置application.yaml4.编写controller5.测试源码下载地址总结 前言 之前使用openai的官网的api需要科学上网,但是我们可以使用其他的代理间接实现使用chatgpt的相关模型,解决这个问题。比如:本…...
Apache部署Vue操作手册(SSL部分)
1. Apache配置(windows版本) 1.1 httpd.conf 配置 找到apache配置文件 httpd.conf,将下面两条文件的注释#去掉,如果没搜到就新增这两条配置。一个是开启ssl模块,一个是引用专门的ssl配置文件。 LoadModule ssl_modu…...
人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
一种模式是直觉模式,判断是基于条件反射,视觉感知 触发到 直接条件反射(从经历中沉淀形成的神经信息闭环),类似现在自动驾驶技术的传统AI模式。 另一种模式是物理时空图式推理模式,判断是基于预判预测&…...
Docker和K8S中pod、services、container的介绍和关系
在容器化技术中,Docker、Kubernetes(K8S)、Pod、Service 和 Container 是核心概念,理解它们的关系对构建和管理现代应用至关重要。以下是详细的分步解释: 1. 核心概念定义 (1) Container(容器)…...
【uniapp】在UniApp中实现持久化存储:安卓--生成写入数据为jsontxt
在移动应用开发中,数据存储是一个至关重要的环节。对于使用UniApp开发的Android应用来说,缓存(Cache)是一种常见的数据存储方式,它能够提高应用的性能和用户体验。然而,缓存数据在用户清除缓存或清除应用数…...
DeepSeek-R1本地部署保姆级教程
一、DeepSeek-R1本地部署配置要求 (一)轻量级模型 ▌DeepSeek-R1-1.5B 内存容量:≥8GB 显卡需求:支持CPU推理(无需独立GPU) 适用场景:本地环境验证测试/Ollama集成调试 (二&a…...
Python常见面试题的详解25
1. 什么是 MD5 加密,有什么特点 要点 定义:MD5 是一种广泛应用的哈希函数,它能够把任意长度的输入数据经过特定算法处理,转化为长度固定为 128 位的哈希值,通常以 32 位十六进制字符串的形式呈现,主要用于验…...
DeepSeek赋能大模型内容安全,网易易盾AIGC内容风控解决方案三大升级
在近两年由AI引发的生产力革命的背后,一场关乎数字世界秩序的攻防战正在上演:AI生成的深度伪造视频导致企业品牌声誉损失日均超千万,批量生成的侵权内容使版权纠纷量与日俱增,黑灰产利用AI技术持续发起欺诈攻击。 与此同时&#…...
阿里开源正式开园文生视频、图生视频模型-通义万相 WanX2.1
简介 发布时间与背景 通义万相 Wan2.1 模型于 2025年1月 发布,并迅速登顶视频生成领域权威评测 Vbench 的榜首,超越了包括 Sora、HunyuanVideo、Minimax 等国内外知名模型,并于这周开源。它是阿里云在 AI 视频生成领域的最新成果࿰…...
【Python爬虫(73)】用Python爬虫开启交通数据宝藏,畅行出行未来
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取,还涉及数据处理与分析。无论是新手小白还是进阶开发…...
和鲸科技携手四川气象,以 AI 的力量赋能四川气象一体化平台建设
气象领域与农业、能源、交通、环境科学等国计民生关键领域紧密相连,发挥着不可替代的重要作用。人工智能技术的迅猛发展,为气象领域突破困境带来了新的契机。AI 技术能够深度挖掘气象大数据中蕴含的复杂信息,助力人类更精准地把握自然规律&am…...
spring boot 2.7 + seata +微服务 降级失败问题修复
文章引流 一个简单而使用的API管理工具 版本号 spring boot 2.7.17 spring-cloud-dependencies 2021.0.8 spring-cloud-circuitbreaker-resilience4j 2.1.7 spring-cloud-starter-alibaba-seata 2021.1 jdk 1.8原因分析 未配置属性 feign.circuitbreaker.enabledtrue # 未…...
OpenLayers 可视化之热力图
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 热力图(Heatmap)又叫热点图,是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
STM32标准库-DMA直接存储器存取
文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...
12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
Ubuntu系统复制(U盘-电脑硬盘)
所需环境 电脑自带硬盘:1块 (1T) U盘1:Ubuntu系统引导盘(用于“U盘2”复制到“电脑自带硬盘”) U盘2:Ubuntu系统盘(1T,用于被复制) !!!建议“电脑…...
Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合
作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...
论文阅读:Matting by Generation
今天介绍一篇关于 matting 抠图的文章,抠图也算是计算机视觉里面非常经典的一个任务了。从早期的经典算法到如今的深度学习算法,已经有很多的工作和这个任务相关。这两年 diffusion 模型很火,大家又开始用 diffusion 模型做各种 CV 任务了&am…...
2025-05-08-deepseek本地化部署
title: 2025-05-08-deepseek 本地化部署 tags: 深度学习 程序开发 2025-05-08-deepseek 本地化部署 参考博客 本地部署 DeepSeek:小白也能轻松搞定! 如何给本地部署的 DeepSeek 投喂数据,让他更懂你 [实验目的]:理解系统架构与原…...
统计学(第8版)——统计抽样学习笔记(考试用)
一、统计抽样的核心内容与问题 研究内容 从总体中科学抽取样本的方法利用样本数据推断总体特征(均值、比率、总量)控制抽样误差与非抽样误差 解决的核心问题 在成本约束下,用少量样本准确推断总体特征量化估计结果的可靠性(置…...
