From 3ff275e1f882c37a7b78a6c2a56f21898ac1be37 Mon Sep 17 00:00:00 2001 From: Martin7-1 Date: Mon, 23 Dec 2024 01:57:02 +0800 Subject: [PATCH] license fix and Searxng temporarily fix --- .../pom.xml | 22 +++++++++++++ .../pom.xml | 23 +++++++++++++ .../searxng/SearXNGWebSearchEngine.java | 33 ++++++++++++++----- 3 files changed, 69 insertions(+), 9 deletions(-) diff --git a/spring-boot-starters/langchain4j-community-dashscope-spring-boot-starter/pom.xml b/spring-boot-starters/langchain4j-community-dashscope-spring-boot-starter/pom.xml index b0a19b2..da30377 100644 --- a/spring-boot-starters/langchain4j-community-dashscope-spring-boot-starter/pom.xml +++ b/spring-boot-starters/langchain4j-community-dashscope-spring-boot-starter/pom.xml @@ -72,4 +72,26 @@ + + + + org.honton.chas + license-maven-plugin + + + + + Eclipse Public License + http://www.eclipse.org/legal/epl-v10.html + + + GNU Lesser General Public License + http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + + + + + + diff --git a/spring-boot-starters/langchain4j-community-qianfan-spring-boot-starter/pom.xml b/spring-boot-starters/langchain4j-community-qianfan-spring-boot-starter/pom.xml index 91799d5..0ff9915 100644 --- a/spring-boot-starters/langchain4j-community-qianfan-spring-boot-starter/pom.xml +++ b/spring-boot-starters/langchain4j-community-qianfan-spring-boot-starter/pom.xml @@ -69,4 +69,27 @@ test + + + + + org.honton.chas + license-maven-plugin + + + + + Eclipse Public License + http://www.eclipse.org/legal/epl-v10.html + + + GNU Lesser General Public License + http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html + + + + + + + diff --git a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/main/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngine.java b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/main/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngine.java index 127ff86..402392d 100644 --- a/web-search-engines/langchain4j-community-web-search-engine-searxng/src/main/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngine.java +++ b/web-search-engines/langchain4j-community-web-search-engine-searxng/src/main/java/dev/langchain4j/community/web/search/searxng/SearXNGWebSearchEngine.java @@ -1,11 +1,14 @@ package dev.langchain4j.community.web.search.searxng; +import static dev.langchain4j.internal.Utils.copyIfNotNull; +import static dev.langchain4j.internal.Utils.getOrDefault; +import static dev.langchain4j.internal.ValidationUtils.ensureNotNull; + import dev.langchain4j.web.search.WebSearchEngine; import dev.langchain4j.web.search.WebSearchInformationResult; import dev.langchain4j.web.search.WebSearchOrganicResult; import dev.langchain4j.web.search.WebSearchRequest; import dev.langchain4j.web.search.WebSearchResults; - import java.net.URI; import java.time.Duration; import java.util.HashMap; @@ -13,10 +16,6 @@ import java.util.Map; import java.util.stream.Collectors; -import static dev.langchain4j.internal.Utils.copyIfNotNull; -import static dev.langchain4j.internal.Utils.getOrDefault; -import static dev.langchain4j.internal.ValidationUtils.ensureNotNull; - /** * Represents a SearXNG instance with its API enabled as a {@code WebSearchEngine}. */ @@ -26,7 +25,12 @@ public class SearXNGWebSearchEngine implements WebSearchEngine { private SearXNGWebSearchEngine(Builder builder) { ensureNotNull(builder.baseUrl, "baseUrl"); - this.client = new SearXNGClient(builder.baseUrl, getOrDefault(builder.duration, Duration.ofSeconds(10L)), builder.logRequests, builder.logResponses, builder.optionalParams); + this.client = new SearXNGClient( + builder.baseUrl, + getOrDefault(builder.duration, Duration.ofSeconds(10L)), + builder.logRequests, + builder.logResponses, + builder.optionalParams); } /** @@ -56,7 +60,13 @@ private static Map extractMetadata(SearXNGResult result) { } private static WebSearchOrganicResult toWebSearchOrganicResult(SearXNGResult result) { - return WebSearchOrganicResult.from(result.getTitle(), URI.create(result.getUrl()), result.getContent(), null, extractMetadata(result)); + // FIXME: temporarily fix URI illegal character, raise a issue to solve it. + String url = result.getUrl(); + int illegalChar = url.indexOf('#'); + url = illegalChar == -1 ? url : url.substring(0, illegalChar); + + return WebSearchOrganicResult.from( + result.getTitle(), URI.create(url), result.getContent(), null, extractMetadata(result)); } private static boolean hasValue(String value) { @@ -75,8 +85,13 @@ private static int maxResults(WebSearchRequest webSearchRequest) { public WebSearchResults search(WebSearchRequest webSearchRequest) { final SearXNGResponse results = client.search(webSearchRequest); - return WebSearchResults.from(WebSearchInformationResult.from(results.getNumberOfResults()), - results.getResults().stream().filter(r -> includeResult(r)).map(r -> toWebSearchOrganicResult(r)).limit(maxResults(webSearchRequest)).collect(Collectors.toList())); + return WebSearchResults.from( + WebSearchInformationResult.from(results.getNumberOfResults()), + results.getResults().stream() + .filter(SearXNGWebSearchEngine::includeResult) + .map(SearXNGWebSearchEngine::toWebSearchOrganicResult) + .limit(maxResults(webSearchRequest)) + .collect(Collectors.toList())); } /**