描述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
1条答案
按热度按时间5jvtdoz21#
感谢gpr-indevelopment的报告!
@czelabueno,你能看一下吗?