langchain4j [BUG] 当GoogleCustomWebSearchEngine搜索结果为空时,出现空指针异常(NPE)

rur96b6h  于 4个月前  发布在  Go
关注(0)|答案(1)|浏览(44)

描述bug

我在应用中添加了GoogleCustomWebSearchEngine作为ContentRetriever(没有路由器)。每当用户输入发送到搜索引擎且搜索结果为空时,都会抛出空指针异常(NPE)。如果搜索引擎至少返回一个结果,就不会发生这种情况。

日志和堆栈跟踪

Cannot invoke "java.util.List.stream()" because the return value of "com.google.api.services.customsearch.v1.model.Search.getItems()" is null

// GoogleCustomWebSearchEngine.java
return WebSearchResults.from(
                searchMetadata,
                WebSearchInformationResult.from(
                        Long.valueOf(getOrDefault(search.getSearchInformation().getTotalResults(), "0")),
                        !isNullOrEmpty(search.getQueries().getRequest())
                                ? calculatePageNumberFromQueries(search.getQueries().getRequest().get(0)) : 1,
                        searchInformationMetadata.isEmpty() ? null : searchInformationMetadata),
                // Error happens here, getItems is null
                search.getItems().stream()
                        .map(result -> WebSearchOrganicResult.from(
                                result.getTitle(),
                                URI.create(result.getLink()),
                                result.getSnippet(),
                                null, 
                                toResultMetadataMap(result, searchTypeImage)
                        )).collect(toList()));

重现方法

设置一个可以搜索整个网络的Google搜索引擎API密钥,并将其配置为助手的ContentRetriever。使用不会生成任何搜索结果的输入与助手进行交互,例如“abasduashduahduasd”。它将抛出错误。

预期行为

来自Google搜索API的空搜索结果不应触发任何错误。它只应在RAG期间不向LLM添加任何额外上下文。

请完成以下信息:

  • LangChain4j版本:0.32.0
  • 使用的LLM:OpenAI gpt-4o
  • Java版本:17
  • Spring Boot版本(如适用):3.3.0
5jvtdoz2

5jvtdoz21#

感谢gpr-indevelopment的报告!
@czelabueno,你能看一下吗?

相关问题