LangChain4j -- LangChain4j入门大全

📅 2026/6/27 6:49:30
LangChain4j -- LangChain4j入门大全
简介随着 ChatGPT、DeepSeek、Claude 等大语言模型LLM的快速发展企业应用正在从传统的软件逻辑转向LLM 数据 工具调用的智能应用模式。对于 Java 开发者来说直接调用大模型 API 通常需要处理HTTP 请求封装Prompt 管理上下文管理对话历史RAG 检索增强Function CallingAgent 编排这些能力如果全部自己实现成本较高。因此出现了类似 LangChain 的开发框架。什么是 LangChain4jLangChain4j 是 Java 生态中的 LLM 应用开发框架。它对应 Python 世界里的LangChain目标让 Java 开发者能够快速构建基于大模型的企业级应用。支持OpenAIAzure OpenAIDeepSeekClaudeOllama本地模型向量数据库RAGAgentMemoryTools整体架构用户请求 | v LangChain4j Application | ----------------------- | | ChatModel Embedding | | v v DeepSeek Vector DB GPT ES Claude Milvus Chroma2. LangChain4j 核心概念2.1 ChatModelChatModel 是最核心的接口。作用封装大模型聊天能力例如用户你好经过UserMessage ↓ ChatModel ↓ LLM ↓ AiMessage返回你好有什么可以帮助你的2.2 MessageLangChain4j 中消息分为SystemMessage系统角色例如你是一个数据治理专家UserMessage用户输入帮我分析这个SQLAiMessage模型回答该SQL存在索引问题代码UserMessage user UserMessage.from(你好);2.3 PromptPrompt 就是给模型的输入模板。例如普通解释一下Flink高级你是一名大数据专家。 请从架构、性能、应用场景分析Flink 问题 {question}企业应用基本都会做 Prompt Template。2.4 Memory上下文记忆大模型默认一次请求一次上下文。例如第一次我叫张三第二次我叫什么模型不知道。Memory保存历史消息User: 我叫张三 AI: 你好张三 User: 我叫什么 AI: 你叫张三2.5 EmbeddingEmbedding 是把文本转换成向量。例如文本Flink 是实时计算框架转换[ 0.231, 0.523, 0.892 ]用于相似度搜索RAG知识库问答LangChain4j 环境搭建Maven依赖dependency groupIddev.langchain4j/groupId artifactIdlangchain4j-open-ai/artifactId version0.35.0/version /dependency dependency groupIdcom.fasterxml.jackson.core/groupId artifactIdjackson-databind/artifactId version2.16.2/version /dependency注意LangChain4j 0.35 对 Jackson 版本有要求。如果使用旧版本jackson-databind 2.11可能出现PropertyNamingStrategies$SnakeCaseStrategy ClassNotFoundException开发一个简单的天气机器人package org.utils; import dev.langchain4j.data.message.ChatMessage; import dev.langchain4j.data.message.ChatMessageType; import dev.langchain4j.data.message.UserMessage; import dev.langchain4j.model.chat.request.ChatRequest; import dev.langchain4j.model.chat.response.ChatResponse; import dev.langchain4j.model.openai.OpenAiChatModel; import lombok.var; import static dev.langchain4j.data.message.ChatMessageType.USER; public class LongChainUtil { public static void main(String[] args) { OpenAiChatModel model OpenAiChatModel.builder() .baseUrl(http://xxx-ai.com/v1) .apiKey(xxxx) .modelName(deepseek-reasoner) .build(); ChatRequest request ChatRequest.builder() .messages( SystemMessage.from( 你是一个天气专家功能如下 1.回复具体的天气情况 2.根据天气给出穿衣建议 ), UserMessage.from(北京朝阳区今天天气)) .build(); var response model.chat(request); } }