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

Stable Diffusion WebUI云部署

Stable Diffusion WebUI云部署

本地部署虽然方便,但对硬件要求高,尤其是显存。云服务器(特别是带有GPU的实例)可以让我们用较低成本体验强大的AI绘画能力,并且可以随时随地通过浏览器访问,非常方便。 一、 部署前的准备 1.1 选择合适的云服务器: * GPU型号: 优先选择NVIDIA显卡,如V100, T4, P4, 1080Ti, 2080Ti, 3090, 4090等。显存越大越好,至少8GB起步,推荐12GB以上。 * 操作系统: Linux发行版(如Ubuntu 20.04 LTS, Debian 11, CentOS 7/8等)是首选,社区支持好,文档丰富。 * 网络带宽: 部署初期需要下载大量模型和依赖,一个稳定的网络环境至关重要。 1.2 环境配置: * Python版本: 推荐使用Python 3.10.x(

By Ne0inhk

CANN生态数据管理:cann-dataset 夯实AIGC大模型全链路数据根基

在AIGC大模型的全链路开发与规模化落地中,数据是核心生产资料,更是决定模型精度、性能与落地价值的关键前提——大模型的训练、优化、调优、迭代,全程依赖海量、高质量、合规的标注数据与未标注数据,数据的质量、效率与合规性,直接影响模型研发周期、性能上限与产业落地可行性。当前AIGC大模型数据管理面临多重困境:数据采集杂乱无章、标注效率低下且精度不足、数据存储与调度繁琐、数据合规风险突出、多模态数据适配困难,而传统数据管理工具存在生态适配性差、功能单一、与大模型开发流程脱节、无法适配昇腾硬件架构等痛点,导致数据资源浪费严重、研发效率低下,甚至因数据不合规、质量不达标,制约大模型的产业化落地。依托华为昇腾CANN开源仓库(CANN组织链接:https://atomgit.com/cann)的全链路生态优势,cann-dataset(解读仓库链接:https://atomgit.com/cann/cann-dataset)作为生态专属的AIGC大模型全生命周期数据管理模块应运而生,以“全流程管控、高效率处理、高保真存储、合规化保障、

By Ne0inhk

Pycharm中Github Copilot插件安装与配置全攻略(2023最新版)

PyCharm中GitHub Copilot:从安装到实战的深度配置指南 如果你是一位Python开发者,最近可能已经被各种关于AI编程助手的讨论所包围。GitHub Copilot,这个由GitHub和OpenAI联手打造的“结对编程”伙伴,已经不再是科技新闻里的概念,而是实实在在地进入了我们的开发工作流。特别是在PyCharm这样的专业IDE中,Copilot的集成能带来怎样的化学反应?是效率的倍增,还是全新的编码体验?这篇文章,我将从一个深度使用者的角度,带你走完从零安装到高效实战的全过程,并分享一些官方文档里不会告诉你的配置技巧和实战心得。 1. 环境准备与账号激活:迈出第一步 在开始安装插件之前,我们需要确保两件事:一个可用的GitHub Copilot订阅,以及一个正确版本的PyCharm IDE。很多人第一步就卡在了这里。 首先,关于订阅。GitHub Copilot提供个人和商业两种订阅计划。对于个人开发者,尤其是学生和开源项目维护者,GitHub有相应的优惠甚至免费政策。你需要一个GitHub账号,并前往 GitHub Copilot 官方页面 进行注册和订

By Ne0inhk

VSCode + Copilot下:配置并使用 DeepSeek

以下是关于在 VSCode + Copilot 中,通过 OAI Compatible Provider for Copilot 插件配置并使用 DeepSeek 系列模型 (deepseek-chat, deepseek-reasoner, deepseek-coder) 的完整汇总指南。 🎯 核心目标 通过该插件,将支持 OpenAI API 格式的第三方大模型(此处为 DeepSeek)接入 VSCode 的官方 Copilot 聊天侧边栏,实现原生体验的调用。 📦 第一步:准备工作 在开始配置前,请确保已完成以下准备: 步骤操作说明1. 安装插件在 VSCode 扩展商店搜索并安装 OAI Compatible Provider for Copilot。这是连接 Copilot 与第三方模型的核心桥梁。2. 获取 API

By Ne0inhk