SpringBoot 整合LangChain4j 集成 Tavily 实现联网搜索,如何获取Tavily API_KEY(一篇文章解决AI联网搜索全部问题)

SpringBoot 整合LangChain4j 集成 Tavily 实现联网搜索,如何获取Tavily API_KEY(一篇文章解决AI联网搜索全部问题)

关于LangChain4j+LangGraph4j的完整项目已经基本完成,教程中所有代码均有使用,可以前往KuiCoding ,了解更多LangChain4j相关应用。希望您不吝惜您的starred给新人一点创作鼓励。

要实现联网搜索功能,获取API Key是必不可少的关键步骤。

建议按以下步骤获取Tavily API密钥:

  1. 访问Tavily官网注册账号
  2. 进入API Playground填写申请信息
  3. 返回Overview页面即可查看生成的API密钥我们可以先去Tavily官网 获取一个API密钥,注册一个自己的账号,然后点击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:truelog-requests:truestrict-tools:truestreaming-chat-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 api-key: ${QWEN_API_KEY}model-name: qwen-plus log-responses:truelog-requests:truestrict-tools:trueembedding-model:base-url: https://dashscope.aliyuncs.com/compatible-mode/v1 api-key: ${EMBEDDING_API_KEY}model-name: text-embedding-v4 log-requests:truelog-responses:truemax-segments-per-batch:10web-search-engine:tavily:api-key: ${TAVILY_API_KEY}# 从环境变量读取API Keymax-results:3# 最多返回3条搜索结果

随后我们可以新建一个WebSearchConfig,配置联网搜索需要的bean类,在LangChain4j当中给我们提供了WebSearchEngine来处理联网搜索的需求。

注意引入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支持的检索图途径主要有以下几种:

检索途径

新建WebSearchConfig后,可以使用@value注解将我们的配置注入。

@Value("${langchain4j.web-search-engine.tavily.api-key}")privateString tavilyApiKey;@Value("${langchain4j.web-search-engine.tavily.max-results:3}")privateInteger maxResults;

随后完成WebSearchEngine类,创建集中管理 Tavily 搜索引擎配置,统一 API 密钥等参数;

@BeanpublicWebSearchEnginewebSearchEngine(){returnTavilyWebSearchEngine.builder().apiKey(tavilyApiKey).build();}

接着就是完成ContentRetriever内容检索器接口,核心作用是:从数据源(如网络、向量库)中,根据查询语义精准召回相关内容片段,为大模型提供上下文支持(适配 RAG 场景)。也可以专门通过 WebSearchEngine(如 Tavily)从网络检索相关内容,返回给大模型辅助回答。

@BeanpublicContentRetrieverwebContentRetriever(WebSearchEngine webSearchEngine){returnWebSearchContentRetriever.builder().webSearchEngine(webSearchEngine).maxResults(maxResults).build();}

完整代码:

packagecom.example.kui.config;importdev.langchain4j.rag.content.retriever.ContentRetriever;importdev.langchain4j.rag.content.retriever.WebSearchContentRetriever;importdev.langchain4j.web.search.WebSearchEngine;importdev.langchain4j.web.search.tavily.TavilyWebSearchEngine;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation.Configuration;@ConfigurationpublicclassWebSearchConfig{@Value("${langchain4j.web-search-engine.tavily.api-key}")privateString tavilyApiKey;@Value("${langchain4j.web-search-engine.tavily.max-results:3}")privateInteger maxResults;@BeanpublicWebSearchEnginewebSearchEngine(){returnTavilyWebSearchEngine.builder().apiKey(tavilyApiKey).build();}@BeanpublicContentRetrieverwebContentRetriever(WebSearchEngine webSearchEngine){returnWebSearchContentRetriever.builder().webSearchEngine(webSearchEngine).maxResults(maxResults).build();}}

我们可以创建一个专门用于网络检索的Agent接口,命名为WebSearchAgent

借助@AiService注解配置好我们的联网搜索的ContentRetriever,名称应该与类名相同。

@AiService(wiringMode = EXPLICIT,/* 模型,会话记忆等其他配置 */ contentRetriever ="webContentRetriever")

关于@AiService的相关使用也可以看LangChain4j 集成向量存储(PosterSQL + PGVector 、RedisEmbeddingStore)完成RAG检索如何使用 LangChain4j 搭建自己的Agent(超详细教学) 两篇文章。

在接口中实现方法

@SystemMessage("根据检索结果回答")Stringchat(@UserMessageString message);

完整代码:

