跳到主要内容

SearchApi

SearchApi 是一个实时搜索引擎结果页面 (SERP) API。您可以使用它在 Google、Google News、Bing、Bing News、百度、Google Scholar 或任何其他返回有机结果的搜索引擎中执行搜索。

使用方法

依赖设置

将以下依赖添加到您项目的 pom.xml 中:

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-web-search-engine-searchapi</artifactId>
<version>1.0.0-beta3</version>
</dependency>

或项目的 build.gradle 中:

implementation 'dev.langchain4j:langchain4j-web-search-engine-searchapi:1.0.0-beta3'

示例代码:

import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatLanguageModel;
import dev.langchain4j.model.openai.OpenAiChatModel;
import dev.langchain4j.model.openai.OpenAiChatModelName;
import dev.langchain4j.service.AiServices;
import dev.langchain4j.web.search.WebSearchTool;
import dev.langchain4j.web.search.searchapi.SearchApiEngine;
import dev.langchain4j.web.search.searchapi.SearchApiWebSearchEngine;

public class SearchApiTool {

interface Assistant {
@SystemMessage({
"您是一个网络搜索支持代理。",
"如果有任何尚未发生的事件,",
"您必须创建一个带有用户查询的网络搜索请求,并",
"使用网络搜索工具搜索网络上的有机网页结果。",
"在您的最终回复中包含来源链接。"
})
String answer(String userMessage);
}

private static final String SEARCHAPI_API_KEY = "YOUR_SEARCHAPI_KEY";
private static final String OPENAI_API_KEY = "YOUR_OPENAI_KEY";

public static void main(String[] args) {
Map<String, Object> optionalParameters = new HashMap<>();
optionalParameters.put("gl", "us");
optionalParameters.put("hl", "en");
optionalParameters.put("google_domain", "google.com");

SearchApiWebSearchEngine searchEngine = SearchApiWebSearchEngine.builder()
.apiKey(SEARCHAPI_API_KEY)
.engine("google")
.optionalParameters(optionalParameters)
.build();
ChatLanguageModel chatModel = OpenAiChatModel.builder()
.apiKey(OPENAI_API_KEY)
.modelName(OpenAiChatModelName.GPT_3_5_TURBO)
.logRequests(true)
.build();

WebSearchTool webTool = WebSearchTool.from(searchEngine);

Assistant assistant = AiServices.builder(Assistant.class)
.chatLanguageModel(chatModel)
.tools(webTool)
.build();

String answer = assistant.answer("我的家人下周要来马德里看我,列出适合全家人的最佳旅游活动");
System.out.println(answer);
/*
以下是马德里适合全家人的一些最佳旅游活动:

1. **丽池公园 (Parque del Retiro)** - 一个美丽的公共公园,家庭可以在那里享受自然和各种活动。
2. **普拉多博物馆 (Prado Museum)** - 一个著名的艺术博物馆,对成人和儿童都很有吸引力。
3. **圣米格尔市场 (Mercado de San Miguel)** - 一个可以探索和品尝美味西班牙美食的市场。
4. **皇宫 (Royal Palace)** - 探索马德里皇宫的宏伟。
5. **马约尔广场 (Plaza Mayor)** 和 **太阳门广场 (Puerta del Sol)** - 具有活力氛围的历史广场。
6. **伯纳乌球场 (Santiago Bernabeu Stadium)** - 非常适合体育爱好者和足球迷。
7. **格兰大道 (Gran Via)** - 一条著名的购物、娱乐和观光街道。
8. **国家考古博物馆 (National Archaeological Museum)** - 通过考古文物了解西班牙丰富的历史。
9. **德沃德神庙 (Templo de Debod)** - 马德里市中心的一座古埃及神庙。
*/
}
}

Langchain4j 中可用的搜索引擎

SearchApi 引擎可用性
Google 网页搜索
Google 新闻
Bing
Bing 新闻
百度

任何其他返回 organic_results 数组且有机结果具有 titlelinksnippet 的搜索引擎,即使未在上面列出,也受本库支持。