news 2026/6/10 12:58:57

Langchain4j-集成模式分析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Langchain4j-集成模式分析

集成模式分析

请关注公众号【碳硅化合物AI】

目录

  • 概述
  • LLM 提供商集成模式
  • 向量存储集成模式
  • 集成测试模式
  • HTTP 客户端集成
  • 配置和构建器模式
  • 异常处理和重试机制
  • 总结

概述

LangChain4j 支持 20+ LLM 提供商和 30+ 向量数据库。通过统一接口抽象实现无缝切换。集成新提供商主要工作:实现ChatModelEmbeddingStore接口,处理 HTTP 调用、错误处理、重试等细节。

LLM 集成模式

所有 LLM 集成遵循相同模式:实现ChatModel接口、使用构建器模式、处理 HTTP 请求/响应、转换数据格式、处理错误和重试。

以 OpenAI 为例:

publicclassOpenAiChatModelimplementsChatModel{privatefinalOpenAiClientclient;privatefinalIntegermaxRetries;@OverridepublicChatResponsedoChat(ChatRequestchatRequest){// 转换格式ChatCompletionRequestopenAiRequest=toOpenAiChatRequest(chatRequest);// 调用 API(带重试)ParsedAndRawResponse<ChatCompletionResponse>response=withRetryMappingExceptions(()->client.chatCompletion(openAiRequest),maxRetries);// 转换响应returnChatResponse.builder().aiMessage(aiMessageFrom(response.parsed())).tokenUsage(tokenUsageFrom(response.parsed())).finishReason(finishReasonFrom(response.parsed())).build();}}

关键点:OpenAiClient封装 HTTP 调用,toOpenAiChatRequest()做格式转换,withRetryMappingExceptions()处理重试,最后转换响应为ChatResponse

集成类关系图

集成方式

两种方式:有官方 SDK 直接用 SDK,没有则用langchain4j-http-client构建 HTTP 请求。实际项目中,OpenAI、Anthropic 等大厂都有官方 SDK,直接用更稳定;小厂或自建服务需要用 HTTP 客户端。

向量存储集成

向量存储集成模式类似,实现EmbeddingStore接口。核心方法:add()添加嵌入向量和原始内容,findRelevant()根据查询向量找最相似的。实现类包括PineconeEmbeddingStoreMilvusEmbeddingStoreInMemoryEmbeddingStore等。

集成流程

集成测试

所有集成必须通过统一测试套件,确保行为一致。ChatModel实现继承AbstractChatModelIT,只需实现models()返回测试实例,基础测试(消息处理、工具调用、流式响应、图片输入、结构化输出、错误处理等)自动运行。这确保了所有集成行为一致。

HTTP 客户端和配置

langchain4j-http-client提供 HTTP 客户端抽象,默认使用 Java 11+ 的java.net.http.HttpClient,也可自定义(OkHttp、Apache HttpClient 等)。

所有集成使用构建器模式:可选参数、链式调用、不可变对象、build()时验证。参数分三层:构建器参数(默认值)、RequestParameters(请求级)、ChatRequest.parameters()(调用级,优先级最高)。

异常处理和重试

不同提供商错误格式不同,需要统一映射(401 认证失败、429 限流、5xx 服务器错误等)。RetryUtils.withRetryMappingExceptions()提供统一重试:捕获可重试异常(网络错误、5xx、429),指数退避,达到最大次数后抛出。可重试:网络错误、5xx、429;不可重试:4xx(除 429)、认证失败。

总结

集成模式设计清晰:统一接口无缝切换、标准化测试确保一致、灵活 HTTP 客户端、构建器模式配置清晰、完善的错误处理和重试。集成新提供商主要工作:实现接口、数据格式转换、HTTP 调用(或官方 SDK)、写集成测试。通过统一抽象,使用体验完全一致。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 19:44:57

【Docker恢复神技曝光】:那些官方文档不会告诉你的底层修复方法

第一章&#xff1a;Docker故障恢复的核心挑战在现代容器化部署中&#xff0c;Docker已成为应用交付的基石。然而&#xff0c;当容器或宿主环境发生故障时&#xff0c;快速、准确地恢复服务面临诸多技术挑战。系统状态的瞬时性、数据持久化的复杂性以及网络拓扑的动态变化&#…

作者头像 李华
网站建设 2026/6/10 16:12:19

ZooKeeper选举机制:VibeThinker模拟Leader选举流程

ZooKeeper选举机制&#xff1a;VibeThinker模拟Leader选举流程 在分布式系统的世界里&#xff0c;如何让一群“平等”的节点迅速达成一致&#xff0c;选出一个公认的领导者&#xff1f;这不仅是技术实现的难点&#xff0c;更是理解一致性协议的核心入口。ZooKeeper 的 Leader 选…

作者头像 李华
网站建设 2026/6/10 16:14:23

Blender Python API:VibeThinker编写自动建模脚本

Blender Python API 与 VibeThinker&#xff1a;用小模型驱动智能建模革命 在3D内容创作的世界里&#xff0c;每一次点击、每一次拖拽都可能是灵感的体现&#xff0c;但也可能只是重复劳动的开始。设计师们常常面临这样的困境&#xff1a;明明只需要一个简单的圆柱加锥体组合&…

作者头像 李华
网站建设 2026/6/10 19:13:59

实战演示:输入一道欧几里得几何题,看VibeThinker如何作答

实战演示&#xff1a;输入一道欧几里得几何题&#xff0c;看VibeThinker如何作答 在一张草稿纸上&#xff0c;画着一个直角三角形ABC&#xff0c;其中∠BAC是90度&#xff0c;AB6&#xff0c;AC8。从点A向斜边BC作垂线AD&#xff0c;问题是&#xff1a;求AD的长度&#xff1f;…

作者头像 李华
网站建设 2026/6/10 15:36:08

[精品]基于微信小程序的空巢老人健康管理系统 UniApp

关注博主迷路&#xff0c;收藏文章方便后续找到&#xff0c;以防迷路&#xff0c;最下面有联系博主 项目介绍 随着社会老龄化程度不断加深&#xff0c;空巢老人的健康管理成为一个日益重要的问题。为了更好地关注和管理空巢老人的健康状况&#xff0c;本文利用Spring Boot框架…

作者头像 李华