@AiService(wiringMode = EXPLICIT, chatModel ="openAiChatModel", streamingChatModel ="openAiStreamingChatModel", chatMemory ="chatMemory", chatMemoryProvider ="chatMemoryProvider", contentRetriever ="webContentRetriever")publicinterfaceWebSearchAgent{@SystemMessage("根据检索结果回答")Stringchat(@UserMessageString message);}

此时我们只需要调用WebSearchAgent chat方法就能得到网络搜索结果了。

@PostMapping("/search")publicStringwebSearch(@RequestBodyString userMessage){return webSearchAgent.chat(userMessage);}
测试结果
日志

Read more

Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南

Trae-cn一句话安装OpenClaw:AI智能体框架快速部署指南 背景 在AI大爆发的2026年,两款工具正在改变开发者的工作方式:Trae-cn作为字节跳动推出的AI原生IDE,让编程变得前所未有的简单;OpenClaw(昵称"小龙虾")作为开源AI智能体框架,让AI从"能聊天"进化到"能干活"。 本文将详细介绍Trae-cn的安装与优势,并演示如何用它一句话完成OpenClaw的安装部署。 一、Trae-cn:AI原生编程利器 1.1 什么是Trae-cn Trae-cn是字节跳动推出的AI原生集成开发环境(IDE),完全免费,支持Windows和macOS双平台。与传统的"IDE + AI插件"模式不同,Trae-cn从底层架构就将AI能力深度融入开发工作流,实现了真正的AI原生体验。 1.2 Trae-cn的核心优势 内置顶级AI模型 Trae-cn内置了多款顶级AI模型,无需额外配置: 模型特点适用场景Claude-3.5推理能力强,代码质量高复杂逻辑开发、

一文带大家理解各种AI大模型收费指标tokens到底是什么东东

一文带大家理解各种AI大模型收费指标tokens到底是什么东东

Token收费举例 大家在使用各个模型的过程中,一定会关注到,各个模型都是按照使用的tokens进行收费的,例如: 1. 推理输入:0.6 元 / 百万 tokens * 含义:你向大模型提问、上传文档、粘贴上下文等 “给模型看的内容”,每消耗 100 万个 tokens,收费 0.6 元。 * 通俗例子:你发了一段 1000 字的文章给模型,大约 ≈ 1300 tokens(按 1 字≈1.3 token 粗算)。费用 ≈ 0.6 元 / 1,000,000 × 1,300 ≈ 0.00078

小白也能玩 OpenClaw?ToDesk AI桌面助手ToClaw 把门槛打到了零

小白也能玩 OpenClaw?ToDesk AI桌面助手ToClaw 把门槛打到了零

一、开篇 最近"小龙虾"彻底火出圈了。打开抖音、刷刷小红书,满屏都是 OpenClaw 的教程、测评和安装实录。更夸张的是,有人专门上门帮人部署,甚至有公司门口排起了长队——就为了装一只"龙虾"。 这波热度不亚于当年 ChatGPT 刚出来的时候。但热闹背后,有一个问题没人说清楚:这么多人在排队,到底在排什么?排的是环境配置、是服务器、是 API Key、是一堆看不懂的命令行。原生 OpenClaw 能力确实强,但它本质上是一个开源框架,想真正跑起来,你得先过技术这关。对普通用户来说,光是部署这一步,就足够劝退了。 所以问题来了——龙虾这么香,普通人就真的没办法吃到吗? 还真不一定。ToDesk 悄悄做了一件事,把这只龙虾"

2026见证历史:腾讯、阿里、字节“百虾大战”爆发!哪只“AI小龙虾”才是你的命定打工人?

2026见证历史:腾讯、阿里、字节“百虾大战”爆发!哪只“AI小龙虾”才是你的命定打工人?

导语:从“聊天”到“执行”,AI的操作系统时刻来了      如果说2023年是Chatbot(聊天机器人)的元年,那么2026年就是Agent(智能体)的爆发年。开源框架OpenClaw(小龙虾)凭借“系统级执行能力”,让AI能直接操控你的文件、浏览器和办公软件。      目前,大厂已经集体卷入这场“龙虾竞赛”。面对眼花缭乱的QClaw、HiClaw、ArkClaw……普通人该怎么选? 一、 诸神黄昏:主流“小龙虾”产品图谱      经过全网调研,目前国内已形成三类核心演化路径,满足不同场景的“养虾”需求:      一. 腾讯系:WorkBuddy & QClaw —— 社交入口的“轻量化之王”      腾讯的策略很清晰:把执行力装进微信/QQ里。 * WorkBuddy:全场景桌面工作台,100%兼容OpenClaw生态,主打“