SpringBoot 整合 LangChain4j 集成 Tavily 实现联网搜索
要实现联网搜索功能,获取 API Key 是必不可少的关键步骤。
获取 Tavily API 密钥
建议按以下步骤获取 Tavily API 密钥:
- 访问 Tavily 官网 注册账号
- 进入
API Playground填写申请信息 - 返回
Overview页面即可查看生成的 API 密钥

获得 API 密钥后,即可在项目中完成相应配置。可以通过 max-results 来控制最多搜索结果数量。
langchain4j:
open-ai:
chat-model:
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
api-key: ${QWEN_API_KEY}
model-name: qwen-plus
log-responses: true
log-requests: true
strict-tools: true
streaming-chat-model:
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
api-key: ${QWEN_API_KEY}
model-name: qwen-plus
log-responses: true
log-requests: true
strict-tools: true
embedding-model:
base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
api-key: ${EMBEDDING_API_KEY}
model-name: text-embedding-v4
log-requests: true
log-responses: true
max-segments-per-batch: 10
web-search-engine:
tavily:
api-key: ${TAVILY_API_KEY}
# 从环境变量读取 API Key
max-results: 3
引入依赖
注意引入 LangChain4j-tavily 依赖:
<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-web-search-engine-tavily</artifactId>
<version>1.0.0-beta3</version>
</dependency>
网络搜索引擎可以作为 RAG 管道中的 ContentRetriever 使用,也可以作为 @Tool 使用。LangChain4j 支持的检索图途径主要有以下几种:

配置 WebSearchEngine
新建 WebSearchConfig 后,可以使用 @Value 注解将配置注入。
@Bean
public WebSearchEngine webSearchEngine() {
return TavilyWebSearchEngine.builder()
.apiKey(tavilyApiKey)
.build();
}
随后完成 ContentRetriever 内容检索器接口,核心作用是从数据源中根据查询语义精准召回相关内容片段,为大模型提供上下文支持(适配 RAG 场景)。也可以专门通过 WebSearchEngine(如 Tavily)从网络检索相关内容,返回给大模型辅助回答。
@Bean
public ContentRetriever webContentRetriever(WebSearchEngine webSearchEngine) {
return WebSearchContentRetriever.builder()
.webSearchEngine(webSearchEngine)
.maxResults(maxResults)
.build();
}
完整配置类代码:
package com.example.kui.config;
import dev.langchain4j.rag.content.retriever.ContentRetriever;
import dev.langchain4j.rag.content.retriever.WebSearchContentRetriever;
import dev.langchain4j.web.search.WebSearchEngine;
import dev.langchain4j.web.search.tavily.TavilyWebSearchEngine;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class WebSearchConfig {
@Value("${langchain4j.web-search-engine.tavily.api-key}")
private String tavilyApiKey;
@Value("${langchain4j.web-search-engine.tavily.max-results:3}")
private Integer maxResults;
@Bean
public WebSearchEngine webSearchEngine() {
return TavilyWebSearchEngine.builder()
.apiKey(tavilyApiKey)
.build();
}
@Bean
public ContentRetriever webContentRetriever(WebSearchEngine webSearchEngine) {
return WebSearchContentRetriever.builder()
.webSearchEngine(webSearchEngine)
.maxResults(maxResults)
.build();
}
}
创建 Agent 接口
我们可以创建一个专门用于网络检索的 Agent 接口,命名为 WebSearchAgent。
借助 @AiService 注解配置好我们的联网搜索的 ContentRetriever,名称应该与类名相同。
@AiService(
wiringMode = EXPLICIT,
chatModel = "openAiChatModel",
streamingChatModel = "openAiStreamingChatModel",
chatMemory = "chatMemory",
chatMemoryProvider = "chatMemoryProvider",
contentRetriever = "webContentRetriever"
)
public interface WebSearchAgent {
@SystemMessage("根据检索结果回答")
String chat(@UserMessage String message);
}
此时我们只需要调用 WebSearchAgent 的 chat 方法就能得到网络搜索结果了。
@PostMapping("/search")
public String webSearch(@RequestBody String userMessage) {
return webSearchAgent.chat(userMessage);
}




